- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
词法分析实验报告
一、实验目的与要求:
1、了解字符串编码组成的词的内涵,感觉一下字符串编码的方法和解读
2、了解和掌握自动机理论和正规式理论在词法分析程序和控制理论中的应用
二、实验内容:
构造一个自己设计的小语言的词法分析器:1、这个小语言能说明一些简单的变量
识别诸如begin,end,if,while等保留字;识别非保留字的一般标识符(有下划线、字符、数字,且第一个字符不能是数字)。识别数字序列(整数和小数);识别:=,=,=之类的特殊符号以及;,(,)等界符。
2、相关过程(函数):
Scanner()词法扫描程序,提取标识符并填入display表中3、这个小语言有顺序结构的语句
4、这个小语言能表达分支结构的语句
5、这个小语言能够输出结果
总之这个小语言词法分析器能提供以上所说明到的语法描述的功能……
三、实验步骤:
1、测试评价
、测试1:能说明一些简单的变量,如关键字、一般标识符、界符等;
、测试2:能输出结果:单词符号(内码形式)、各种信息表(如符号表、常量表等);
、测试程序:varx,y,z;begin
x:=2;
y:=3;
if(x+5=y*y)thenbegin
z:=y*y-x;z:=z+x*x;
endelse
z:=x+y;prnz;
end.
、结果:
①、从键盘读入;
部分结果如下:
(类型:该标识符所属的类型,如关键字,变量等;下标:该标识符所对应表(如变量标识符表,常量标识符表等)中其相应的位置,下同)
②、从文件读入,输出到文件;
部分结果如下:
其他测试及结果如下:
③、出错处理;
注:若有错误,则只指出错误,不输出各个表;
、评价:
这个小语言程序基本上能完成词法分析阶段的工作,识别诸如begin,if等保留字;识别非保留字的一般标识符(有下划线、字符、数字,且第一个字符不能是数字)。识别数字序列(整数和小数);识别:=,=,=之类的特殊符号以及;,(,)等界符。在扫描源程序串的同时,能进行一些简单的处理,如删除空格、tab、换行等无效字符,也进行了一些基本的错误处理,如变量长度的判别等。
遇到的问题:(a)、判别标识符超过规定长度(20)时,未输出处理结果;(b)、整数长度过长输出结果仍为整数类型3;(c)、对于小数如﹒045,被解释为界符和整数;(d)、对以数字开头的一般标识符的处理,如100nuts被解释为整数类型和标识符,未给出错误提示。
如上测试,出现前两个问题时已报错并输出所在行,而后两个问题待解决。
2、对小语言的词法规则(正规式)画出一个确定的有限自动机(见附录2、3)
四、实验的源代码:(见附录1)
五、实验中发现的问题和遇到的困难及解决方法:
由于以前未曾接触过编译原理,在该实验的设计中,的确遇到一定的困难。主要是display表结构的设计,由于语法分析和语义分析还未学习,无法站在全局的角度统筹兼顾,在表结构设计时,不知该往表结构体中添加哪些内容,可以为后续的工作做铺垫,这是刚开始就遇到的最大的困难,也是最难的。
经过分析,我们在现有局限性的基础上,设计出一种折中的表结构,即在表结构中只添加标识符在其相应表中的对应下表,标记符类型码等关键的几处,这样既能唯一确定一标识符,达到该实验的要求,同时又为表保留了很好的扩充性,以达到后续实验的要求。表结构设计好后,其余的工作就是提取字符串和写入display表,在提取单字符还是双字符组成的运算符时有些麻烦,不过利用数据结构的相关知识也是容易做到。
六、总结:
词法分析是构造编译器的起始阶段,也是相应比较简单的一个环节。词法分析的主要任务是:根据构造的状态转换图,从左到右逐个字符地対源程序进行扫描,识别开源程序中具有独立含义的最小语法单位——符号或单词,如变量标识符,关键字,常量,运算符,界符等。
然后将提取出的标识符以内码的形式表示,即用 int类型的数字来表示其类型和在display表中的位置,而无须保留原来标识符本身的字符串,这不仅节省了内存空间,也有利于下一阶段的分析工作。
当然,在扫描源程序串的同时,进行一些简单的处理,如删除空格、tab、换行等无效字符,也进行了一些基本的错误处理,如变量长度的判别,有些不合词法规则的标识符判别等。总之,严格说来,词法分析程序只进行和词法分析相关的工作。
七、实验感想:
通过此次实验,让我了解到如何设计、编制并调试词法分析程序,加深对词法分析原理的理解;熟悉了构造词法分析程序的手工方式的相关原理,使用某种高级语言(例如C++语言)直接编写此法分析程序。另外,也让我重新熟悉了C++语言的相关内容,加深了对C++语言的用途的理解。
附录1(代码)
#includeiostream#includefstr
您可能关注的文档
- 诚信承诺书新乡公共资源交易管理中心.docx
- 诚信文明活动总结.docx
- 程序集强名称延迟签名与签名.docx
- 程序设计报告图书馆管理系统.docx
- 澄明之境分析和总结.docx
- 痴情的说说分析和总结.docx
- 池上白居易池上古诗.docx
- 齿轮泵设计步骤.docx
- 齿轮齿条转向器设计.docx
- 齿轮与轴的三种连接方式.docx
- 《2025年新能源商用车物流需求增长市场潜力分析》.docx
- 2025广东江门市公安局招聘留置看护辅警71人备考题库附答案详解(培优a卷).docx
- 2025年多能互补能源系统行业市场进入壁垒报告.docx
- 《2025年无糖饮料功能化产品消费者偏好与市场趋势》.docx
- 2025年能源评估行业数字化转型与智能化发展报告.docx
- 《2025年童装亲子装设计创新与市场前景》.docx
- 2025年多能互补能源系统行业市场需求分析报告.docx
- 健康运动安全课件下载.ppt
- 2025广东江门市公安局招聘留置看护辅警71人备考题库附答案详解(典型题).docx
- 《2025年宠物智能智能照明产品市场调研与场景化应用分析》.docx
最近下载
- 农业产业园项目农产品质量安全监管体系建设与评估报告.docx VIP
- 2024版矿石资源勘探与开采合作协议.docx VIP
- 统编版九年级道德与法治下册全册教学设计教案.pdf
- 新目标大学英语(第二版)视听说教程 3 参考答案.pdf VIP
- 某住宅楼给水排水设计毕业论文(设计)计算书.doc VIP
- 婴幼儿发展心理学 同伴关系 同伴关系.pptx VIP
- 人教版九年级(初三)道德与法治下册全册教案.pdf VIP
- 会计学原理课程实验(第六版)张志康习题答案解析.pdf
- 20S517- 排水管道出水口.pdf VIP
- Bose博士SoundTouch 300 Soundbar 扬声器说明书.pdf
原创力文档


文档评论(0)