词法分析器(含完整源码).pdfVIP

  • 23
  • 0
  • 约2.25万字
  • 约 17页
  • 2021-11-27 发布于上海
  • 举报
词法分析实验报告 一、实验目的与要求: 1、了解字符串编码组成的词的内涵 , 感觉一下字符串编码的方法和解读 2 、了解和掌握自动机理论和正规式理论在词法分析程序和控制理论中的应用 二、实验内容: 构造一个自己设计的小语言的词法分析器: 1 、这个小语言能说明一些简单的变量 识别诸如 begin,end,if ,while 等保留字;识别非保留字的一般标识符(有下划线、 字符、数字,且第一个字符不能是数字) 。识别数字序列 (整数和小数);识别 := ,= ,= 之类的特殊符号以及; ,(,)等界符。 2、相关过程(函数) : Scanner() 词法扫描程序,提取标识符并填入 display 表中 3 、这个小语言有顺序结构的语句 4 、这个小语言能表达分支结构的语句 5 、这个小语言能够输出结果 总之这个小语言词法分析器能提供以上所说明到的语法描述的功能…… 三、实验步骤: 1、测试评价 (1)、测试 1:能说明一些简单的变量,如关键字、一般标识符、界符等; (2 )、测试 2:能输出结果:单词符号 ( 内码形式 ) 、各种信息表 (如符号表、常量表等 ) ; (3 )、测试程序 : var x,y,z; begin x:=2; y:=3; if (x+5=y*y) then begin z:=y*y-x; z:=z+x*x; end else z:=x+y; prn z; end. (4 )、结果 : ①、从键盘读入; 部分结果如下: (类型:该标识符所属的类型,如关键字,变量等;下标:该标识符所对应表(如变量标 识符表,常量标识符表等)中其相应的位置,下同) ②、从文件读入,输出到文件; 部分结果如下: 其他测试及结果如下: ③、出错处理; 注:若有错误,则只指出错误,不输出各个表; (5 )、评价: 这个小语言程序基本上能完成词法分析阶段的工作,识别诸如 begin ,if 等保留字;识 别非保留字的一般标识符(有下划线、字符、数字,且第一个字符不能是数字) 。识别数字 序列(整数和小数) ;识别 := ,= ,= 之类的特殊符号以及; ,(,)等界符。在扫描源程序 串的同时,能进行一些简单的处理,如删除空格、 tab 、换行等无效字符,也进行了一些基 本的错误处理,如变量长度的判别等。 遇到的问题: (a )、判别标识符超过规定长度( 20 )时,未输出处理结果; (b )、整数 长度过长输出结果仍为整数类型 3 ;(c)、对于小数如﹒ 045 ,被解释为界符和整数; (d )、 对以数字开头的一般标识符的处理,如 100nuts 被解释为整数类型和标识符,未给出错误提 示。 如上测试,出现前两个问题时已报错并输出所在行,而后两个问题待解决。 2、对小语言的词法规则(正规式)画出一个确定的有限自动机(见附录 2、3 ) 四、实验的源代码: (见附录 1) 五、实验中发现的问题和遇到的困难及解决方法: 由于以前未曾接触过编译原理,在该实验的设计中,的确遇到一定的困难。主要是 display 表结构的设计, 由于语法分析和语义分析还未学习, 无法站在全局的角度统筹兼顾, 在表结构设计时, 不知该往表结构体中添加哪

文档评论(0)

1亿VIP精品文档

相关文档