2012-02-06 33 views
0

什麼是規範LR(1)項目!我已閱讀龍書,它使我困惑,(三角洲,伽瑪,toh,...)LR(1)項的討論:含義?

有人可以幫我解決這個問題嗎?

這是什麼意思? [A - > alpha.Bbeta,A]。

非常感謝..

回答

2

[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

這是我能解釋這個最簡單的方法。

+0

可變前綴意味着:一個句柄後的前綴,是否正確? – sap 2012-02-06 22:29:57

+0

你是伊朗人嗎? – sap 2012-02-06 22:32:01

+0

我是伊朗人,我不得不承認我不記得大部分術語。我記得的是:先行(輸入中的下一個標記),「第一個(A)」,在本例中是「{alpha}」和「follow(A)」,它是「{a}」。事實上,這三個是編寫解析器時最重要的(這就是爲什麼我記得它們)。其餘部分主要用於驗證解析算法和其他理論工具的正確性。 – Shahbaz 2012-02-06 23:16:39

1

IIRC,這是一個「項目」,也就是一些句子形式解析的潛在狀態。

這意味着:

[A - > alpha.Bbeta , a] 

是試圖解析(目標語言的子串),可以的體貼作爲非終結時,是阿爾法已經看到的那樣,與(「。」)Bbeta預計接下來,並且如果看到非終端的元素,如果下一個令牌是a,則它是有效的A。 (我認爲你把Bbeta寫成錯了,這可能是書中的beta版)。

+0

有效一個手段,我們可以減少A. – sap 2012-02-06 22:43:57