這是源位址,個人並沒有做太大改動,於是就不寫原創。
寫編譯原理實驗的時候,當寫到
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 輸入串應是詞法分析的輸出二元式序列,即某算術表示式 實驗專案一 的輸出結果。輸出為輸入串...