编译原理-词法分析

上传人:仙*** 文档编号:180793122 上传时间:2023-01-08 格式:DOC 页数:7 大小:226.50KB
收藏 版权申诉 举报 下载
编译原理-词法分析_第1页
第1页 / 共7页
编译原理-词法分析_第2页
第2页 / 共7页
编译原理-词法分析_第3页
第3页 / 共7页
资源描述:

《编译原理-词法分析》由会员分享,可在线阅读,更多相关《编译原理-词法分析(7页珍藏版)》请在装配图网上搜索。

1、编译原理课程实验报告题目 词法分析 专业 计科二学位 班级 1班 学号 1102027 姓名 程振坤 指导教师签名 郑瑶 一. 实验序号:编译原理第一次实验二. 实验题目:词法分析三. 实验日期: 2012.10.20 至2012.11.3 四. 实验环境(操作系统,开发语言)操作系统:Windows开发语言:C+五. 实验要求1) 将标识符的词法改为“以大写字母或小写字母开头,后面可以跟大写字母或小写字母或数字或下划线”。2) 将中的表示相等关系的单词“=”改为“= =”3) 增加字符串常量的识别。4) 将原来无小数的数改为可以有小数的数六. 实验步骤1) 用PL/0语言编写测试用例源程序。

2、用C+语言编写词法分析程序。2) 运行词法分析程序,读入PL/0语言的测试用例源程序,进行词法分析。3) 设立断点,单步运行词法分析程序,依次单个输出单词。分析和理解词法分析程序,解释词法分析程序中的数据和变量变化的原因和输出结果。4) 根据上述“实验要求”修改词法分析程序,同时也应修改PL/0语言测试用例源程序中的相应的单词。因为整个程序核心读取函数是getaword()函数,所以根据实验要求我进行了如下修改:1. 将标识符的词法改为“以大写字母或小写字母开头,后面可以跟大写字母或小写字母或数字或下划线”。if(cACharacter=a & cACharacter=A & cACharac

3、ter=Z)/如果当前字符是小写的字母或大写字母增加了读入大写字母的功能do if(nAWordIndex=a & cACharacter=0 & cACharacter=A & cACharacter=Z|cACharacter=_)& cACharacter!=EOF); /只要后面继续跟a.z或0.9或A.Z或下划线,就要继续看后面的字符2. 将中的表示相等关系的单词“=”改为“= =” if(cACharacter=)/当前符号是=? cACharacter=GetACharacterFromFile();/如果当前符号是=,则要再看下一个符号if(cACharacter=)/如果下一

4、个符号是=/则单词是条件符号=g_Wordsg_nWordsIndex.eType=EQL;/单词类型为单词类型枚举值EQLstrcpy(g_Wordsg_nWordsIndex.szName,=);/识别出的单词放进单词队列g_Words中g_Wordsg_nWordsIndex.nLineNo=g_nLineNo;/在源代码文件中单词所在的行数g_nWordsIndex+;/识别出的单词个数加一cACharacter=GetACharacterFromFile();/再取一个符号,为下一步准备return OK;else coutendl-条件判断符号为=请修改错误!-endl; 3. 增

5、加字符串常量的识别。我自己增加了CHAR类型,对多处进行了修改,原理是如果遇到了单引号,则继续往下读取,并且认为是字符型,直到遇到下一个单引号或文件末尾为止。代码主要如下:if(cACharacter= )/新增加的识别字符串功能 nAWordIndex=0;/单词的第一个字符 do if(nAWordIndex=0 & cACharacter=0 & cACharacter=0 & cACharacter=9)& cACharacter!=EOF);/如果是0.9,则继续拼装数单词 for(k=0;kj;k+)n_float=n_float/10; n=n_int+n_float;/数的值/

6、如果不是0.9或小数点则数单词结束5) 运行修改后的词法分析程序,读入修改后的PL/0语言测试用例源程序,进行词法分析。七. 实验结果(测试用例源程序,运行结果截图)八. 实验体会(词法分析程序修改的地方,解决问题的方法、心得体会等)其实刚开始对PL/0编译程序不是很清楚,只知道理论的知识,对这个实验无从下手,老师给了我们部分代码并且给我们讲解了核心原理后,我对PL/0的词法分析有了大概的认识,但是当自己去编译程序时,发现了许多自己平时没有注意到的细节知识,在编译过程中,往往一个极其微小的错误会将我困惑很久, 但是当我将整个程序编译完成时,却是有说不出的喜悦。没有付出哪有回报。通过这次阅读程序,使我知道了规范的代码是怎样写的,而且读代码也是理解别人思路和学习的过程,这次实验使我收获很大,不仅仅是知识还磨练了我的意志增强了我的信心。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!