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