91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 509KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2022-04-21
  • 語言: 其他
  • 標(biāo)簽: 詞法分析??

資源簡(jiǎn)介

編譯原理課程設(shè)計(jì),包括詞法分析,語法分析,語義代碼生成等。

資源截圖

代碼片段和文件信息

#include?
#include????
#include????
#include
#include?//用于int?轉(zhuǎn)?string
#include
#include
#include??
using?namespace?std;

/********************************?詞法分析程序********************************/
char?*verse[14]={“int““char““float““void““const““for““if““else““then“
?“while““switch““break““begin““end“};??//保留字(關(guān)鍵字表)
char?flagd[9]={‘+‘‘-‘‘*‘‘/‘‘%‘‘<‘‘>‘‘!‘‘=‘};???//?需要檢查后面是否出現(xiàn)‘=’
char?flags[10]={‘}‘‘{‘‘[‘‘]‘‘(‘‘)‘‘‘‘;‘‘:‘‘“‘};?//??‘||’?與‘&&’?單獨(dú)判斷(對(duì)各種符號(hào)的判斷--包括標(biāo)點(diǎn)符號(hào))
bool?isFlagd(char?c)//需要二次判斷的界符
{
for(int?i=0;i<9;i++)
{
if(flagd[i]==c)
return?true;
????
}
return?false;
}
bool?isFlags(char?c)//需要一次判斷即可確定的界符
{
for(int?i=0;i<10;i++)
{
if(flags[i]==c)
return?true;
}
?return?false;
}
bool?isDigital(char?ch)???//判斷是否為數(shù)字
{
if(ch<=‘9‘?&&?ch?>=‘0‘)
return?true;
else
return?false;
}
bool?isAlphabet(char?ch)//判斷是否是字母
{
if(ch<=‘Z‘?&&?ch?>=‘A‘?||?ch<=‘z‘?&&?ch>=‘a(chǎn)‘)
return?true;
else
return?false;
}
bool?isSpace(char?ch)?//判斷是否為空白符(空格、回車、制表符等)是則返回true,否則返回false?
{
if(ch==‘?‘||?ch==‘\r‘?||?ch==‘\t‘)?
return?true;?
????else
return?false;?
}?
void?getCh(fstream?*fpchar?*ch)?/*讀取字符送ch*/?
{????
(*fp).read(chsizeof(char));?
}?
void?getC(fstream?*fpchar?*ch)?/*如果是空白則繼續(xù)讀下一個(gè),直到不是空白*/?
{???????????????????????
do?
{
getCh(fpch);
}while(isSpace(*ch)&&(*ch?!=?EOF));?
}?//即忽略空白符
bool?isReverse(string?str)?//是否為關(guān)鍵字
{
for(int?i=0;i<14;i++)
{
if(verse[i]?==str)
return?true;
}
return?false;
}
void?reTract(fstream?*fpchar?*ch)?/*光標(biāo)回退一位并使?ch?為空*/
{
(*fp).seekg(-1ios::cur);?
*ch?=?‘?‘;?
}?

typedef?struct?vess??//定義結(jié)構(gòu):二元式表(單詞,內(nèi)碼值)
{
string?v; ???//?單詞
string??code;??//?內(nèi)碼值
}ves;

typedef?struct?charSet?//符號(hào)表結(jié)構(gòu)體定義
{
int?num;//標(biāo)示符在符號(hào)表中的位置
string?name;
string?type;
}chSet;

typedef?struct?varConst?//常量表結(jié)構(gòu)體定義
{
int?num;
string?value;
}varCon;

int?isExisted(list?Lstring??str)
//判斷符號(hào)表的鏈表中是否已經(jīng)存在str存在返回入口地址,即?L.num,否則返回-1;
{
list::iterator?Iter;
for?(Iter?=?L.begin();Iter!=?L.end(?);Iter++)??
{
if((*Iter).name==str)
return?(*Iter).num;
}
return?-1;
}
int?isExisted(list?Lstring??str)?
//判斷常量表的鏈表中是否已經(jīng)存在str存在返回入口地址,即?L.num,否則返回-1;
{
list::iterator?Iter;
for?(Iter?=?L.begin();Iter!=?L.end(?);Iter++)??
if((*Iter).value==str)
return?(*Iter).num;
return?-1;
}
void?function_word(list?*revlist?*identifierlist?*constent)//詞法分析函數(shù)?
{
char?ch;
????string?buffer=““;??
ves?r;?????????//二元式結(jié)構(gòu)體
chSet?id;?????//標(biāo)示符結(jié)構(gòu)體
varCon?con;??//常量結(jié)構(gòu)體
char?filename[30];??
fstream?f;
????int?n=0; ????//記錄程序行數(shù)
stack?s;??//保存行數(shù)
cout<<“請(qǐng)您輸入文件路徑:“< cin>>filename;
f.open(filenameios::in|ios::binary);
if(!f)
{
cout<<“File?could?not?be?open!“< exit(0);
//abort();
}
f.seekg(0ios::end);????//將指針移動(dòng)到文件末尾
long?

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件??????19266??2010-06-15?20:39??編譯原理?楊敬宗--B07523--11號(hào)\Compiling.cpp

?????文件?????338378??2010-06-15?20:21??編譯原理?楊敬宗--B07523--11號(hào)\編譯原理.pptx

?????文件?????201771??2010-06-24?22:04??編譯原理?楊敬宗--B07523--11號(hào)\課程設(shè)計(jì)報(bào)告--終結(jié)版.docx

?????目錄??????????0??2010-11-22?22:31??編譯原理?楊敬宗--B07523--11號(hào)

-----------?---------??----------?-----??----

???????????????559415????????????????????4


評(píng)論

共有 條評(píng)論

相關(guān)資源