【实验报告】实验一 编写词法分析程序.doc

【实验报告】实验一 编写词法分析程序.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【实验报告】实验一 编写词法分析程序

编译原理实验报告 实验名称: 编写词法分析程序_______ 实验类型: 设计型实验 指导教师: 专业班级: 姓 名: 学 号: 实验地点: 实验成绩: 日期: 2017年 4月 15日 实验一 编写语法分析程序 通过设计、调试词法分析程序,掌握词法分析程序的设计工具,即有穷自动机,进一步理解自动机理论; 掌握正则文法和正则表达式转换成有穷自动机的方法及有穷自动机的实现方法; 会确定词法分析程序的输出形式及标识符与关键字的区分方法; 加深对课堂教学的理解,提高词法分析方法的实践能力,掌握使用实验环境的技能技巧以及程序的调试方法。 二、实验设计 1、写出TEST语言每条词法规则对应的正则文法或者正则表达式 标识符:字母打头,后接任意字母或数字。 正则表达式: ( a|b|……|z|A|B……|Z )( 0|1|……|9| a|b|……|z|A|B……|Z )* 保留字:标符的子集,包括:if, else, for, while, do, int, write, read。 正则表达式: if | else | for | while | do | int | write | read 无符号整数:由数字组成,但最高位不能为0,允许一位的0。 正则表达式:( (1……|9 )( 0|1|……|9)* )|0 分界符:(、)、;、{、} 正则表达式:( | ) | ; | { | } 运算符:+、-、*、/、=、、、=、=、!=、== 正则表达式:+ | - | * | / | = | | | = | = | != | == 注释符:/* */ 正则表达式:/*(没有连续的*/的任意字符串|?)*/ 2、对每个文法或者正则表达式分别构造NFA 标识符: ( a|b|……|z|A|B……|Z )( 0|1|……|9| a|b|……|z|A|B……|Z )* 无符号整数:( (1|2|……|9 )( 0|1|……|9)* )|0 分界符:( | ) | ; | { | } 运算符:+ | - | * | / | = | | | = | = | != | == 注释符:/*(没有连续的*/的任意字符串|?)*/ 3、将NFA合并,确定化,化简得到最终的DFA。 NFA: DFA: 三、实验过程 1、完成整个实验的步骤 9-71的 { /*This a test program.*/ int abc; int 123; int A$@; int i; int n; int b,c; int 2a; int a2; read n; n = 012345; for (i=1;i=n; i= i+1) { abc=abc+i; } if(i!=n) n = n+i; if (!n) b = b+c; /*The loop ended write abc; } 2、实验调试记录表现,分析原因,方案,结果 问题表现: 不能处理除号 不能处理不完整的注释符 对于”0123” 这类字符串的处理不正确,我之前处理为直接报错说一位以上的数字首位不能为0 分析原因 问题3 ,不应该直接报错说一位以上的数字首位不能为0,遇到0应该直接输出0这个单词,再接着读数字。 解决方案 对于问题1,2,重新梳理逻辑,一步一步对照流程图和DFA来调试修改代码。 对于问题3,遇到0应该直接输出0这个单词,再接着读数字。 解决结果 列出实验结果并进行分析测试结果。 lex.txt文件(存放编译的合法内容)内容: 1 { { 2 /*This a test program.*/ /*This a test program.*/ 3 int int 3 ID abc 3 ; ; 4 int int 4 NUM 123 4 ; ; 5 int int 5 ID A 5 ; ; 6 int int 6 ID i 6 ; ; 7 int int 7 ID n 7 ; ; 8 int int 8 ID b 8 ID c 8 ; ; 9 int int 9 NUM 2 9 ID a 9 ; ; 10 int int 10 ID a2 10 ; ; 11 read read 11 ID n 11 ; ; 12 ID n 12 = = 12 NUM 0 12 NUM 1234

您可能关注的文档

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档