词法分析实践报告

词法分析实践报告

ID:11864750

大小:148.65 KB

页数:7页

时间:2018-07-14

词法分析实践报告_第1页
词法分析实践报告_第2页
词法分析实践报告_第3页
词法分析实践报告_第4页
词法分析实践报告_第5页
资源描述:

《词法分析实践报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《编译系统设计实践》词法分析器的构建学生姓名(学号):曾伙光(031002419)学生姓名(学号):林晓红(031002110)学生姓名(学号):学生姓名(学号):学生姓名(学号):专业班级:计算机科学与技术指导教师:何振峰二○一二年十一月二十四日目录1.实验目的……………………………………………………………12.实验内容……………………………………………………………13.词法单元说明………………………………………………………14.算法说明……………………………………………………………15.程序的实现与执行…………………………………………………1

2、6.结论…………………………………………………………………1参考书目………………………………………………………………11.实验目的通过设计、编制一个具体的词法分析程序,加深对词法分析原理的理解。2.实验内容以经过改造的PASCAL语言(或C语言)源程序作为词法分析对象,选取它的一个适当大小的子集,可以选取一类典型单词(改造部分必须完成)。基本要求:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其并把其转换成属性字输出,并管理符号表,处理词法错误;要求能处理注释。3.词法单元说明3.1关键词在C语言编程中,为了定义变量、表达语句功

3、能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字。关键字已被编译系统本身使用,所以编写程序时不能够使用这些关键字来作为标识符。C语言中关键字主要有以下三类:•类型说明符:用来定义变量、函数或其他数据结构的类型,如unsignedchar,int,long等。•语句定义符:用来标示一个语句的功能,如if,for等。•预处理命令字:用来表示预处理命令的关键字,如include,define等。3.2运算符C语言的运算范围很宽,除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。主要分为三大类:算术运算符、关系运算符

4、与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算符。C语言运算符主要有:()圆括号;[]下标运算符;->指向结构体成员运算符;“!”逻辑非运算符;“++”前缀增量运算符;“--”前缀减量运算符;“-”负号运算符;“&”地址运算符;“*”乘法运算符或者指针运算符;“/”除法运算符;“%”取余运算符;“+”加法运算符;“-”减法运算符;<、<=、>、>=关系运算符;“==”等于运算符;“!=”不等于运算符;“&”按位与运算符;“&&”逻辑与运算符;“

5、

6、”逻辑或运算符;“,”逗号运算符。3.3标识符标识符使用来标识源程序中的某个对象

7、的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。4C语言规定:一个标识符由字母、数字和下划线组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,所以在编写C语言程序时,最好不要使用以下划线开头的标识符。但是下划线可以用在第一个字符以后的任何位置。标准C不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。本实验中规定,标识符的长度不能超过8位,长度大于16的标识符报错。3.4数字本实验中只考虑二进制、八进制、十进制和十六进制的整数,而不考虑浮点数。例如,如果一个整数以“0”开

8、头:如果该整数为0和1构成,则认为其是二进制数;否则如果由0,1,2,…,7构成,则认为其为八进制数,如果该数中出现了“8”或“9”,则认为其是十进制数。词法分析时要将2进制或8进制数转化成十进制。如032应该转为26,但039则是39。以“0X”开头,后跟0,1,…,9,A,B,…F构成的串是十六进制数,词法分析时要将16进制数转化成十进制数。3.5词法错误词法错误就是指单词的构成不合法。本实验中主要考虑以下几种词法错误:1)标识符必须以字母开头,如果出现数字或是其他符号开头,就报错;2)标识符的长度不能超过8位,长度大于16的标识符报错;3)

9、整数必须以0开头,任何以数字开头的单词都是错误的;4)二进制、八进制、十进制的整数中出现任何其他字符,包括.等都要报错。4.算法说明算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单0词符号。(1)关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab[33]={"auto","brea

10、k","case","char","const","continue","do","else","enum","end","extern

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。