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

  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〕标识符的正那么定义:

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)

199****8042 + 关注
实名认证
内容提供者

相信自己,相信明天

1亿VIP精品文档

相关文档