词法分析程序源代码C++版本编译原理实验Word文件下载.docx
- 文档编号:5768995
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:16
- 大小:17.09KB
词法分析程序源代码C++版本编译原理实验Word文件下载.docx
《词法分析程序源代码C++版本编译原理实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《词法分析程序源代码C++版本编译原理实验Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。
cin>
>
choose;
if(choose==1)
{
cout<
请输入程序段:
以#结束:
KeyFunction();
}
if(choose==2)
ReadTxt();
}
voidKeyFunction()
{
inti=0,j,k=0,state=1,f=0,linenum=1;
chara[12][10]={"
const"
"
var"
call"
begin"
if"
while"
do"
odd"
end"
then"
procedure"
int"
};
charb,d[40]={"
\0"
b=getchar();
while(b!
='
#'
)/*判断所输入字符是否为结束符*/
if(b=='
'
||b=='
\n'
\t'
)/*滤过空格、换行等分隔符号*/
{
if(b='
)linenum++;
b=getchar();
}
elseif((b>
a'
&
b<
z'
)||(b>
A'
Z'
))/*识别标识符以及保留字*/
{
d[i++]=b;
while((b>
0'
9'
))
{
}
for(j=0;
j<
12;
j++)/*查询保留字表确定该单词是否是保留字*/
if(strcmp(d,a[j])==0)
{
cout<
关键字"
d<
k=1;
break;
}
if(k==0)/*在保留字表中没有查到该单词,是标识符*/
标识符"
;
=i;
j++)
d[j]='
\0'
i=0;
k=0;
elseif(b>
)/*识别常数*/
while(f!
=1)
{
switch(state){
case1:
if(b>
)
{
state=1;
d[i++]=b;
b=getchar();
}
elseif(b=='
.'
){state=2;
d[i++]=b;
b=getchar();
E'
){state=4;
elsestate=7;
break;
case2:
state=3;
elsestate=8;
break;
case3:
){
case4:
+'
-'
){state=5;
elseif(b>
){state=6;
case5:
case6:
case7:
f=1;
break;
case8:
if(state==7&
(b<
'
||b>
)&
数字"
elseif(state==7&
(b>
))/*数字后接字母的出错控制*/
while((b>
b=getchar();
errorline!
elsecout<
for(j=0;
i=0;
f=0;
)/*识别'
、'
和'
d[i++]=b;
if(b=='
cout<
运算符"
i=0;
else
:
{
符号"
elsecout<
for(j=0;
d[j]='
*'
/'
)/*识别运算符*/
elseif(b=='
('
)'
'
)/*识别分隔符*/
分隔符"
else
voidReadTxt()
ifstreamout;
out.open("
program.txt"
);
b=out.get();
b=out.get();
b=out.get();
b=out.get();
b=out.get();
else
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
out.close();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 程序 源代码 C+ 版本 编译 原理 实验