資源簡介
編譯原理 for 條件語句,while 語句的翻譯及各種地質輸出,大家慢慢找

代碼片段和文件信息
#include“expression.h“
using?namespace?std;
//--------------變量定義------------------------
int?predicateTable[7][11]=//預測分析表
{
{12000000000}
{014403000000}
{00050000000}
{00000060000}
{00000700000}
{0000000118910}
{1300012000000}
};
typedef?struct?Formula//產生式的結構體
{
string?leftsec;
string*rightsec;
int?rightnum;
}Form;
Formula?formula[15];//定義產生式
//----------------函數定義---------------
void?InitFormula()//初始化產生式
{
formula[1].leftsec=“S“;
formula[1].rightsec=new?string?[5];
formula[1].rightsec[0]=“do“;
formula[1].rightsec[1]=“T“;
formula[1].rightsec[2]=“while“;
formula[1].rightsec[3]=“E“;
formula[1].rightsec[4]=“K“;
formula[1].rightnum=5;
formula[2].leftsec=“S“;
formula[2].rightsec=new?string?[2];
formula[2].rightsec[0]=“ndo“;
formula[2].rightsec[1]=“D“;//and?do?pre?ndo
formula[2].rightnum=2;
formula[3].leftsec=“K“;
formula[3].rightsec=new?string?[1];
formula[3].rightsec[0]=“}“;
formula[3].rightnum=1;
formula[4].leftsec=“K“;
string?*?temp=new?string(““);
formula[4].rightsec=temp;
formula[4].rightnum=0;
formula[5].leftsec=“T“;
formula[5].rightsec=new?string?[2];
formula[5].rightsec[0]=“{“;
formula[5].rightsec[1]=“S“;
formula[5].rightnum=2;
formula[6].leftsec=“E“;
formula[6].rightsec=new?string?[5];
formula[6].rightsec[0]=“(“;
formula[6].rightsec[1]=“A“;
formula[6].rightsec[2]=“op“;
formula[6].rightsec[3]=“A“;
formula[6].rightsec[4]=“)“;
formula[6].rightnum=5;
formula[7].leftsec=“A“;
formula[7].rightsec=new?string?[1];
formula[7].rightsec[0]=“i“;
formula[7].rightnum=1;
formula[8].leftsec=“op“;
formula[8].rightsec=new?string?[1];
formula[8].rightsec[0]=“<“;
formula[8].rightnum=1;
formula[9].leftsec=“op“;
formula[9].rightsec=new?string?[1];
formula[9].rightsec[0]=“>“;
formula[9].rightnum=1;
formula[10].leftsec=“op“;
formula[10].rightsec=new?string?[1];
formula[10].rightsec[0]=“==“;
formula[10].rightnum=1;
formula[11].leftsec=“op“;
formula[11].rightsec=new?string?[1];
formula[11].rightsec[0]=“<=“;
formula[11].rightnum=1;
formula[12].leftsec=“D“;
formula[12].rightnum=1;
formula[12].rightsec=new?string?[1];
formula[12].rightsec[0]=“}“;
formula[13].leftsec=“D“;
formula[13].rightnum=1;
formula[13].rightsec=new?string?[1];
formula[13].rightsec[0]=“S“;
formula[14].leftsec=“K“;
formula[14].rightnum=2;
formula[14].rightsec=new?string?[2];
formula[14].rightsec[0]=“ndo“;
formula[14].rightsec[1]=“}“;
};
void?ClearVar()//清空全局變量
{
for(int?i=0;i<50;i++)
sstack[i]=““;
sorcecode.clear();
while(!sStack.empty())
sStack.pop();
index=‘0‘;
}
int?retX(string?&x)//定位產生式輔助函數
{
if(x==“S“)
return?0;
else?if(x==“K“)
return?1;
else?if(x==“T“)
return?2;
else?if(x==“E“)
return?3;
else?if(x==“A“)
return?4;
else?if(x==“op“)
return?5;
else?if(x==“D“)
return?6;
else?//error
return?-1;
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????82944??2009-06-21?21:11??詞法分析\Debug\vc60.idb
?????文件?????110592??2009-06-21?21:11??詞法分析\Debug\vc60.pdb
?????文件?????602192??2009-06-21?21:11??詞法分析\Debug\詞法分析.exe
?????文件?????829592??2009-06-21?21:11??詞法分析\Debug\詞法分析.ilk
?????文件?????377509??2009-06-21?21:11??詞法分析\Debug\詞法分析.obj
?????文件????2009656??2009-05-01?02:43??詞法分析\Debug\詞法分析.pch
?????文件????1139712??2009-06-21?21:11??詞法分析\Debug\詞法分析.pdb
?????文件???????4096??2009-06-18?22:25??詞法分析\Debug\詞法分析.suo
?????文件????????102??2009-06-21?17:37??詞法分析\inputword.txt
?????文件????????341??2009-06-21?21:11??詞法分析\outputword.txt
?????文件??????43376??2009-06-21?21:10??詞法分析\詞法分析.cpp
?????文件???????3427??2009-06-21?21:11??詞法分析\詞法分析.dsp
?????文件????????541??2009-06-21?21:12??詞法分析\詞法分析.dsw
?????文件??????50176??2009-06-21?21:12??詞法分析\詞法分析.ncb
?????文件??????48640??2009-06-21?21:12??詞法分析\詞法分析.opt
?????文件????????702??2009-06-21?21:11??詞法分析\詞法分析.plg
?????目錄??????????0??2009-06-21?21:11??詞法分析\Debug
?????目錄??????????0??2009-06-21?21:12??詞法分析
-----------?---------??----------?-----??----
??????????????5303598????????????????????18
- 上一篇:C8051F全系列代碼例程
- 下一篇:Opengles2.0地球
評論
共有 條評論