最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、文法

原文法

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è)計

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

輸出:SLR 分析過程輸出至“fout.txt”

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

// 拓廣文法的產(chǎn)生式 
vector<string> G;        
// 文法符號到下標(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; 
    符號棧 vector<char> symbolStack; 
    狀態(tài)棧 0;符號棧壓‘$';
    ip 指向 s 的第一個字符; 
    do{ 
        top 是棧頂符號; 
        cur 是 ip 所指向的輸入符號; 
        if(cur 是字母) cur = ‘i'; 
        if(cur 是數(shù)字) cur = ‘n'; 
        x = top 對應(yīng)下標(biāo);
        y = cur 對應(yīng)下標(biāo); 
        動作 val = action[x][y]; 
        if(val == acc){ 
            輸出 acc;
            break;
        } 
        else if(val 為 shift){ 
            輸出 shift;
            當(dāng)前輸入符號 cur 壓入符號棧; 
            動作 val 壓入狀態(tài)棧; 
        } 
        else if(val 為 reduce){ 
            len = reduce 產(chǎn)生式右部長度;
            狀態(tài)棧和符號棧各彈出 len 個; 
            topS = 當(dāng)前狀態(tài)棧棧頂;
            curA = 產(chǎn)生式左部非終結(jié)符號; 
            x = topS 對應(yīng)下標(biāo);
            y = curA 對應(yīng)下標(biāo);
            curA 壓入符號棧;
            goto[x][y]壓入狀態(tài)棧;
            輸出 reduce 產(chǎn)生式; 
        } 
        else{ 
            error;
            break;
        } 
    }while(true);
} 

七、測試

在這里插入圖片描述

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

您可能感興趣的文章:

相關(guān)文章

  • C語言中dlopen和dlsym的使用方式詳解

    C語言中dlopen和dlsym的使用方式詳解

    這篇文章主要為大家詳細(xì)介紹了C語言中dlopen和dlsym的使用方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++ stringstream類用法詳解

    C++ stringstream類用法詳解

    這篇文章主要介紹了C++ stringstream類用法詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 基于C++編寫一個Json解析器

    基于C++編寫一個Json解析器

    這篇文章主要為大家詳細(xì)介紹了如何基于C++編寫一個Json解析器,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以了解一下
    2023-03-03
  • 深入理解C++的對象模型

    深入理解C++的對象模型

    本文在介紹C++使用的對象模型之前,先介紹了2種對象模型:簡單對象模型(a simple object model)和表格驅(qū)動對象模型(a table-driven object model),這樣介紹對后面的內(nèi)容更有幫助,有需要的小伙伴們可以參考學(xué)習(xí)。
    2016-08-08
  • Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)圖片轉(zhuǎn)pdf

    Qt數(shù)據(jù)庫應(yīng)用之實(shí)現(xiàn)圖片轉(zhuǎn)pdf

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實(shí)現(xiàn)圖片轉(zhuǎn)pdf功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定參考價值,需要的可以了解一下
    2022-06-06
  • C++的靜態(tài)聯(lián)編和動態(tài)聯(lián)編

    C++的靜態(tài)聯(lián)編和動態(tài)聯(lián)編

    本文闡述了靜態(tài)聯(lián)編和動態(tài)聯(lián)編的概念和區(qū)別,通過具體實(shí)例分析了實(shí)現(xiàn)動態(tài)聯(lián)編的條件,指出了虛函數(shù)是實(shí)現(xiàn)動態(tài)聯(lián)編的基礎(chǔ)。
    2016-03-03
  • C語言中的多行輸入問題及說明

    C語言中的多行輸入問題及說明

    這篇文章主要介紹了C語言中的多行輸入問題及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C語言簡單實(shí)現(xiàn)快速排序

    C語言簡單實(shí)現(xiàn)快速排序

    快速排序是一種不穩(wěn)定排序,這篇文章主要為大家詳細(xì)介紹了C語言簡單實(shí)現(xiàn)快速排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 詳解C/C++性能優(yōu)化背后的方法論TMAM

    詳解C/C++性能優(yōu)化背后的方法論TMAM

    開發(fā)過程中我們多少都會關(guān)注服務(wù)的性能,然而性能優(yōu)化是相對比較困難,往往需要多輪優(yōu)化、測試,屬于費(fèi)時費(fèi)力,有時候還未必有好的效果。但是如果有較好的性能優(yōu)化方法指導(dǎo)、工具輔助分析可以幫助我們快速發(fā)現(xiàn)性能瓶頸所在,針對性地進(jìn)行優(yōu)化,可以事半功倍
    2021-06-06
  • C++11 call_once 和 once_flag的使用與區(qū)別

    C++11 call_once 和 once_flag的使用與區(qū)別

    本文主要介紹了C++11 call_once 和 once_flag的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論

长春市| 宣汉县| 宜川县| 芜湖市| 方山县| 汝城县| 宜州市| 买车| 松潘县| 广昌县| 无棣县| 绥阳县| 永兴县| 麦盖提县| 武清区| 汝城县| 伊吾县| 盐源县| 衡阳市| 长宁区| 历史| 佛坪县| 买车| 青浦区| 青州市| 柯坪县| 天祝| 齐河县| 探索| 历史| 奈曼旗| 宣城市| 金堂县| 辽宁省| 荣昌县| 吉木乃县| 安化县| 西峡县| 泸定县| 平乡县| 吉木乃县|