编译原理实验报告-词法分析.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
+*编译原理课程实验报告 实验1:词法分析 姓名 院系 软件学院 学号 任课教师 陈鄞老师 指导教师 郭勇老师 实验地点 软件学院三楼机房 实验时间 2016/10/23/星期日 出勤、表现得分 实验报告 实验课表现 实验总分 操作结果得分 得分 一、需求分析 得分 要求:阐述词法分析系统所要完成的功能 词法分析是编译的第一个阶段,主要任务是读入源程序的输入字符,将它们组成词素,生成并输出一个 词法单元序列,每个词法单元对应于一个词素。 在本词法单元中,基本功能要求实现以下几类单词:  标识符(由大小写字母、数字以及下划线组成,但必须以字母或者下划线开头)  关键字(①类型关键字:整型、浮点型、布尔型、记录型;②分支结构中的if 和else ;③循环结构 中的do 和while ;④过程声明和调用中的关键字) 本词法分析器可以识别C语言的32个关键字,其中包括:"char","int","short","long", "float","double","bool","enum","struct","if","else","do","while","switch","case","continue","for", "void","goto","extern","const","typedef","union","static","auto","register","default","sizeof", "return","signed","unsigned","volatile"。  运算符(①算术运算符;②关系运算符;③逻辑运算) 本词法分析器可以识别的运算符: “ * ” 乘法运算符;“ / ” 除法运算符;“ % ” 取余运算符; “ + ” 加法运算符;“ - ” 减法运算符; << 左移运算符;>> 右移运算符;<、<=、>、>= 关系运算符; “ == ” 等于运算符; “ != ” 不等于运算符; “ & ” 按位与运算符 ;“ ∧ ” 按位异或运算符; “ | ” 按位或运算符; “&&” 逻辑与运算符; “ || ” 逻辑或运算符;” ! “ 非运算符; =、 +=、 -=、 *=、 /= 、 %=、 &=、 ^=、 |=、 <<=、 >>= 赋值运算符。  界符(①用于赋值语句的界符,如“= ”;②用于句子结尾的界符,如“;”;③用于数组表示的界符, 如“[”和“] ”;④用于浮点数表示的界符 “.”) 本词法分析器可以识别的界符: '{','}','[',']','(',')',',',';','.','=','?',':'  常数(无符号整数和浮点数,包括科学计数法,字符串常数等)  注释 (/* „„*/形式)  八进制数和十六进制数  字符常数 二、文法设计 得分 要求:对如下内容展开描述 (1) 给出各类单词的词法规则描述(正则文法或正则表达式) (2 ) 各类单词的转换图 (1) 1)标识符的正则定义: letter_ -> [a-zA-Z_] digit -> [0-9] id -> letter_(letter_|digit)* 说明:关键字的正则定义与标识符是一样的,但是为了区别关键字和标识符,我采取初始化时就将各个关键 字保留起来,识别时先进行判断是不是关键字,如果不是关键字再进行判断是不是标识符。 2 )运算符的正则定义: operator -> + | - | * | / | += | -= | *= | /=

文档评论(0)

139****1921 + 关注
实名认证
内容提供者

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

认证主体姚**

1亿VIP精品文档

相关文档

相关课程推荐