在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    編譯原理follow集與first集的計(jì)算

    下面我將介紹一下我關(guān)于LL(1)文法部分的計(jì)算文法非終結(jié)符First集以及Follow集兩個(gè)知識(shí)點(diǎn)的理解。

    首先是First集的計(jì)算部分,計(jì)算First集首先看我們?cè)姆ǖ淖筮?,原文法左邊不重?fù)的都要進(jìn)行First集的計(jì)算,計(jì)算時(shí)具體有以下三種情況

    (1)先看產(chǎn)生式后面的第一個(gè)符號(hào),如果是終結(jié)符,那就可以直接把它寫(xiě)到這個(gè)產(chǎn)生式的First集中,例如:產(chǎn)生式為M->nDc,那在First集中我們就可以直接寫(xiě)上First (M)={ n };

    (2)如果產(chǎn)生式后面的第一個(gè)符號(hào)是非終結(jié)符,就看這個(gè)非終結(jié)符的產(chǎn)生式,看的時(shí)候同樣利用前面的兩種看法;但是當(dāng)產(chǎn)生式為ε時(shí),則需要把ε帶入到待求First集的元素的產(chǎn)生式中再判斷。例如:A->Bc; B->aM;B->ε,求First(A)時(shí),我們看到A的第一個(gè)產(chǎn)生式中的第一個(gè)符號(hào)是B,B是一個(gè)非終結(jié)符,所以我們就要接著看B的產(chǎn)生式,B的第一個(gè)產(chǎn)生式的第一個(gè)符號(hào)為a,a是一個(gè)終結(jié)符,直接把a(bǔ)寫(xiě)入First(A),B的第二個(gè)產(chǎn)生式為ε,把ε帶入A->Bc中,A->c(注意:如果將B->ε帶入表達(dá)式后A的產(chǎn)生式為A->ε,ε不可以忽略),c是終結(jié)符,所以把c也寫(xiě)入First(A),最后First (A)={ a,c }。

    (3)當(dāng)產(chǎn)生式右邊全為非終結(jié)符,且兩個(gè)非終結(jié)符又都可以推出ε時(shí),我們需要把這個(gè)產(chǎn)生式的所有情況都列出來(lái),再分析。例如:A->BC;B->b|ε;C->c|ε。我們把A的所有產(chǎn)生式利用上述兩種方法列出來(lái)就是A->bc,A->b;A->c,A->ε;最后First (A)={b,c, ε}。

    接下來(lái)介紹一下Follow集的部分,先簡(jiǎn)單介紹一下計(jì)算Follow集的大致規(guī)則。比如我們要求Follow(X),文法中多個(gè)產(chǎn)生式中含有X,則需要考慮多種情況,以下是具體計(jì)算時(shí)的三種情況:

    (1)文法開(kāi)始符:所有文法開(kāi)始符的Follow集中都有一個(gè)#。

    (2)S->αB的形式:求Follow(B),因?yàn)锽的后面為空,把Follow(S)寫(xiě)入B的Follow集中。

    (3)S->αBβ的形式:求Follow(B),B后部不為空。

    ①當(dāng)β是終結(jié)符時(shí),直接把β寫(xiě)入Follow(B)。

    ②當(dāng)β是非終結(jié)符時(shí),將First (β)(如果First(B)中有ε,就把ε刪掉)寫(xiě)入Follow(B)中。(需要注意的是:如果β->ε,那么原產(chǎn)生式就變成了S->αB,也就是第二種情況,這兩種情況都要算在Follow(B)中)。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月14日 21:06
    下一篇 2022年6月14日 21:06

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息