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

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

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

2)一般方法:

a) 基本構成:設下推棧的初始狀態包括兩個符號:‘#S’,其中‘#’爲棧底,‘S’爲文法開始符號。整個分析過程在語法分析程序控制下進行。在語法分析中用到的文法產生的表,稱爲語法表。編譯原理筆記8 <wbr>自上而下語法分析-帶回溯的自頂向下分析技術

b) 算法

i. 若棧頂符號x是非終結符,查詢語法表,找出一個以x爲左部的產生式,x出棧,並將其右部反續入棧,且輸出帶上記下產生式編號——推導。

ii. 若棧頂符號x是終結符,且讀頭下的符號也是x,則x出棧,讀頭指向下一個符號——匹配。

iii. 若棧頂符號x是終結符,但讀頭下的符號不是x,則匹配失敗。這說明可能前面推導時選錯了候選式,退回到上次推導現場(包括棧頂符號、讀頭的指針和輸出帶上信息)——回溯。

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

v. 若棧內僅剩下“#”,且讀頭也指向“#”,則識別成功。

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

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

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

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

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

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