資源簡介
編寫語法分析程序,實現(xiàn)對算術(shù)表達式的語法分析,要求所分析的算術(shù)表達式由如下的文法產(chǎn)生。 E->E+T|E-T|T T->T*F|T/F|F F->id|(E)|num
代碼片段和文件信息
#include
#include
#include
#include?
using?namespace?std;
stack?s;???????????????????????????????????????????//棧?
char?terminal[9]={‘+‘‘-‘‘*‘‘/‘‘(‘‘)‘‘i‘‘n‘‘$‘};??//終結(jié)符表?
char?unterminal[5]={‘E‘‘P‘‘T‘‘Q‘‘F‘};????????????????//非終結(jié)符表?P代表E‘,Q代表F‘?
string?M[5][9]={?????????????????????????????????????????//手動構(gòu)造LL(1)語法預(yù)測分析表??
?????“““““““““TP““““TP““TP“““
?????“+TP““-TP““““““““e““““““e“
?????“““““““““FQ““““FQ““FQ“““
?????“e““e““*FQ““/FQ““““e““““““e“
?????“““““““““(E)““““i““n“““
?????};
char?str[30];???????????????????????//待分析的輸入表達式
int?len;????????????????????????????//待分析的輸入表達式的長度?
void?Get_str(void)??????????????????//獲取待分析輸入表達式?
{?
????printf(“請輸入待分析的表達式:“);
????scanf(“%s“&str);
????
????for(len=0;str[len]!=‘\0‘;len++);
????str[len]=‘$‘;
????str[len+1]=‘\0‘;
????len++;
????s.push(‘$‘);
????s.push(‘E‘);
????}
int?Judge_id(char?ch)??//判斷字符是否為構(gòu)成id的字母
{
????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6490??2013-11-26?23:03??北郵編譯原理實驗--語法分析\方法2.cpp
?????文件?????529572??2013-12-16?23:12??北郵編譯原理實驗--語法分析\方法2.exe
?????文件???????6512??2013-11-26?23:02??北郵編譯原理實驗--語法分析\方法3.cpp
?????文件?????523130??2013-12-17?00:22??北郵編譯原理實驗--語法分析\方法3.exe
?????文件?????553886??2013-11-26?23:07??北郵編譯原理實驗--語法分析\語法分析程序文檔.docx
?????目錄??????????0??2014-06-24?15:35??北郵編譯原理實驗--語法分析
-----------?---------??----------?-----??----
??????????????1619590????????????????????6
- 上一篇:MA模型的建立
- 下一篇:點陣程序HUB12單屏接口分辨率16*32
評論
共有 條評論