編譯原理實驗2 遞迴下降分析 表示式求值

2021-08-02 14:06:12 字數 1166 閱讀 8508

這是源位址,個人並沒有做太大改動,於是就不寫原創。

寫編譯原理實驗的時候,當寫到

expression->term|expression+term|expression-term  

term->factor|term*factor|term/factor  

factor->(expression)| number 

這裡的時候,由於不能正確解析expression、term 與factor苦惱了半天。(老師就講了個大概,根本不能直接使用啊!!!!!雖然老師很漂亮)

這裡原作者進行了語法改動。

e->te2  

e2->+te2 | -te2 | ε  

t->*ft2  

t2->*ft2 | /ft2 |ε  

f->(e) | i  

將後面的視為同級,極大地方便了編碼。這裡在編譯原理中使用的方法叫做利用右遞迴消除左遞迴的方法。極大地方便了編碼。

版本1:

原作者的編碼我只是進行了小的改動能識別多位數

#include#include#includeusing namespace std;

char expr[1010];

int start=0;

string t();

string t2();

string f();

string e2();

string f2();

string e()

string e2() }

string t()

string t2() }

string f()

return f2();

} int min(int a,int b)

string e2() }

string t()

string t2() }

string f()

return f2();

} int min(int a,int b)

return true;

}void ans()

else

else

else if(va.size()==0)

else if(va.size()==0)

{cout<<"error"<>key;

//cout<

編譯原理實驗3 遞迴下降分析

本 實現的文法是這樣的 g e e e t t t t f f f e i 因為包含左遞迴,故需要消去之後才能做。設計理念 通過遞迴下降的方式來對句子進行分析。若能夠接收乙個完全的初始字元並且所有的串全部被讀入,則算作 accepted。否則為wrong。使用說明 首先輸入需要分析的樣例個數,再依次...

編譯原理 實驗2 遞迴下降語法分析程式設計

實驗要求 1 待分析的簡單語言的詞法同實驗1 2 待分析的簡單語言的語法 用擴充的bnf表示如下 1 程式 begin 語句串 end 2 語句串 語句 3 語句 賦值語句 4 賦值語句 id 表示式 5 表示式 項 6 項 因子 7 因子 id num 表示式 3 語法分析程式的功能 輸入單詞串以...

編譯原理實驗三 語法分析(遞迴下降法)

實驗任務 完成以下描述算術表示式的ll 1 文法的遞迴下降分析程式 g e e te e ate t ft t mft f e i a m 說明 終結符號i為使用者定義的簡單變數,即識別符號的定義。設計要求 1 輸入串應是詞法分析的輸出二元式序列,即某算術表示式 實驗專案一 的輸出結果。輸出為輸入串...