據我所知,FOLLOW-Set在第一時間可以告訴我輸入流中是否有錯誤。是對的嗎?LL-1解析器:跟隨器是否真的有必要?
因爲否則我想知道你究竟需要什麼。考慮你的解析器對堆棧的頂部的非終端(在我們班,我們使用了棧抽象爲LL-解析器)
即
[TOP] X...[BOTTOM]
的X - 讓它成爲非 - 終端 - 在下一步將被替換,因爲它位於堆棧的頂部。因此解析器詢問分析表使用什麼推導X.考慮輸入
+ b
凡+
和b
都是終端。
假設X具有""
,即其FIRST集合中的空字符串。他的第一盤中沒有+
。
至於我看到它在這種情況下,分析器可以簡單地檢查是否有在第一組X的無+
,然後用它可以讓X溶解到""
即空字符串,因爲它是唯一的推導分析器可能如何繼續解析輸入而不會引發錯誤。如果輸入流無效,解析器無論如何都會在稍後的某個時刻識別它。我明白FOLLOW集可以幫助您立即確定解析是否可以繼續而不會出現錯誤。
我的問題是 - 這真的是FOLLOW集合發揮的唯一作用嗎?
我希望我的問題屬於這裏 - 如果不是,我很抱歉。如果事情不清楚,也請隨時要求澄清。
謝謝你提前