- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析程序的实现代码以和分析.doc
实验一 词法分析程序的实现
一、
掌握程序设计语言的词法分析程序的手工实现方法。
二、
构造miniC语言的词法分析程序,程序要求能对输入的字符串流进行词法分析,并输出相应的单词。miniC语言的单词包括整数、标识符、分隔符、运算符和关键字,编制相应的词法分析程序。
三、
1.
标识符 ID = letter (letter|digit)*
letter = a | .. | z | A | .. | Z
digit = 0 | .. | 9
十进制整数 0 | (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*
运算符 + - * / = == = != =
分隔符 ( ) { } [ ];,
关键字 if else return int void while main
2. 单词的分类
可将所有标识符归为一类;将整数归为一类(或者每种进制的整数各为一类);运算符、关键字和分隔符则可采取一词一类。
3. 建立符号表
可事先建立一关键字表,以备在识别关键字时进行查询。变量名表及常数表则在词法分析过程中建立。
4. 程序的输出形式
所输出的每一单词,均按形如(TOKEN,VALUE)的二元式编码。对于变量标识符和常数,TOKEN字段为相应的类别码,VALUE字段则是该标识符、常数在其对应符号表中登记项的序号。
或者采用三元式(TYPE, TOKEN,VALUE),如下表:
5. int scan( ),完成以下功能:
1) )A:先写出各类单词的识别功能,即能对给定的单词识别出是不是标识符,关键字等。
B:之后把所有识别功能连接起来,能识别给出的字符串是哪个,打印提示(按二元式或三元式)
C:从文件里读取字符串功能。识别出文件里所有单词类型,暂不考虑出错情况。
D:设计符号表的数据结构,把识别到的标识符加入到符号表中。
6.给出一个测试程序,调用函数scan( ),输出单词种别和属性。比如测试程序如下:
void main()
{
int a, b;
b =a*2;
}
四、
1) 词法的正规式描述
2) 画出状态转换图
3)单词定义说明) 词法分析程序使用的数据结构和主要算法说明。
5)测试程序及其词法分析结果的显示。
#includestdio.h
#includestring.h
#includeiostream.h
char prog[80],token[8];
char ch;
int syn,p,m=0,n,row,sum=0;
char *rwtab[6]={begin,if,then,while,do,end};
void scaner()
{
/*
共分为三大块,分别是标示符、数字、符号,对应下面的 if else if 和 else
*/
for(n=0;n8;n++) token[n]=NULL;
ch=prog[p++];
while(ch== )
{
ch=prog[p];
p++;
}
if((ch=ach=z)||(ch=Ach=Z)) //可能是标示符或者变量名
{
m=0;
while((ch=0ch=9)||(ch=ach=z)||(ch=Ach=Z))
{
token[m++]=ch;
ch=prog[p++];
}
token[m++]=\0;
p--;
syn=10;
for(n=0;n6;n++) //将识别出来的字符和已定义的标示符作比较,
if(strcmp(token,rwtab[n])==0)
{
syn=n+1;
break;
}
}
else if((ch=0ch=9)) //数字
{
{
sum=0;
while((ch=0ch=9))
{
sum=sum*10+ch-0;
ch=prog[p++]
您可能关注的文档
- 讲解手机充电宝工作效率.doc
- 论《红楼梦》的饮食文化.doc
- 论城市固体废弃物资源化的途径与措施.doc
- 论宝玉葬花背后的价值.doc
- 论私募股权投资基金的积极作用和风险.doc
- 论述类文本阅读阶段性测试7.doc
- 设备位号编号规则和含义!.doc
- 设备保养和评分标准.doc
- 试述浙江旅游资源的开发和利用.doc
- 详细破析OSPF路由协议.doc
- 潍坊潍城区基础夯实七年级数学冲刺中考衔接真题卷及解析.docx
- 哈尔滨南岗区七年级数学决胜同步练习中考衔接卷及解析.docx
- 福州马尾区七年级数学易错题快速中考衔接基础巩固卷及解析.docx
- 黄石铁山区中考导向七年级数学真题基础巩固达标训练册及解析.docx
- 广州番禺区七年级数学月考思维进阶中考衔接真题卷及解析.docx
- 菏泽定陶区能力跃迁七年级数学精练同步练习中考衔接卷及解析.docx
- 桂林雁山区七年级数学高分易错清零易错辨析培优拔高卷及解析.docx
- 武汉汉阳区七年级数学衔接精准阶段检测冲刺卷及解析.docx
- 汕头龙湖区名师推荐七年级数学期末综合训练达标卷及解析.docx
- 石家庄长安区七年级数学衔接思维拓展综合检测卷及解析.docx
最近下载
- 标准图集-陕09J01-建筑用料及做法.pdf VIP
- 2025年江苏省事业单位综合知识与能力素质(经济统计类)模拟试卷.docx VIP
- 2025年度民主生活会五个带头个人对照检查(含典型案例剖析).docx VIP
- HY_T 0366-2023 海洋数据分类分级标准.docx VIP
- 泵站施工管理工作报告.doc VIP
- ai办公软件培训课件.ppt VIP
- 浙江省杭州市萧山区2024-2025学年八年级上学期期末考试英语试卷(含答案,无听力音频及原文).docx VIP
- 《卵巢囊肿医学》课件.ppt VIP
- 城市建筑群基于弹塑性时程分析的震害评估标准.docx VIP
- 【教学创新大赛】《运动解剖学》教学创新成果报告.pdf VIP
原创力文档


文档评论(0)