-
大小: 7KB文件類型: .cpp金幣: 1下載: 1 次發(fā)布日期: 2021-07-26
- 語言: C/C++
- 標(biāo)簽: c++版??編譯原理??課程設(shè)計(jì)??實(shí)驗(yàn)??
資源簡介
詞法分析器(c++版)
詞法分析程序,能識別出所有的關(guān)鍵字、標(biāo)識符、常數(shù)、運(yùn)算符(包括復(fù)合運(yùn)算符,如++)、界符;能過濾掉源程序中的注釋、空格、制表符、換行符等等
代碼片段和文件信息
#include??
#include??
using?namespace?std;?
bool?jiancha_int(int?iint?jchar?s[100])?
{?
?????if((j-i)==2)?
?{?
????????if(s[i]==‘i‘)?
{??
???????????i++;?
???????????if(s[i]==‘n‘)?
???{?
??????????????i++;?
??????????????if(s[i]==‘t‘)?
??{?
?????????????????cout<<“int是一個關(guān)鍵字“< ?????????????????return?true;?
??}?
??????????????else?
??return?false;?
???}?
???????????else
???return?false;?
}?
????????else
return?false;?
?}?
?????else
?return?false;?
}?
bool?jiancha_if(int?iint?jchar?s[100])?
{?
???if((j-i)==1)?
???{?
??????if(s[i]==‘i‘)?
??{?
?????????i++;?
?????????if(s[i]==‘f‘)?
?{?
cout<<“if是一個關(guān)鍵字“< return?true;?
?}?
?else
?return?false;?
??}?
??????else
??return?false;?
???}?
???else
???return?false;?
}?
bool?jiancha_else(int?iint?jchar?s[100])?
{?
if((j-i)==3)?
{?
if(s[i]==‘e‘)?
{?
i++;?
if(s[i]==‘l‘)?
{?
i++;?
if(s[i]==‘s‘)?
{?
i++;?
if(s[i]==‘e‘)?
{?
cout<<“else是一個關(guān)鍵字“< return?true;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
bool?jiancha_void(int?iint?jchar?s[100])?
{?
if((j-i)==3)?
{?
if(s[i]==‘v‘)?
{?
i++;?
if(s[i]==‘o‘)?
{?
i++;?
if(s[i]==‘i‘)?
{?
i++;?
if(s[i]==‘d‘)?
{?
cout<<“void是一個關(guān)鍵字“< return?true;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
bool?jiancha_while(int?iint?jchar?s[100])?
{?
if((j-i)==4)?
{?
if(s[i]==‘w‘)?
{?
i++;?
if(s[i]==‘h‘)?
{?
i++;?
if(s[i]==‘i‘)?
{?
i++;?
if(s[i]==‘l‘)?
{?
i++;?
if(s[i]==‘e‘)?
{?
cout<<“while是一個關(guān)鍵字“< return?true;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
else?return?false;?
}?
char?numb[10]={‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};?
char?letter[53]={‘a(chǎn)‘‘b‘‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘‘_‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘};?
char?digit[63]={‘a(chǎn)‘‘b‘‘c‘‘d‘‘e‘‘f‘‘g‘‘h‘‘i‘‘j‘‘k‘‘l‘‘m‘‘n‘‘o‘‘p‘‘q‘‘r‘‘s‘‘t‘‘u‘‘v‘‘w‘‘x‘‘y‘‘z‘‘_‘‘A‘‘B‘‘C‘‘D‘‘E‘‘F‘‘G‘‘H‘‘I‘‘J‘‘K‘‘L‘‘M‘‘N‘‘O‘‘P‘‘Q‘‘R‘‘S‘‘T‘‘U‘‘V‘‘W‘‘X‘‘Y‘‘Z‘‘0‘‘1‘‘2‘‘3‘‘4‘‘5‘‘6‘‘7‘‘8‘‘9‘};?
bool?Identifier(int?xint?ychar?s[100])?
{?
int?ia=xb=yn=0m=1c=0a1=xb1=ym1=0n1=1;;?
int?p[1024];?
for(i=0;i<1024;i++)?
p[i]=0;?
for(i=0;i<53;i++)?
{?
if(s[x]==letter[i])?
{n=1;}?
}?
if(n==1)?
{}?
else?
{?
int?P[1024];?
for(i=0;i<1024;i++)?
{?
P[i]=0;?
}?
while(x {?
for(i=0;i<10;i++)?
{?
if(s[x]==numb[i])?
{?
P[m1]=1;?
}?
}?
x++;?
m1++;?
}?
for(i=0;i {?
if(P[i]==0)?
{n1=0;}?
}?
if(n1==1)?
{?
for(i=a;i<=b;i++)?
cout<cou
評論
共有 條評論