什麼是規範LR(1)項目!我已閱讀龍書,它使我困惑,(三角洲,伽瑪,toh,...)LR(1)項的討論:含義?
有人可以幫我解決這個問題嗎?
這是什麼意思? [A - > alpha.Bbeta,A]。
非常感謝..
什麼是規範LR(1)項目!我已閱讀龍書,它使我困惑,(三角洲,伽瑪,toh,...)LR(1)項的討論:含義?
有人可以幫我解決這個問題嗎?
這是什麼意思? [A - > alpha.Bbeta,A]。
非常感謝..
[A -> alpha . B beta , a]
基本意思是「假設規則A
正在擴大,到目前爲止,我們已經看到alpha
然後,我們希望看到B beta
我們還知道在A
之後,我們將看到一個a
「
所以,在CLR(1)中,你有一些狀態由這些項目中的一些組成。那麼你有很多選擇:
first(B)
成員,假設你有一個規則,如B->gamme C
,那麼你就可以「轉移」,並轉到包含[B -> gamma . C, beta]
的狀態。正如你所看到的,.
移動通過gamma
(因爲gamma
匹配和B
後續是beta
,因爲這是在規則B
後什麼來A -> alpha B beta
。a
並假設B beta
可能產生lambda
(空字符串)(這裏假定beta是一個非終結符,可以生成lambda
)然後,你可以「減少」並進入一個包含規則的狀態,如C -> something A . a something_else, follow]
在這種情況下,你已經決定了alpha
,B
和堆棧上的beta
可以分組爲一個A
。這是我能解釋這個最簡單的方法。
IIRC,這是一個「項目」,也就是一些句子形式解析的潛在狀態。
這意味着:
[A - > alpha.Bbeta , a]
是試圖解析(目標語言的子串),可以的體貼作爲非終結甲時,是阿爾法已經看到的那樣,與(「。」)Bbeta預計接下來,並且如果看到非終端的元素,如果下一個令牌是a,則它是有效的A。 (我認爲你把Bbeta寫成錯了,這可能是書中的beta版)。
有效一個手段,我們可以減少A. – sap 2012-02-06 22:43:57
可變前綴意味着:一個句柄後的前綴,是否正確? – sap 2012-02-06 22:29:57
你是伊朗人嗎? – sap 2012-02-06 22:32:01
我是伊朗人,我不得不承認我不記得大部分術語。我記得的是:先行(輸入中的下一個標記),「第一個(A)」,在本例中是「{alpha}」和「follow(A)」,它是「{a}」。事實上,這三個是編寫解析器時最重要的(這就是爲什麼我記得它們)。其餘部分主要用於驗證解析算法和其他理論工具的正確性。 – Shahbaz 2012-02-06 23:16:39