欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序

 更新時(shí)間:2022年02月07日 09:19:05   作者:newlw  
大家好,本篇文章主要講的是用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序,感興趣的同學(xué)趕緊來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

一、文法

原文法

E->E+T|E-T|T 
T->T*F|T/F|F 
F->id|(E)|num 
其中: id: a-f, A-F,num:0-9 

拓廣文法

(0)S->E 
(1)E->E+T    (2)E->E-T    (3)E->T 
(4)T->T*F    (5)T->T/F    (6)T->F 
(7)F->i      (8)F->(E)    (9)F->n 
其中:i:id, n:num

二、SLR 分析表

在這里插入圖片描述

三、運(yùn)行環(huán)境

CodeBlocks-13.12 with GCC compiler from TDM-GCC (4.7.1, 32 bit)

四、輸入輸出設(shè)計(jì)

輸入:文件“fin.txt”輸入待分析串

輸出:SLR 分析過(guò)程輸出至“fout.txt”

五、主要數(shù)據(jù)結(jié)構(gòu)

// 拓廣文法的產(chǎn)生式 
vector<string> G;        
// 文法符號(hào)到下標(biāo)的轉(zhuǎn)換字典 
map<char, int> index;    
// SLR action 表
vector<vector<int> > action;    
// SLR goto 表 
vector<vector<int> > goTo;      

六、核心算法

int main() 
{ 
    從文件 fin.txt 讀取待分析串到 s; 
    s末尾加‘$'; 
    狀態(tài)棧 vector<int> statusStack; 
    符號(hào)棧 vector<char> symbolStack; 
    狀態(tài)棧 0;符號(hào)棧壓‘$';
    ip 指向 s 的第一個(gè)字符; 
    do{ 
        top 是棧頂符號(hào); 
        cur 是 ip 所指向的輸入符號(hào); 
        if(cur 是字母) cur = ‘i'; 
        if(cur 是數(shù)字) cur = ‘n'; 
        x = top 對(duì)應(yīng)下標(biāo);
        y = cur 對(duì)應(yīng)下標(biāo); 
        動(dòng)作 val = action[x][y]; 
        if(val == acc){ 
            輸出 acc;
            break;
        } 
        else if(val 為 shift){ 
            輸出 shift;
            當(dāng)前輸入符號(hào) cur 壓入符號(hào)棧; 
            動(dòng)作 val 壓入狀態(tài)棧; 
        } 
        else if(val 為 reduce){ 
            len = reduce 產(chǎn)生式右部長(zhǎng)度;
            狀態(tài)棧和符號(hào)棧各彈出 len 個(gè); 
            topS = 當(dāng)前狀態(tài)棧棧頂;
            curA = 產(chǎn)生式左部非終結(jié)符號(hào); 
            x = topS 對(duì)應(yīng)下標(biāo);
            y = curA 對(duì)應(yīng)下標(biāo);
            curA 壓入符號(hào)棧;
            goto[x][y]壓入狀態(tài)棧;
            輸出 reduce 產(chǎn)生式; 
        } 
        else{ 
            error;
            break;
        } 
    }while(true);
} 

七、測(cè)試

在這里插入圖片描述

到此這篇關(guān)于用C++實(shí)現(xiàn)SLR語(yǔ)法分析程序的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)SLR語(yǔ)法分析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • C語(yǔ)言實(shí)例講解選擇語(yǔ)句的使用

    C語(yǔ)言實(shí)例講解選擇語(yǔ)句的使用

    選擇語(yǔ)句是C語(yǔ)言中的重要組成部分,該部分也比較基礎(chǔ),本文將通過(guò)最通俗易懂的方式來(lái)為大家做出講解。相信通過(guò)本文的學(xué)習(xí),讓大家一舉拿下C語(yǔ)言選擇語(yǔ)句的知識(shí)點(diǎn)
    2022-05-05
  • C++ 動(dòng)態(tài)內(nèi)存分配詳解(new/new[]和delete/delete[])

    C++ 動(dòng)態(tài)內(nèi)存分配詳解(new/new[]和delete/delete[])

    這篇文章主要介紹了C++ 動(dòng)態(tài)內(nèi)存分配詳解(new/new[]和delete/delete[]),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • C++中的模板template小結(jié)

    C++中的模板template小結(jié)

    這篇文章主要介紹了C++中的模板template的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C++雙向鏈表的增刪查改操作方法講解

    C++雙向鏈表的增刪查改操作方法講解

    相較單鏈表,雙向鏈表除了data與next域,還多了一個(gè)pre域用于表示每個(gè)節(jié)點(diǎn)的前一個(gè)元素。這樣做給雙向鏈表帶來(lái)了很多優(yōu)勢(shì)。本文主要介紹了雙向鏈表的實(shí)現(xiàn),需要的可以參考一下
    2023-03-03
  • 基于重啟后消失的注冊(cè)表鍵值的詳細(xì)介紹

    基于重啟后消失的注冊(cè)表鍵值的詳細(xì)介紹

    本篇文章是對(duì)重啟后消失的注冊(cè)表鍵值進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)兩個(gè)日期間差多少天的解決方法

    C++實(shí)現(xiàn)兩個(gè)日期間差多少天的解決方法

    本篇文章用實(shí)例說(shuō)明,在C++中實(shí)現(xiàn)兩個(gè)日期間差多少天的方法。需要的朋友參考下
    2013-05-05
  • 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C語(yǔ)言實(shí)現(xiàn)校園導(dǎo)游系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)校園導(dǎo)游系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)校園導(dǎo)游系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++實(shí)現(xiàn)旅館住宿管理系統(tǒng)

    C++實(shí)現(xiàn)旅館住宿管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)旅館住宿管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++使用read()和write()讀寫(xiě)二進(jìn)制文件

    C++使用read()和write()讀寫(xiě)二進(jìn)制文件

    以文本形式讀寫(xiě)文件和以二進(jìn)制形式讀寫(xiě)文件的區(qū)別,并掌握了用重載的?>>?和?<<?運(yùn)算符實(shí)現(xiàn)以文本形式讀寫(xiě)文件,在此基礎(chǔ)上,本節(jié)將講解如何以二進(jìn)制形式讀寫(xiě)文件
    2023-10-10

最新評(píng)論