LL(1),LR(0),SLR(1),LR(1),LALR(1)的 聯系與區別



 

一:LR(0),SLR(1),規范LR(1),LALR(1)的關系


    首先LL(1)分析法是自上而下的分析法。LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法。
            自上而下:從開始符號出發,根據產生式規則推導給定的句子。用的是推導
            自下而上:從給定的句子規約到文法的開始符號。用的是歸約

     1: SLR(1)與LR(0)的關系:

           SLR(1)與LR(0):簡單的LR語法分析技術(即SLR(1)分析技術)的中心思想是根據文法構造出LR(0)自動機。

 

            LR(0):見到First集就移進,見到終態就歸約

 

         SLR(1)見到First集就移進,見到終態先看Follow集,與Follow集對應的項目歸約,其它報錯。

 

   2: LR(1)與LR(0)的關系:

      規范LR(1)語法分析技術的中心思想是根據文法構造出LR(1)自動機 ,而規范LR(1)自動機構造方法和LR(0)自動機的構造方法相同,只是多增加了向前搜索符號。

   3:規范LR(1)與LALR(1)的關系:

      LALR(1)是對LR(1)項集族I中具有同心項的項集進行合並得到I',然后根據I’進行分析的方法。

 


二:LL(1),SLR(1),規范LR(1),LALR(1)的判別

 


 

      1:LL(1)判斷規則

        判定規則: 方法一:龍書上有很明確的規則,龍書上這樣說, 對形如 A->a|β 這樣的文法,滿 足

        ①FIRST(α)∩ FIRST (β ) =Φ
        ②若ε∈ FIRST( α), 要滿足 FIRST(β) ∩FOLLOW(A)=Φ
        這兩個條件的才是 LL(1) 文法。
        這里要注意一下條件②, α和 β 是可以互換的,意思就是只要其中有一個 FIRST 集包含ε,那么就要看另一個了

                   方法二:

                    如果畫出了預測分析表,在一個格子中有兩條產生式,則存在沖突,就不是LL(1)文法。

     2:SLR(1)判斷規則

       方法一:畫出文法的LR(0)自動機,如果沒有移進--規約沖突,即shift--reduce 沖突,則該文法是SLP(1)文法

   3:LALR(1)和LR(1)的判斷規則

       畫出文法的LR(1)自動機,如果沒有同心項且沒有狀態沖突,則該文法是LALR(1)文法;如果有同心項且合並同心項有狀態沖突,則是LR(1)文法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM