資源簡介
這個里面的都是測試數據,總共得分5分。從控制臺輸入,不能從文件中讀取。實現了基本功能,加分項目都沒有去實現,沒有函數數組這些的實現。這是用C++語言寫的,新建parser類別要選C++,其他對于VS的配置和C語言一樣。for語句用的是枚舉所有情況,你可以自行修改。
對預備工作中自然語言描述的簡化C編譯器的語言特性的語法,設計上下文無關文法進行描述
借助Yacc工具實現語法分析器
考慮語法樹的構造:
1.語法樹數據結構的設計:節點類型的設定,不同類型節點應保存哪些信息,多叉樹的實現方式
2.實現輔助函數,完成節點創建、樹創建等功能
3.利用輔助函數,修改上下文無關文法,設計翻譯模式
4.修改Yacc程序,實現能構造語法樹的分析器
考慮符號表處理的擴充
1.完成語法分析后,符號表項應增加哪些標識符的屬性,保存語法分析的結果
2.如何擴充符號表數據結構,Yacc程序如何與Lex程序交互,正確填寫符號表項
以一個簡單的C源程序驗證你的語法分析器,可以文本方式輸出語法樹結構,以節點編號輸出父子關系,來驗證分析器的正確性,如下例:
main()
{
int a, b;
if (a == 0)
a = b + 1;
}
可能的輸出為:
0 : Type Specifier, integer, Children:
1 : ID Declaration, symbol: a Children:
2 : ID Declaration, symbol: b Children:
3 : Var Declaration, Children: 0 1 2
4 : ID Declaration, symbol: a Children:
5 : Const Declaration, value:0, Children:
6 : Expr, op: ==, Children: 4 5
7 : ID Declaration, symbol: a Children:
8 : ID Declaration, symbol: b Children:
9 : Const Declaration, value:1, Children:
10: Expr, op: +, Children: 8 9
11: Expr, op: =, Children: 7 10
12: if statement, Children: 6 11
13: compound statement, Children: 3 12

代碼片段和文件信息
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-02-17?20:20??語法分析\
?????文件?????3943445??2016-12-06?22:47??語法分析\CPlus.zip
?????文件?????????850??2016-12-18?23:56??語法分析\ex.txt
?????文件????????4556??2016-12-07?20:01??語法分析\mylexer.l
?????文件???????14715??2016-12-06?22:53??語法分析\myparser.y
-----------?---------??----------?-----??----
?????目錄???????????0??2017-02-17?20:20??語法分析\
?????文件?????3943445??2016-12-06?22:47??語法分析\CPlus.zip
?????文件?????????850??2016-12-18?23:56??語法分析\ex.txt
?????文件????????4556??2016-12-07?20:01??語法分析\mylexer.l
?????文件???????14715??2016-12-06?22:53??語法分析\myparser.y
- 上一篇:數據結構 C語言版 第2版 嚴蔚敏 李冬梅著 PDF
- 下一篇:編譯原理簡易C編譯器
評論
共有 條評論