编译原理词法分析程序设计实验报告Word下载.docx
- 文档编号:18282227
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:15
- 大小:172.29KB
编译原理词法分析程序设计实验报告Word下载.docx
《编译原理词法分析程序设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《编译原理词法分析程序设计实验报告Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
=int<
}
=’{’[<
;
]<
语句序列>
’}’
语句>
|<
赋值语句>
条件语句>
循环语句>
函数调用语句>
表达式>
=[+|-]<
项>
加法运算符>
因子>
乘法运算符>
无符号整数>
=+|-
=*|/
=if<
条件>
’{’<
’}’[else’{’<
’}’]
关系运算符>
===|!
=|>
|>
=|<
=
=for’(’<
’)’’{’<
}|<
空>
’)’
字母>
数字>
=a|b|c|…|X|Y|Z
=0|1|2|…|8|9
单词分类情况
关键字:
intifelsefor
标识符:
以字母开头的字母和数字的组合
关系运算符:
==|!
=
加法运算符:
+|-
乘法运算符:
*|/界符:
,;
{}()
2.设计单词的输出形式,单词的种类和值的表示方法
种别码单词值
如:
1int
3.编写词法分析程序cffx.c
实现基本的词法分析器,能够分析关键字、标识符、数字、运算符(需要有“==”或“:
=”之类需要超前搜索的运算符)以及其他一些符号。
//编译原理词法分析程序.cpp
#include<
stdio.h>
stdlib.h>
string.h>
typedefstructwords
{
intid;
charname[20];
charvalue[20];
}word;
charinteger[20]={'
i'
'
n'
t'
};
chariff[20]={'
f'
charelsee[20]={'
e'
l'
s'
charforr[20]={'
o'
r'
intmain()
charcode[10000];
charwords[20],ch;
inti,j,p,count,n,m;
intk=0;
wordsymbol[500];
printf("
种别码:
1类别:
关键字int\n"
);
2类别:
关键字if\n"
3类别:
关键字else\n"
4类别:
关键字for\n"
5类别:
标识符\n"
6类别:
计算运算符\n"
7类别:
关系运算符\n"
8类别:
界符\n"
while
(1)
{
gets(code);
n=strlen(code);
for(m=0,j=0;
m<
n;
m++)
{
if((code[m]>
='
a'
&
code[m]<
z'
)||(code[m]>
0'
9'
))
words[j]=code[m];
j++;
}
else
if(words[0]=='
words[1]=='
words[2]=='
words[3]=='
\0'
)
{
symbol[k].id=1;
for(i=0;
i<
20;
i++)
{
symbol[k].value[i]=words[i];
}
k++;
}
elseif(words[0]=='
symbol[k].id=2;
symbol[k].value[i]=iff[i];
words[4]=='
symbol[k].id=3;
symbol[k].value[i]=elsee[i];
symbol[k].id=4;
symbol[k].value[i]=forr[i];
else
symbol[k].id=5;
for(p=0;
p<
p++)
words[p]=0;
j=0;
if(code[m]=='
+'
symbol[k].id=6;
symbol[k].value[0]='
for(i=1;
symbol[k].value[i]=0;
-'
*'
/'
code[m+1]!
code[m+1]=='
symbol[k].id=7;
symbol[k].value[1]='
for(i=2;
m++;
!
'
>
symbol[k].id=8;
('
)'
{'
}'
count=k;
system("
cls"
for(i=0;
count;
printf("
%d"
symbol[i].id);
%s\n"
symbol[i].value);
}
return0;
}
4.生成并输出单词符号表
识别单词的状态转换图:
5.流程图
6.源程序清单
inta,b,c;
a=b+c;
7.测试结果
8.实验心得:
此次实验让我了解了如何设计、编制并调试词法分析程序,并加深了我对词法分析器原理的理解;
熟悉了直接构造词法分析器的方法和相关原理,并学会使用c语言直接编写词法分析器;
同时更熟练的掌握用c语言编写程序,实现一定的实际功能。
通过本次实验,使我更深层次的掌握了词法分析。
从刚开始的无从下手到后来渐渐的突破了各个难关,虽然花了大量的时间和精力,但在我看来这绝对是值得的。
起码让我明白了,光有理论是苍白无力的,我们必须将他附注于实践才能升华。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 词法 分析 程序设计 实验 报告