編譯原理——語法分析(自頂向下語法分析)

? ? ? 目的:為輸入字符串尋找最左推導(dǎo),或者說,從根節(jié)點(diǎn)開始,自上而下,從左到右地為輸入字符串建立一棵分析樹,并預(yù)先確定的順序創(chuàng)建分析樹的節(jié)點(diǎn)。

1、預(yù)測語法分析器的狀態(tài)轉(zhuǎn)換圖

? ? 預(yù)測語法分析器,每一個非終結(jié)符都對應(yīng)一個狀態(tài)轉(zhuǎn)換圖,邊上的標(biāo)記是記號和非終結(jié)符。記號上的轉(zhuǎn)換意味著如果該記號是下一個輸入符號,就應(yīng)進(jìn)行該轉(zhuǎn)換。

2、非遞歸的預(yù)測分析

? ? 表驅(qū)動的預(yù)測語法分析器有一個輸入緩沖區(qū)、一個棧、一張分析表和一個輸出流。輸入緩沖區(qū)包含要分析的串,后面跟一個符號$,$是輸入串的結(jié)束標(biāo)記。棧是用來存放文法符號序列。棧底符號是$。分析表示一個二維數(shù)組M[A,a],A是非終結(jié)符,a是終結(jié)符或者$。

? ? 算法 非遞歸的預(yù)測分析

? ? FIRST和FOLLOW

? ? 算法 構(gòu)造預(yù)測分析法

? ? LL(1)文法

3、預(yù)測分析的錯誤恢復(fù)

? ? ? 緊急方式錯誤恢復(fù)主要思想:跳過一些輸入符號,直到期望的同步記號中的一種出現(xiàn)為止。主要依賴于同步記號集合的選擇。這個選擇可以使得語法分析器能迅速地從實(shí)際可能發(fā)生的錯誤中恢復(fù)過來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容