語 法 分 析

語法分析器功能

語法分析的工作是分析一個個獨立的單詞之間的組合規則從而獲得文本的含義,檢查錯誤

步驟:產生文法–>消除二義性–>消除左遞歸–>提取左因子–>寫成巴克斯範式–>編程語言實現

產生文法

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

消除二義性(改寫文法)

二義性:產生的分析樹不止一棵
產生二義性的原因是文法缺少對文法符號結合性和優先級的規定

消除二義性的步驟:

1.分析運算符的優先級和結合性
在這裏插入圖片描述
2.引入新的非終結符,增加一個結構並提高優先級、
高於二元加減的運算符共有四類,所以要引入四個新的非終結符,依次是Term,Factor,Compomnent,Atom
3**.確定結合性**
在這裏插入圖片描述
因此Expression在+或-的左邊出現,Term在*或/的左邊出現,Factor在-或+的右邊出現,Power在**de 右邊出現,從而得到產生式:
在這裏插入圖片描述






消除直接左遞歸

消除方法:例如A->Aa|b這個產生式中有直接左遞歸,消除左遞歸後文法爲A->b**A* A->aA|e(空產生式的符號)
構造的文法中以下產生式均含有直接左遞歸
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
消除左遞歸後的產生式:
在這裏插入圖片描述
在這裏插入圖片描述
至此左遞歸消除完畢







提取左因子

在這裏插入圖片描述
Component產生式中含有左因子Atom
在這裏插入圖片描述![

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

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章