語法分析器功能
語法分析的作業是分析一個個獨立的單詞之間的組合規則從而獲得文本的含義,檢查錯誤
步驟:產生文法–>消除二義性–>消除左遞回–>提取左因子–>寫成巴克斯范式–>編程語言實作
產生文法
消除二義性(改寫文法)
二義性:產生的分析樹不止一棵
產生二義性的原因是文法缺少對文法符號結合性和優先級的規定
消除二義性的步驟:
1.分析運算子的優先級和結合性
2.引入新的非終結符,增加一個結構并提高優先級、
高于二元加減的運算子共有四類,所以要引入四個新的非終結符,依次是Term,Factor,Compomnent,Atom
3**.確定結合性**
因此Expression在+或-的左邊出現,Term在*或/的左邊出現,Factor在-或+的右邊出現,Power在**de 右邊出現,從而得到產生式:
消除直接左遞回
消除方法:例如A->Aa|b這個產生式中有直接左遞回,消除左遞回后文法為A->b**A* A->aA|e(空產生式的符號)
構造的文法中以下產生式均含有直接左遞回
消除左遞回后的產生式:
至此左遞回消除完畢
提取左因子

Component產生式中含有左因子Atom

將文法的各產生式寫成擴展的巴科斯范式



轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/238036.html
標籤:其他











