语法分析器c语言 递归子程序,RecursiveSubroutine
RecursiveSubroutine
介紹
編譯原理語法分析——遞歸下降子程序類,C++實現。
實驗說明
一、實驗目標
分別采用自頂向下和自底向上兩種語法分析方法,編制一個語法分析程序,實現對詞法分析程序所提供的單詞序列的語法檢查和結構分析實驗內容。
二、實驗內容
選取一種自頂向下語法分析方法(遞歸子程序、LL分析法)和一種自底向上語法分析法(算符優先分析、LR分析方法)設計語法分析器,并對簡單語言進行語法分析。
2.1 待分析的簡單語言的語法
用擴充的BNF表示如下:
⑴::=beginend
⑵::={;}
⑶::=
⑷::=ID:=
⑸::={+ | -}
⑹::={* | /
⑺::=ID | NUM | ()
用上下文無關文法表示如下:
P→begin SList end
SList→S{;S}
S→A
A→ID:=E
E→E+T|E-T|T
T→T*F|T/F|F
F→(E)|ID|NUM
2.2 實驗要求說明
輸入單詞串,以“#”結束,如果是文法正確的句子,則輸出成功信息,打印“success”,否則輸出“error”。
例如:
輸入 begin a:=9; x:=23; b:=a+x end #
輸出 success!
輸入 x:=a+bc end #
輸出 error
三、實驗報告
實驗結束需要提交實驗報告,實驗報告需要包含自頂向下和自底向上兩種分析程序算法(可以用流程圖表示)和源代碼,以及測試結果截圖以及相關分析(需要設計至少10個不同的測試用例)。兩種不同算法用兩個文檔分別保存。
實驗過程
改為LL(1)文法
P→begin SList end
SList→S{;S}
S→A
A→ID:=E
E→TE’
E’→BTE’|
B→+|-
T→FT’
T’→CFT’|
C→*|/
F→(E)|ID|NUM
遞歸子程序
參看項目代碼
開發工具
VS2015
依賴
參與貢獻
Fork 本倉庫
新建 Feat_xxx 分支
提交代碼
新建 Pull Request
碼云特技
使用 Readme_XXX.md 來支持不同的語言,例如 Readme_en.md, Readme_zh.md
GVP 全稱是碼云最有價值開源項目,是碼云綜合評定出的優秀開源項目
總結
以上是生活随笔為你收集整理的语法分析器c语言 递归子程序,RecursiveSubroutine的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 僵尸启示录开始 Scheming Thr
- 下一篇: HDU 4635(强连通分量分解