zoukankan      html  css  js  c++  java
  • FIRST集和FOLLOW集

    省略号代表其他相关产生式得出的终结符号,一开始的时候,省略号里面是没有的
     
    求FIRST集
    情况壹  如果A只在→的右边出现,那么FIRST(A)={A},例子M→α,FIRST(α)={α}
    情况貳  对于A→BCDEFG,
                   一 如果无B→ε,那么FIRST(A)={……}∪FIRST(B),接着求FIRST(B)
                   二 如果有B→ε,那么FIRST(A)={……}∪(FIRST(B)-{ε})∪FIRST(CDEFG),接着分别求FIRST(B)-{ε}、FIRST(CDEFG)
    情况叁 如果G→ε,那么FIRST(G)={……}∪{ε}
     
    求FOLLOW集
    情况壹 如果S是开始符号(一般是第一个产生式),那么FOLLOW(S)={……,$} 
    情况贰     一 如果有产生式A→αBCD,且ε不属于FIRST(CD)那么FOLLOW(B)={……}∪(FIRST(CD))
                 二 如果有产生式A→γBCD,且ε属于FIRST(CD)那么FOLLOW(B)={……}∪(FIRST(CD)-{ε})∪FOLLOW(A)
    情况叁  如果有产生式M→CDB,那么FOLLOW(B)={……}∪FOLLOW(M) 
     
     
    例子
    对于文法G[A]
    A→BCc|gDB   
    B→bCDE|ε
    C→DaB|ca
    D→dD|ε
    E→gAf|c
     
    FIRST集先看→左边
    FIRST(A)=FIRST(BCc)∪FISRT(gDB)
                   =(FIRST(B)-{ε})∪FIRST(Cc)∪{g}
                  ={b}∪FIRST(DaBc)∪FIRST(cac)∪{g} 
                  ={b}∪FIRST(dDaBc)∪FIRST(aBc)∪{c}∪{g}
                  ={b,d,a,c,g}
    FIRST(B)=FIRST(bCDE)∪FIRST(ε)
                  ={b,ε}
    FIRST(C)=FIRST(DaB)∪FIRST(ca)
                   =FIRST(dDaB)∪FIRST(aB)∪{c}     相当于(FIRST(D)-{ε})∪FIRST(aB)∪{c}
                  ={d,a,c}
    FIRST(D)=FIRST(dD)∪FIRST(ε)
                   ={d,ε}
    FIRST(E)=FIRST(gAf)∪FIRST(c)={g,c}
    -------------------------------------------------------------------------------------------------------
    FOLLOW集先看→右边
    FOLLOW(A)={$}∪{f}={f,$}
    FOLLOW(B)=FIRST(Cc)∪FOLLOW(A)∪FOLLOW(C)
                          ={d,a,c}∪{f,$}∪FOLLOW(C)先去求FOLLOW(C)再来补
                          ={a,c,d,g,f,$}
    FOLLOW(C)={c}∪FIRST(DE)
                          ={c}∪{d}∪FIRST(E)
                         ={c,d,g}
    FOLLOW(D)=(FIRST(B)-{ε})∪FOLLOW(A)∪FIRST(E)∪{a}∪FOLLOW(D)
                         ={b}∪{f,$}∪{g,c}∪{a}
                         ={a,b,g,c,f,$}
    FOLLOW(E)=FOLLOW(B)={a,c,d,g,f,$}
  • 相关阅读:
    微信小程序开发之http到https的转化
    微信公众号实践第一弹:群发功能
    C# Modbus_TCP通讯 dll库 测试TRIO运动控制器
    C语言----循环结构2(基础篇六)
    C# 调用TRIO控制器ActiveX教程
    C语言----循环结构1(基础篇五)
    TRIO-basic指令--CAM
    C语言----流程图(基础篇四)
    C语言----选择结构(基础篇三)
    C语言----输入输出语句(基础篇二)
  • 原文地址:https://www.cnblogs.com/xujiayu/p/5142603.html
Copyright © 2011-2022 走看看