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