- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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〕标识符的正那么定义:
letter_-[a-zA-Z_]
digit-[0-9]
id-letter_(letter_|digit)*
说明:关键字的正那么定义与标识符是一样的,但是为了区别关键字和标识符,我采取初始化时就将各个关键字保存起来,识别时先进行判断是不是关键字,如果不是关键字再进行判断是不是标识符。
2〕运算符的正那么定义:
operator-+|-|*|/|+=|-=|*=|/=|%|++|--|!=|==|||=|=|||^||||||||!
3)界符的正那么定义:
Boundary-{|}|[|]|(|)|,|;|:|?|~
4)常数的正那么定义:
digit-[0-9]
digits-digitdigit*
number-digits(.digits)?(E[+-]?digits)?
5)注释的正那么定义:
NOTE-/*other*/
Other指代任意字符
6〕八进制数和十六进制数的正那么定义:
OCT-0(1|2|3|4|5|6|7)〔0|1|2|3|4|5|6|7〕*
HEX-0x(1|…|9|a|…|f)(0|…|9|a|…|f)*
〔2〕1〕标识符和关键字的转换图
2〕运算符的转换图
说明:因为运算符过多,本出的转换图只给出局部,其他可类似构造。
3〕界符的转换图
4〕常数的转换图
有问题。
5〕注释的转换图
6)八进制的转换图:
十六进制的转换图:
字符常量的转换图:
注:状态1到状态3的letter是a-z的字母
状态2到3的letter’是指可以构成转义字符的字母,比方
文档评论(0)