第四章 語法分析

2021-08-19 10:13:43 字數 1883 閱讀 9202

1、語法分析器

語法分析器的工作本質上就是按文法的產生式,識別輸入符號串是否為乙個句子。

判斷方法:自上而下的分析、自下而上的規約

2 , 自上而下面臨的問題

1).自上而下的主旨:對任何輸入串,試圖用一切辦法,從文法開始符號出發,自上而下地為輸入串建一棵語法樹/為輸入串尋找乙個最左推導。

2).匹配過程:

1)從文法的開始符號產生根結s,指示器ip指向輸入串x的第乙個字元,用s的語法規則發展語法樹。

2)用s的子結從左至右地匹配整個輸入串。

若遇到非終結符,則擴充套件,由非終結符的候選式的終結符去匹配x,匹配成功則ip指向下一輸入符號;不成功把發展的子樹登出,把ip恢復。在試探非終結符的其他候選式。

若遇到終結符,直接匹配,匹配成功則ip指向下一輸入符號;不成功則ip不變,看下一子結。

3).自上而下的問題:左遞迴(在擴充套件語法樹時,發現是非終結符→非終結符,不停地擴充套件,還未匹配輸入符號),回溯(工作量大),虛假匹配,定位出錯位置,效率。

3、(1) 分析法

[1](消除直接左遞迴的方法)

設有產生式:p→pα1|pα2|…|pαm|β1|β2|…|βn,其中每個βi不以p開頭,每個αi不為ε

消除p的直接左遞迴性就是把這些規則改寫成:  p→β1p』|β2p』|…|βnp』      p』→α1p』| α2p』|…|αmp』| ε

[2](消除間接左遞迴的方法)

(1) 將間接左遞迴改造為直接左遞迴。將文法中所有如下形式的產生式:

pi →pjγ|β1|β2|…|βn             pj→δ1|δ2|δ3|…|δk

改寫成:  pi →δ1γ|δ2γ|δ3γ|…|δkγ|β1|β2|…|βn

(2)消除直接左遞迴

p→ β1p'| β2p'|...| βnp'       p'→ α1 p'| α2 p'|...|αm p'| ε

(3)化簡改寫後的文法,即去除那些從開始符號出發卻永遠無法到達的非終結符的產生規則。

[3](消除回溯)

定義first集:令文法g是不含左遞迴的文法,對g的非終結符的候選α,定義它的開始符號(終結首符)集合:

first( a)=

2)若x為非終結符,且有x->a …的產生式,則把a加入到first(x)中;

3)若x->y…是乙個產生式,且y為非終結符,則把first (y)-ε加入到first(x)中;

若x->y1y2y3….yk,是產生式, y1y2y3….yi-1是非終結符,而且ε屬於 first (yj)(1<=j<=i-1),則把first (yj)-ε加入到first(x)中;如果ε屬於所有的first(yj),則ε加入到first(x)中

2.     follow(x)

1)對於文法的開始符,置#於follow(s)中

2)若a->αbβ, 則把first (β)-ε加入到follow(b)中,

3)若a->αb 是乙個產生式,或 a->αbβ是乙個產生式,而β-> ε,則把follow(a)加入到follow(b)中

3.     **分析表的構造

對文法g的每個產生式, a->α,進行下面的處理

1)對每個終結符a,如果a屬於first(α),則把該產生式寫入到m[a,a]

2) 若ε屬於first(α),則對任何b屬於follow(a), 把該產生式加入到m[a,b]

3)所有無定義的m[a,a]標上出錯標誌

結論:乙個文法g的**分析表不含多重入口,當且僅當該文法是(1)

5,習題

第四章 語法分析 自上而下分析

為了判斷乙個輸入串是否符合語法規則,有自上而下的的分析,即從文法的起始符出發進行句子的推導。也有自下而上的規約,即從句子本身出發,進行歸約,看能否把句子規約為到起始符。這一章主要講述的是自上而下的推導。但是乙個文法可能會存在左遞迴,回溯,虛假匹配等等的問題,就會影響推導的效率,浪費大量的精力與時間,...

第四章 語法分析 自上而下分析

上一章學習的是詞法分析,用正規式描述了單詞符號的結構,用有限自動機構造詞法分析器。但正規式描述能力是有限的,上下文無關文法適用範圍更廣一些,是語法分析的基礎。語法分析辦法分為兩類,一類是自上而下分析法,另一類是自下而上分析法。這一章學習的是自上而下分析法,主要內容是如何消除左遞迴 直接左遞迴和非直接...

第四章 語法分析 自上而下的分析

一.本章重點 分析的程式。二.1 如何判斷乙個輸入串是否符合語法規則?1.從文法的起始符出發進行句子的推導,即自上而下的分析 2.從句子本身出發,進行歸約,看能否把句子規約為到起始符,即自下而上的規約 2 基本思想 對任何乙個輸入串,試圖用一切可能的辦法,從文法的開始符號 根節點 出發,根據文法自上...