編譯原理第四章課程總結

2021-08-19 15:37:36 字數 1775 閱讀 6335

語法分析的方法主要有:

1. 自上而下分析方法:

a、遞迴下降子程式

b、非遞迴**分析,如ll(

1)2. 自下向上分析方法:

a、算符優先分析b、

lr分析方法(

lr(0),slr(1),lr(1),lalr)一、

自上而下分析方法

1、遞迴下降子程式分析方法

a) 為每乙個非終結符寫乙個分析過程

b) 這些過程可能是遞迴的

2、非遞迴**分析方法

x是棧頂符號,

a是當前輸入符號

**分析總控程式如下:a、

若x=a=$,

宣告分析成功,並終止。b、

若x=a!=$,

彈出棧頂符號

x,並將輸入指標移至下乙個c、

若x是非終結符,則訪問分析表m的

m[x,a]

項,m[x,a]

項是文法的乙個

x產生式或者出錯資訊。例如,若

m[x,a]=,

則語法分析器用

wvu來代替x(

u在棧頂)。若

m[x,a]=error

,則語法分析器呼叫錯誤處理程式。

由此看來,非遞迴**的方法主要的工作在構造**分析表上。

下面介紹文法

g的**分析表的方法:

• 基礎知識:

first(α)=,

若α=>e(e

表示空),則

e∈first(α)

follow(a)= ,若a

是某句型的最右符號,那麼

$∈follow(a)

演算法:(

1)對文法的每個產生式

a ® a 

,執行(2)

和(3)。(

2)對first(a)

的每個終結符a,把

a ® a 

加入m[a, a]。(

3)如果e在

first(a)

中,對follow(a)

的每個終結符

b(包括$)

, 把a ® a

加入m[a, b]。(

4)m的其它沒有定義的條目都是

error

。ll(1)

文法---構造出的分析表中沒有多重出口項。ll(1)沒有二義性,也不含左遞迴。

消除間接左遞迴:

(1)將間接左遞迴改造為直接左遞迴

(2)消除直接左遞迴

p→pα1|pα2|...|pαm|β1| β2|...| βn

消除p的左遞迴

p→ β1p'| β2p'|...| βnp'

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

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

最終得到無左遞迴的文法。

當乙個文法滿足

ll(1)

條件時,我們就可以構造乙個不帶回溯的自上而下分析程式,這個分析程式由一組(可能的)遞迴程式組成,每個過程對應文法的乙個非終結符。這樣乙個分析程式稱為遞迴下降分析器。

具體做法:

對文法的每乙個非終結符都編乙個分析程式,當根據文法和當時的輸入符號**到要用某個非終結符去匹配輸入串時,就呼叫該非終結符的分析程式。

ll-自左向右掃瞄、自左向右的分析和匹配輸入串。分析過程表現為最左推導的性質。該過程由分析表、總控程式、符號棧三部分組成。由於最左推導,進棧過程是逆序的。

習題:總結:語法分析感覺是最難的一章,first集和follow集總是求錯,還是要多練習多看一下其他的資料。

編譯原理第四章學習總結

通過第三章對於正規式及有限自動機等知識內容的學習,我們初步了解了詞法分析器。從而進入第四章 語法分析的學習。在第四章中我們可以了解到語法分析是編譯過程的核心部分,它的任務是在詞法分析識別出單詞符號串的基礎上,分析並判定程式的語法結構是否符合語法規則。地位極高。一 學習內容 對於語法分析器而言,它的主...

讀《編譯原理》第四章

語法分析,121頁 此文是讀書筆記,大部分讀書筆記是不適合他人讀的。語法分析分三種 錯誤恢復策略 恐慌模式的恢復 短語層次的恢復 錯誤產生式 全域性糾正 上下文無關方法 由終結符號,非終結符號,乙個開始符號和一組產生式組成。推導語法分析樹和推導 語法分析樹,是二義性的 ambiguous 大部分語法...

第四章總結

1.對貪心演算法的認識 貪心演算法在求解問題時,不從整體上考慮,而是得到某種意義上的區域性最優解,做出當前看來是最好的選擇。每次的選擇都會依賴之前作出的選擇,而對後面的選擇不會產生影響。它具有最優子結構的性質,即問題的最優解包含其子問題的最優解。但貪心演算法不是對於所有的問題都能得到整體最優解,最重...