- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理实验 左珍德 张聪聪 QQ:1551837338 171211626 内容及要求 内容: 一共有实验一和实验二两个实验,每个实验有2次课4个学时; 实验一完成词法分析; 实验二完成语法、语义分析及中间代码生成。 两个实验完成后最终效果: 实现一个简单的集成开发环境(IDE),可以编辑源代码、有“编译”、“运行”等功能; 需要显示所有的错误信息、扫描结果、语法分析结果、中间代码和汇编代码 (做实验一时可以使用命令行界面) 其他要求: 可以单干也可以分组,但每组不能超过四个学生(班委第一次实验前把分组名单统计好,详细格式见“编译原理实验报告要求.doc”); 提交一个最终的编译器,分组的同学要合理分配任务; TINY+ 编译器必须用C 或 C++实现,界面部分可以使用MFC或WTL,不建议用.NET;编程环境建议用Microsoft Visual Studio 2005。 严禁抄袭 实验一指南 时间及地点 实验一一共2次课4个学时 第14周星期四下午,地点B3-451 预备知识:TINY+ TINY+语法规则简单,可以简化实验难度。 Example: 具体语法规则见“TINY+ new.doc”。 实验内容 实现TINY+语言的词法分析程序(扫描程序) 扫描程序的输入是源代码文件,输出是token串。。 Token 以键值对 (Kind, Value)的形式表示。下面的符号表示不同的token类别(即Kind的取值) KEY 表示保留字 SYM 表示特殊符号 ID 表示标识符 NUM 表示数值常数 STR 表示字符串常数 实验内容 实现TINY+语言的词法分析程序(扫描程序) 检测词法错误:给出有意义的错误信息和错误发生的行号。 (不可以用LEX等词法分析器生成器) 词法分析器的实现 词法分析器的功能:把源代码转成单词(Token)流 词法分析器的一般实现框架 词法分析器 打开源文件, 把文件句柄传给 词法分析器 语法分析器 文件句柄 NextToken() 实验一需要关注的地方 词法分析器输入输出关系 源代码: read x; { input an integer } if 0 x then { dont compute if x = 0 } fact := 1; … 词法分析器输出的Token: (KEY, read) (ID, x) (SYM, ;) (KEY, if) … 第一次调用NextToken() 第二次调用NextToken() 第三次调用NextToken() 第四次调用NextToken() 源文件的读取方式 分块读取(每次读取固定大小的一块数据) 占用内存小 实现稍微复杂 一次性读取(一次把整个文件读取进来) 占用内存大 实现简单 对于分块读取方式,一般在词法分析器里实现一个GetNextChar()函数,词法分析器只通过该函数来获取源文件的字符。 词法分析器工作流程(NextToken) 首先跳过所有空白字符和注释,直到出现一个不是空白字符且不属于注释的字符,记为ch 如果ch =非法字符,则报错,转步骤一 =数字,则进行整型常量分析 =英文字母,则进行标识符分析 =单引号,则进行字符串常量分析 =其他(特殊符号),则进行操作符分析 返回分析结果(Kind,Value)值。 步骤一:跳过所有空白字符和注释 空白字符包括:空格(0x20)、水平制表(0x09)、垂直制表(0x0B)、换页(0x0C)、回车(0x0D)和换行符(0x0A) read x; { input an integer } if 0 x then … 0x20 r e a d 0x20 x ; 0x20 { … } 0x0D 0x0A i f … 当前读指针 执行步骤一后读指针 0x20 r e a d 0x20 x ; 0x20 { … } 0x0D 0x0A i f … 当前读指针 执行步骤一后读指针 步骤二.1:非法字符,报错 TINY+语言的字母表以外的字符为非法字符 字母表包括: 数字(0~9)、英文字母(a~z和A~Z)、空白字符(上面介绍) 特殊符号: , ; : = + - * / ( ) { } 单引号 遇到非法字符均报错,并跳过该非法字符继续进行词法分析。 步骤二.2:分析整型常量 程序到达这里的状态是:当前字符一定是数字,且当前字符的前一个字符一定不是数字。 一般一个整数有多位,如2010有4位。 现要识别出一个完整的整数,方法是不断读入字符(当然也要保存起来),直到当前字符不是数字为止,这样就可以识别一个完整的整数。 x:=2010; … x
您可能关注的文档
- 《Discrete Mathematics II教学-华南理工》HW4.pdf
- 《Discrete Mathematics II教学-华南理工》III.Group.ppt
- 《Discrete Mathematics II教学-华南理工》IV.Rings.ppt
- 《Discrete Mathematics II教学-华南理工》lattice.ppt
- 《Discrete Mathematics II教学-华南理工》Lection 15 Lattice boolean algebra.ppt
- 《Discrete Mathematics II教学-华南理工》Lecture 2. Binary Operations.pdf
- 《Discrete Mathematics II教学-华南理工》Lecture 2 Groups I.ppt
- 《Discrete Mathematics II教学-华南理工》Lecture 3 Groups II.ppt
- 《Discrete Mathematics II教学-华南理工》Lecture 3. Isomorphic Binary Structures.pdf
- 《Discrete Mathematics II教学-华南理工》Lecture 4 Rings and fields.ppt
最近下载
- 新概念青少版2BUnit22 I always behave myself课件.pptx
- 院前急救培训手册.docx
- 消防设施操作员中级(四级)维保方向35个抽考项-PDF版.pdf VIP
- 人教版四年级数学《上册全册》全套精品教学课件小学优秀课堂课件.pptx VIP
- 2024年华医网继续教育临床静脉用药质量管理与风险防范答案.docx VIP
- 2023年河北高中学业水平合格性考试英语试卷真题(含答案详解).pdf
- 人教版一年级上册数学 加减混合(课件).pptx
- 海兰天澄 HLT-100COD在线分析仪使用说明书.doc
- 广东省深圳市育才一中学2024届中考物理适应性模拟试题含解析.doc
- 地方政府与城投企业债务风险研究报告——江苏篇(下)-15页.doc VIP
文档评论(0)