在學習了編譯原理的相關知識后,逐漸的掌握一個編譯器的結構、作用和實現方法。同時,希望自己在不斷的努力下寫出一個簡單的C語言編譯器。
實現步驟
- 詞法分析器:將C語言測試代碼分解成一個一個的詞法單元;
- 語法分析器:利用LR(1)文法分析算法對詞法單元進行歸約;
- 語義制導翻譯:即語義分析,集成在語法分析器中,在每次歸約后執行相應的語義動作,產生三地址碼;
- 代碼優化:對三地碼進行優化,提高效率;
- 匯編代碼生成:分配寄存器、由三地址碼轉化為匯編代碼,再由匯編器編譯成可執行代碼
由於時間關系和實現難度較大的原因,我只是做到編譯器的前端部分,即實現了1-3部,剩下了只好以后努力了。
主要功能
- 支持
一元運算符(++,--,!,-),其中++和--有前綴和后綴兩種功能 - 支持
邏輯運算符:||和&& - 支持
算術運算符:+,-,*,/,% - 支持
關系運算符:>,>=,<,<=,==,!= - 控制流:
for循環,while循環 - 支持
判斷語句if 賦值操作及一維數組的部分操作- 只有
bool和int類型,其中的int為無符號整數
