編譯原理筆記8 自上而下語法分析

2021-07-31 15:26:29 字數 870 閱讀 6368

1.

自上而下分析法的一般問題。

1)自上而下語法分析定義:從文法的開始符號開始,反覆使用不同產生式進行推導以謀求與輸入符號串相匹配。注:此處的輸入符號串是指詞法分析結果的一串二元式。

2)一般方法:

a) 基本構成:設下推棧的初始狀態包括兩個符號:『#s

』,其中『

#』為棧底,『

s』為文法開始符號。整個分析過程在語法分析程式控制下進行。在語法分析中用到的文法產生的表,稱為語法表。

b) 演算法

i. 若棧頂符號x

是非終結符,查詢語法表,找出乙個以

x為左部的產生式,

x出棧,並將其右部反續入棧,且輸出帶上記下產生式編號——推導。

ii. 

若棧頂符號x

是終結符,且讀頭下的符號也是x,則

x出棧,讀頭指向下乙個符號——匹配。

iii. 

若棧頂符號x

是終結符,但讀頭下的符號不是

x,則匹配失敗。這說明可能前面推導時選錯了候選式,退回到上次推導現場(包括棧頂符號、讀頭的指標和輸出帶上資訊)——回溯。

iv. 

回溯後選取另一候選式進行推導,若沒有候選式可選,則進一步回溯。若回溯到開始符號又已無候選式可選,則識別失敗。

v. 若棧內僅剩下「#

」,且讀頭也指向「

#」,則識別成功。

c) 帶回溯的自上而下分析法的缺陷

i. 如果文法存在左遞迴,語法分析會無限迴圈下去。

ii. 

若產生式存在多個候選式,選擇哪個進行推導完全是盲目的。

iii. 

回溯會引起時間和空間的大量耗費。

iv. 

如果被識別的語句是錯的,演算法無法指出錯誤的確切位置。

編譯原理,自上而下非遞迴語法分析自上而下的語法分析

要求 1.使用的文法如下 見編譯陳第三版 e te e te t ft t ft f e id2.對於任意給定的輸入串 詞法記號流 進行語法分析,遞迴下降方法和非遞迴 分析方法可以任選其一來實現。3.要有一定的錯誤處理功能。即對錯誤能提示,並且能在一定程度上忽略盡量少的記號來進行接下來的分析。可以參...

編譯原理系列 實驗二自上而下語法分析

系列第二更!目錄 問題描述 最基本的要求,能對乙個算術表示式 a 15 b做自上而下的語法分析,具體內容見實驗指導實驗二的內容,文法在實驗指導最開始幾頁,重點關注以下幾條文法的ebnf,若不習慣看文法的巴科斯正規化ebnf,可先將文法改寫成常規的產生式形式p75 表示式 項 項 因子 因子 識別符號...

語法分析 自上而下分析

語法分析 是編譯過程的核心部分。它的任務是在詞法分析識別出單詞符號串的基礎上,分析並判定程式的語法結構是否符合語法規則。語言的語法結構是用上下文無關文法描述的。因此,語法分析器的工作本質上就是按文法的產生式,識別輸入符號串是否為乙個句子。這裡所說的輸入串是指由單詞符號 文法的終結符 組成的有限序列。...