算法基本思想: 消除了左遞歸和左公共因子的文法,每個產生式左邊的非終結符對應一個函數,在子程序中實現對該非終結符所在產生是的右部語法成分的識別,分析過程是按產生式規則自頂向下一層一層調用相關子程序來完成的。
具體實現過程是掃描源文件,先做語法分析,建立各種表格存放單詞;然後進行語法分析,遇到終結符進行匹配,遇到非終結符調用相關子程序,輸出分析過程和結果。
用C#實現了一個可視化的語法分析器。在textBox1中輸入語句,單擊START按鈕,開始語法分析,在textBox2中輸出語法分析過程和語法分析結果。
分析成功實例:
遇到不符合文法的語句分析出錯: