已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编译原理实验指导书主编徐静李娜信息与电气工程学院2010年3月编译原理实验指导书1概述一、本课程实验的目的和任务编译原理是一门实践性很强的课程,只有通过实践,才能真正掌握。实际的编译程序是十分复杂的,有时由多达十几万条指令组成。为此,编译原理的实践教学,采用简化编译过程的办法,选择最关键的3个环节词法分析、语法分析(包括语义处理、产生无优化的目标指令)、连接调试,进行编程和调试训练。每个环节作为一个实践课题。先分别编程调试,再连接在一起总调。二、实验方法任何一个实用的高级语言,其语法都比较复杂,如选其作为源语言,很难实践全过程。故本实验将定义一个简化的语言C语言的一个子集作为源语言,设计调试出它的编译程序。前后贯穿这一条主线进行实践。每次都可利用课余时间编程,利用上机时间进行输入和调试。三、实验报告的规范和要求每个实验完成后写出实验报告。实验报告的内容包括如下内容一、实验目的二、程序设计时采用的算法和方法三、输入的源程序四、词法分析程序清单和输出结果。五、心得体会编译原理实验指导书2实验一词法分析一、实验目的(1)通过设计编制调试一个具体的词法分析程序,理解词法分析在编译程序中的作用。(2)加深对有穷自动机模型的理解。(3)掌握词法分析程序的实现方法和技术。(4)用C语言对一个简单语言的子集编制一个一遍扫描的程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。编制一个读单词过程,从输入的源程序中,识别出各个具有独立意义的单词,即基本保留字、标识符、常数、运算符、分隔符五大类。并依次输出各个单词的内部编码及单词符号自身值。(遇到错误时可显示“ERROR”,然后跳过错误部分继续显示)。二、实验预习提示1词法分析器的功能和输出格式词法分析器的功能是输入源程序,输出单词符号。词法分析器的单词符号常常表示成以下的二元式(单词种别码,单词符号的属性值)。本实验中,采用的是一类符号一种别码的方式。2单词的BNF表示|3“超前搜索”方法编译原理实验指导书3词法分析时,常常会用到超前搜索方法。如当前待分析字符串为“A”,当前字符为“”,此时,分析器到底是将其分析为大于关系运算符还是大于等于关系运算符呢显然,只有知道下一个字符是什么才能下结论。于是分析器读入下一个字符“”,这时可知应将“”解释为大于运算符。但此时,超前读了一个字符“”,所以要回退一个字符,词法分析器才能正常运行。在分析标识符,无符号整数等时也有类似情况。4模块结构YNYN调用返回输出缓冲区中是否还有字符取单词扫描一个字符结束主函数MAIN()输入文件名判断能否打开文件缓冲区扫描一个字符三、实验过程和指导(一)准备1阅读课本有关章节,明确语言的语法,写出基本保留字、标识符、常数、运算符、分隔符和程序例。2初步编制好程序。3准备多组测试数据。编译原理实验指导书4(二)上课上机将源代码拷贝到机上调试,发现错误,再修改完善。第二次上机调试通过。(三)程序要求程序输入/输出示例如源程序为C语言。输入如下一段MAININTA,BA10BA20要求输出如下图。(2,”MAIN”)(5,”(“)(5,”)“)(5,”“)(1,”INT”)(2,”A”)(5,”,”)(2,”B”)(5,”)(2,”A”)(4,”)(3,”10”)(5,”)(2,”B”)(4,”)(2,”A”)(4,”)(3,”20”)(5,”)(5,”“)要求1识别保留字IF、INT、FOR、WHILE、DO、RETURN、BREAK、CONTINUE;单词种别码为1。2其他的都识别为标识符;单词种别码为2。3常数为无符号整型数;单词种别码为3。4运算符包括、/、INCLUDECHARPROGRAM80,TOKEN8/数组PROGRAM存放的为源程序所有字符,数组TOKEN为存放的单词自身字符串/CHARCHINTSYN,P,M,N,ROW/SYN为单词种别码/LONGINTNUM/SUM为整型常数/CHARKEY8“IF“,“INT“,“FOR“,“WHILE“,“DO“,“RETURN“,“BREAK“,“CONTINUE“/保留字/VOIDMAINP0ROW1PRINTF“NPLEASEINPUTSTRINGN“DO/从文件将源程序全部输入到字符缓冲区中/CHGETCHARPROGRAMPCHWHILECHP0DOSCANERSWITCHSYN编译原理实验指导书7CASE3PRINTF“ND,D“,SYN,NUMBREAKCASE1PRINTF“NFOUNDERRORINROWD“,ROWBREAKCASE2ROWROWBREAKDEFAULTPRINTF“ND,S“,SYN,TOKENBREAKWHILESYN0GETCHSCANERFORN0N0ACTIONA,AACC把A和S分别压入符号栈和状态栈;使IP前进到下一个字符结束处理是是是否否否三、实验过程和指导(一)准备1阅读课本有关章节,2考虑好设计方案;3设计出模块结构、测试数据,初步编制好程序。(二)上课上机将源代码拷贝到机上调试,发现错误,再修改完善。(三)程序要求程序输入/输出示例对下列文法,用LR(1)分析法对任意输入的符号串进行分析(1)EET(2)EET(3)TTF(4)TT/F编译原理实验指导书22(5)FE(6)FI输出的格式如下1LR(1)分析程序,编制人姓名,学号,班级2输入一以结束的符号串包括/()I在此位置输入符号串3输出过程如下步骤状态栈符号栈剩余输入串动作10III移进4输入符号串为非法符号串或者为合法符号串备注A在“所用产生式”一列中如果对应有推导则写出所用产生式;如果为匹配终结符则写明匹配的终结符;如分析异常出错则写为“分析出错”;若成功结束则写为“分析成功”。B在此位置输入符号串为用户自行输入的符号串。注意1表达式中允许使用运算符(/)、分割符(括号)、字符I、结束符;2如果遇到错误的表达式,应输出错误提示信息(该信息越详细越好);3对学有余力的同学,测试用的表达式事先放在文本文件中,一行存放一个表达式,同时以分号分割。同时将预期的输出结果写在另一个文本文件中,以便和输出进行对照;(四)程序思路(仅供参考)模块结构(1)定义部分定义常量、变量、数据结构。(2)初始化设立LR1分析表、初始化变量空间(包括堆栈、结构体、数组、临时变量等);(3)控制部分从键盘输入一个表达式符号串;(4)利用LR1分析算法进行表达式处理根据LR1分析表对表达式符号串进行堆栈(或其他)操作,输出分析结果,如果遇到错误则显示错误信息。编译原理实验指导书23(五)练习该实验的目的和思路程序相当复杂,需要利用到大量的编译原理,也用到了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药膳制作师安全生产能力强化考核试卷含答案
- 绘图仪器制作工QC管理能力考核试卷含答案
- 安全员标准化测试考核试卷含答案
- 水生高等植物栽培工风险识别强化考核试卷含答案
- 电光源电路部件制造工操作竞赛考核试卷含答案
- 地质采样工安全意识评优考核试卷含答案
- 2025年橡胶、橡塑制品项目发展计划
- 2025年电子脉冲治疗仪合作协议书
- 2025 小学一年级科学下册认识常见动物尾巴课件
- 2025年西藏中考英语真题卷含答案解析
- 北京通州产业服务有限公司招聘备考题库必考题
- 2026南水北调东线山东干线有限责任公司人才招聘8人笔试模拟试题及答案解析
- 伊利实业集团招聘笔试题库2026
- 2026年基金从业资格证考试题库500道含答案(完整版)
- 动量守恒定律(教学设计)-2025-2026学年高二物理上册人教版选择性必修第一册
- 网络素养与自律主题班会
- 波形护栏工程施工组织设计方案
- 非静脉曲张性上消化道出血管理指南解读课件
- 台州市街头镇张家桐村调研报告
- 压力排水管道安装技术交底
- 糖代谢紊乱生物化学检验
评论
0/150
提交评论