本**實現的文法是這樣的
g[e]:
e→e+t| t
t→t*f|f
f→(e ) | i
因為包含左遞迴,故需要消去之後才能做。
設計理念:通過遞迴下降的方式來對句子進行分析。
若能夠接收乙個完全的初始字元並且所有的串全部被讀入,則算作
accepted。
否則為wrong。
使用說明:
首先輸入需要分析的樣例個數,再依次輸入待分析的句子即可。
**如下:
#include#include#includeusing namespace std;
const int n = 10005;
char buffer[n];
int tail;
bool e();
bool a();
bool t();
bool b();
bool f();
void init()
void solve()
int main()
bool e()/*}}}*/
bool a()
else ok = 1;
return ok;
}/*}}}*/
bool t()/*}}}*/
bool b()
else ok = 1;
return ok;
}/*}}}*/
bool f()
else if(buffer[tail] == 'i')
else ok = 0;
return ok;
}/*}}}*/
/*10
i+(i+i*i)
i+ii+i+i+i
i+i*i*i
i++++
iiii+i+(i+i)
c+ic
i+i+
*/
編譯原理實驗三 語法分析(遞迴下降法)
實驗任務 完成以下描述算術表示式的ll 1 文法的遞迴下降分析程式 g e e te e ate t ft t mft f e i a m 說明 終結符號i為使用者定義的簡單變數,即識別符號的定義。設計要求 1 輸入串應是詞法分析的輸出二元式序列,即某算術表示式 實驗專案一 的輸出結果。輸出為輸入串...
編譯原理 實驗2 遞迴下降語法分析程式設計
實驗要求 1 待分析的簡單語言的詞法同實驗1 2 待分析的簡單語言的語法 用擴充的bnf表示如下 1 程式 begin 語句串 end 2 語句串 語句 3 語句 賦值語句 4 賦值語句 id 表示式 5 表示式 項 6 項 因子 7 因子 id num 表示式 3 語法分析程式的功能 輸入單詞串以...
編譯原理實驗(三) 遞迴下降子程式
對文法中的每個非終結符 語法成分 編寫乙個子程式,而子程式的 結構由相應非終結符的產生式右部所決定 文法 g e e e t t t t f f f e i 消除左遞迴 g e e te e te t ft t ft f e i 可以通過g e 文法構造遞迴下降分析器 文法g e 無左遞迴,e t ...