计算机编译原理---词法分析器试验报告_第1页
计算机编译原理---词法分析器试验报告_第2页
计算机编译原理---词法分析器试验报告_第3页
计算机编译原理---词法分析器试验报告_第4页
计算机编译原理---词法分析器试验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译原理实验报告书编译原理.一一词法分析的设计与实现词法分析器目录 TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 1、摘要:2. HYPERLINK l bookmark6 o Current Document 2、实验目的:2. HYPERLINK l bookmark8 o Current Document 3、任务概述3. HYPERLINK l bookmark10 o Current Document 4、实验依据的原理3. HYPERLINK l bookmark12 o Current Document 5、程序设计

2、思想5. HYPERLINK l bookmark14 o Current Document 6、实验结果分析 7. HYPERLINK l bookmark16 o Current Document 7、总结9.编译原理.一一词法分析的设计与实现1、摘要:本实验用C/C+高级语言编写词法分析程序,通过课堂上对词法分析器相关 的背景知识的足够了解,清晰词法分析的过程,在脑海中形成词法分析的一般方 案,根据方案一步步所要实现的目的,形成对词法分析器程序的模块划分和整体 规划,最终实现一个词法分析器。具体要求能够通过扫描源程序分析出单词符号, 将相应字符流转换成内码。2、实验目的:通过设计、调试词

3、法分析程序,实现从源程序中分出各种单词的方法;熟悉 词法分析程序所用的工具自动机,进一步理解自动机理论。掌握文法转换成自动 机的技术及有穷自动机实现的方法。确定词法分析器的输出形式及标识符与关键 字的区分方法。加深对课堂教学的理解;提高词法分析方法的时间能力。 通过本 实验,掌握从源程序文件中读取有效字符的方法和产生源程序的内部表示文件的 方法以及掌握词法分析的实现方法,并可以成功的上机调试编出词法分析程序。3、任务概述用C/C+实现对Pascal的子集程序设计语言的词法识别程序词法分析程序的主要工作为:(1)从源程序文件中读入字符。(2)统计行数和列数用于错误单词的定位。(3)删除空格类字符

4、,包括回车、制表符空格。(4)按拼写单词,并用(内码,属性)二元式表示。(5)根据需要是否填写标识符表供以后各阶段使用。4、实验依据的原理(1)词法分析器工作流程图编译原理.一一词法分析的设计与实现(Jf.w 件医修;砧粗是、图1词法分析器工作流程图实现流程:从左至右逐个字符地对源程序进行扫描,产生一个个的单词符把作为字符串的源程序改造成为单词符号用的中间程序0词法分析的功能是输入源程序,输出单词符所依据的理论基础有有限自动机、正规式、正规文法。编译原理.一一词法分析的设计与实现(2)词法分析器的功能是输入源程序,输出单词符号,单词符号是一个程 序语言的基本语法符号,一般分为五种:关键字、标识

5、符、常数、运算符、界符 五大类。词法分析器所输出的单词符号通常表示为如下二元式:(单词种别,单词符号的属性值)(3)词法分析中的内码单词对照表。表1内部码对照表内码单词内码单词内码单词内码单词1PROGRAM2CONST3VAR4INTEGER5LONG6PROCEDURE 7IF8THEN9WHILE10DO11READ12WRITE13BEGIN14END15ODDr 16+17-18*19/20=212225=26.27.28;29:30:=31(32)33无符号整数34标识符35#r 36375、程序设计思想? 程序要分析单词的符号有五种基本类型:关键字(PROGRAM、CONST、V

6、AR、INTEGER、LONG、PROCEDURE、IF、THEN、WHILE、DO、READ、WRITE、BEGIN、END、ODD)、标识符、无符号整数、运算 符(+、-、*、/等)、界符(,、;、(、)等);? 词法分析器的结构如下图所示:编译原理.一一词法分析的设计与实现图2词法分析器?本词法分析器的状态转换图如下所示:图3状态转换图?词法分析器的模块表如下所示:编译原理.一一词法分析的设计与实现函数模块功能bool IsLetter(char c)判断当前待测试字符是否是字母bool IsDigit(char c)判断当前待测试字符是否是数字bool IsKeyWord(string

7、 c)判断得到字符串是否是关键字bool IsPunc(string c)判断当前待测试字符是否是界符bool IsOperate(string c)判断当前待测试字符是否是运算符void openFile(FILE *f)分析源文件得到单词并分析他们的类型得到内码,并且提示错误位置int main()输入文件得到结果6、实验结果分析当测试代码如下时:#includeint main()(int i,j;printf hello;return 0;)测试结果如下图4所示:编译原理.一一词法分析的设计与实现国 S3球大三下 ri漏等原理也洞法分析器摘法分钟盲曲杆舞一瑜入源文件总前至:,tHSt

8、.tSCt分析结枭如卜一3% includo 24, C4.int) 3Gr34,pplntF、 t34,helln 26, 0 34,return) 37,分析统计结里如下士查找到2人错误 轲I“咄现皆误 赢卜二巾”中观僧尸数 符 型整 照 T.uz E 早一f*dnl0 1 0 1Z11查找到如下 错误图4测试结果测试结果分析:分析结果如上图,并且对符号类型进行分类统计,其中当发生错误的时候,提醒发生错误的行数以及错误的字符。7、总结(1)通过这次词法分析器实验,掌握了词法分析程序设计的原理和方法。在设计、实现、调试自己的词法分析器,加深了对词法分析原理的理解,对编译 的基本概念、原理和方法也有了更加清晰和完成的理解。对书本上的理论知识进行了运用,学会了使用状态转变图,最后用C+语言实现出来。后期对词法分析程序的完善,也花费了很多时间。编译原理.一一词法分析的设计与实现(2)在本实验中的关键字表只初始化了几个常用的关键字,还可继续扩充

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论