?? readme.txt
字號(hào):
源碼名稱: 編譯器源代碼
開(kāi)發(fā)環(huán)境: VC6 && STL
簡(jiǎn)介:
這個(gè)編譯器的源代碼是我原先為了完成編譯原理實(shí)驗(yàn)課作業(yè)而寫(xiě)的,所以只具有教學(xué)價(jià)值,現(xiàn)在發(fā)出來(lái)和大家共享 ;-)
和網(wǎng)上流傳的版本不同,它從文法開(kāi)始,一直做到了符號(hào)表的實(shí)現(xiàn). 想實(shí)現(xiàn)自己的編譯器的話,只需在把Initializtion.h中的文法修改為自己的即可.
工程結(jié)構(gòu):
Initializtion.h 初始化文法,便于進(jìn)一步進(jìn)行分析,它為構(gòu)造GRAMMAR類提供了信息.其中默認(rèn)非終極符用<>括上,修改時(shí)需要注意.
Grammar.cpp Grammar.h 定義了文法GRAMMAR類,它通過(guò)initializtion.h的信息建立文法的內(nèi)部表示。
LL1_Analyser.cpp LL1_Analyser.h 定義了LL1分析器,即LL1_Analyser類.
LL1_Recognizer.cpp LL1_Recognizer.h 為L(zhǎng)L1語(yǔ)法分析驅(qū)動(dòng)器,可以通過(guò)文法,TOKEN序列和LL1分析表,判定語(yǔ)法是否正確,同時(shí)驅(qū)動(dòng)動(dòng)作.
Rec_Parse.cpp Rec_Pares.h 實(shí)現(xiàn)了遞歸下降分析器Rec_Parse類, 遞歸下降的思想和LL1驅(qū)動(dòng)器一樣,不過(guò)是把壓棧改成調(diào)用自己,而把彈棧改成返回.
Scanner.cpp Scanner.h 實(shí)現(xiàn)了詞法分析器,可以將程序變?yōu)門OKEN序列. 掃描的源程序文件路徑也在這里被定義(默認(rèn)為.//demo.txt)
Action.cpp Action.h 實(shí)現(xiàn)了語(yǔ)義棧的操作,_Action類定義了動(dòng)作符號(hào)所對(duì)應(yīng)的動(dòng)作.
SymTable.cpp SymTable.h 實(shí)現(xiàn)了符號(hào)表的建立和輸出.
希望大家能通過(guò)該程序?qū)TL和編譯原理有更深刻的理解,Have Fun and Good Luck!
-- David.Morre
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -