词法分析程序构造原理与实现技术编译原理实验报告

词法分析程序构造原理与实现技术编译原理实验报告

ID:17422497

大小:281.45 KB

页数:19页

时间:2018-08-31

词法分析程序构造原理与实现技术编译原理实验报告_第1页
词法分析程序构造原理与实现技术编译原理实验报告_第2页
词法分析程序构造原理与实现技术编译原理实验报告_第3页
词法分析程序构造原理与实现技术编译原理实验报告_第4页
词法分析程序构造原理与实现技术编译原理实验报告_第5页
资源描述:

《词法分析程序构造原理与实现技术编译原理实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、编译原理实验词法分析程序构造原理与实现技术目录引言3一、实验目的3二、实验环境3三、实验内容3四、实验要求4五、程序功能描述45.1输入输出45.2大小写不敏感55.3识别大多数常用程序字符55.4注释的处理55.5错误检查和处理5六、主要数据结构6七、程序结构描述67.1各单词符号的类别编码67.2程序总体以及局部执行图67.3设计方法87.4函数定义及函数之间的调用关系8八、程序测试8代码附录12引言本课程开展研究性教学的目的是,在教师的引导下以问题回朔与思维启发的方式,使学生在不断的探究过程中掌握编译程序设计和构造的基本原理和实现技

2、术,启迪学生的抽象思维、激发学生的学习兴趣、培养学生的探究精神和专业素养,从而提高学生发现问题、分析问题和解决问题的能力。一、实验目的1.解决正则文法到状态转换图的转化问题2.掌握正则文法及其状态转换图的基本概念,正则表达式及有限自动机的基本概念3.深入理解理论对实践的指导作用:基本原理、实现技术和方法的正确运用4.掌握正规文法构造相应的状态转换图的基本方法和正则表达式构造有限自动机的基本方法及不确定有限自动机确定化的基本方法5.完成词法分析程序的设计与编写二、实验环境软件:操作系统:WINDOWS8应用软件:VC6.0三、实验内容1、教

3、学安排内容:完成以下正则文法所描述的Pascal语言子集单词符号的词法分析程序。<标识符>→字母︱<标识符>字母︱<标识符>数字<无符号整数>→数字︱<无符号整数>数字<单字符分界符>→+︱-︱*︱;︱(︱)<双字符分界符>→<大于>=︱<小于>=︱<小于>>︱<冒号>=︱<斜竖>*<小于>→<<等于>→=<大于>→><冒号>→:<斜竖>→/该语言的保留字:beginendifthenelsefordowhileandornot2、在此基础上,我自己新完善了一下词法分析处理:1)新增保留字:returnbreakmain2)扩充可识别的标

4、识符文法:<标识符>→<标识符><下划线>字母︱<标识符><下划线>数字3)新增可识别的经常使用的符号:如'︱"︱==︱!=︱(t)(r)︱%s(%d)(%f)等,以及数组(形如a[])还有程序经常出现的{},<>等四、实验要求1.给出各单词符号的类别编码;2.词法分析程序应能发现输入串中的错误;3.词法分析作为单独一遍编写,词法分析结果为二元式序列组成的中间文件;4.设计两个测试用例(尽可能完备),并给出测试结果。五、程序功能描述5.1输入输出输入:将事先准备好的代码录入txt中,程序将改*.txt进行词法分析输出:在命令行中以

5、二元组(类别码,TOKEN)显示5.2大小写不敏感将纯字母组合中的大写字母转换成小写后,在保留字数组中查找是否是系统保留字5.3识别大多数常用程序字符能够识别C语言中常见的rt,%s%d%f,单引号,双引号,逻辑运算符以及形如a[]的数组的符号等。5.4注释的处理1.当输入文件中出现了/*的字符串之后,程序会自动忽略之后的输入字符串,直到遇*/,但程序会输出/*2.当输入文件中出现了//的字符串之后,程序会自动忽略之后的输入字符串,直到遇回车字符后,则判断为注释结束,但程序会输出//5.5错误检查和处理当输入串为未定义的字符时,在

6、输出文件中显示“Error!”,如输入¥六、主要数据结构主要是利用数组,进行保留字的查询与将符合某个正则文法的字符归结到一起。七、程序结构描述7.1各单词符号的类别编码单词符号类别码单词符号类别码begin1:=23end2+24if3-25then4*26else5/27for6;28do7(29while8)30and9{31or10}32not11数组(形如a[])33return12#34break13.35main14,36ID标识符15形如,37INT整型16形如%s38<17"39<=18!40=19!=41<>20==

7、42>21’43>=22//

8、/*44

9、457.2程序总体以及局部执行图总体流程图:词法分析流程图:7.3设计方法1.预定义好各单词符号的类别,包括保留字2.用数组来存储识别过程中的单词字符3.循环一个一个字符的读取与分析,若开头是字母,则判断为标识符,并将其转换为小写,然后读取完后,进行保留字比较,若是,则输出保留字的二元组;不是则输出标识符的二元组4.开头不是字母的而是数字的,则继续读取,直到数字全读完,输出类别是整型的二元组5.若不属于以上2中类型,则转到其他字符的判别,查找宏定义中的字符,找到则输出其二元组,没有找到,则进行出错输

10、出。7.4函数定义及函数之间的调用关系main函数中,调用fopen函数,将文本文件打开,在调用scanner_example函数进行词法分析,在分析过程中,调用lookup函数进行保留字查找

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。