2012-11-23 59 views
1

作爲我大學項目的一部分,我們應該開發一個C編譯器。詞法和分析器部分已經結束 - 工具Flex & Bison使我們的艱鉅任務變得更加簡單。現在我們陷入困境的是,我們無法繼續進行該項目。究竟怎樣才能進行一次,我們手上有這三個文件:使用自行設計的C編譯器構建代碼

  • y.tab.h
  • y.tab.c的
  • 的lex.yy.c

我們還設法通過使用關於DOS提示符以下命令,以產生一個可執行

GCC lex.yy.c中y.tab.c的-o例1

和我得到了可執行的example.exe ... 現在如何繼續讓編譯器運行?如何讓它建立用戶C代碼?

+5

你的問題是編譯器內部的設計問題嗎?或者是如何將你的代碼與bison和flex的輸出結合起來的問題? – Shahbaz

回答

2

您應該檢查您的example.exe是否可以讀取C程序並報告任何語法錯誤。

如果不行,請修復您的.y和/或.l文件並重試。

如果可以,很好,你有一個工作解析器。現在把它變成一個工作編譯器。繼續向.y文件添加代碼(稱爲語義操作),實現越來越多的編譯器功能。首先,確保您可以報告語義錯誤,例如無效類型或缺少聲明。然後實現彙編代碼生成。

.y文件變得太大時,將一些代碼轉換爲函數並將它們移動到單獨的.c文件中。