LL LR SLR LALR 傻傻分不清


 

一: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 集包含ε,那么就要看另一個了。

   2:SLR(1)判斷規則

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

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

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

 原文地址鏈接:http://www.cnblogs.com/Alexkk/p/6033159.html

最后附上我們sysu編譯原理作業的兩個例子

一, 證明下列文法

S à Aa | bAc | dc | bda

A à d

LALR(1)文法但不是SLR(1)文法.

 

拓廣文法

(0) SS  

(1) S Aa  

(2) S bAc  

(3) S dc

(4) S bda

(5) A d  

拓廣文法的LR(1)項目集規范族及Go函數如下

 

 

一、 證明下列文法

S à Aa | bAc | Bc | bBa

A à d

B à d

LR(1)文法但不是LALR(1)文法.

 

拓廣文法

(0) SS  

(1) S Aa  

(2) S bAc  

(3) S Bc   

(4) S bBa  

(5) A d  

(6) B

拓廣文法的LR(1)項目集規范族及Go函數如下


免責聲明!

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



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