編譯原理 學習總結第五章

自下而上分析法

1.知識點:

項目、項目集、項目集規範族
項目集的閉包(closure)

有效項目 有效項目 同心集

2.LR分析法:

LR分析方法是一種自下而上的分析方法
LR分析法的歸約過程是規範推導的逆過程,所以LR分析過程是一種規範歸約過程
LR分析方法是一種適用於一大類上下文無關文法的分析方法
比較複雜,不適於用手工實現,可藉助於YACC/bison實現

根據歸約過程中向前看輸入符號串中字符的個數,定義不同的LR(k)分析方法,通常,k=0

(1)動作表
<1>. 移進
<2>. 歸約
<3>. 接受

<4>. 報錯

3.LR文法
一個文法,如果能構造出一個所有條目都唯一的分析表。
LR(k)文法
最多向前看K個的符號就可以決定動作的LR分析器所分析的文法成爲LR(k)文法。

我們最感興趣的是k=0,1

存在移進、歸約衝突的文法

4.活前綴:文法G的活前綴是他的規範句型的前綴,該前綴不超過句柄的右端。

活前綴特點:
該前綴加上被分析串中未被分析的終結符,就可以構成一個規範句型

只要輸入串的已掃描部分可歸約成一個活前綴,意味着掃描過的部分沒有錯誤。

(1)活前綴中已含有句柄的全部符號(句柄的符號即爲其最右符號)。
(2)活前綴中含句柄的一部分符號(句柄開頭的 若干符號與活前綴最右的若干個符號一致)。

(3)活前綴中全然不包含句柄的任何符號 

LR分析表的構造需要構造識別活前綴的有限自動機,
用有限自動機中的狀態表示分析表中的狀態,

用狀態圖中的狀態之間的轉換關係對分析表中的action goto函數等進行定義。

LR(0)項目集規範族不存在移進-歸約,或歸約-歸約衝突,稱爲LR(0)文法。

  只有是LR(0)文法,才能構造相應的LR(0)分析表,才能用LR(0)分析法對句子進行分析。

5.同心集合並後心仍相同,只是超前搜索符集合爲各同心集超前搜索符的和集合並同心集後轉換函數自動合併。
LR(1)文法合併同心集後也只可能出現歸約-歸約衝突,而沒有移進-歸約衝突。

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