- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
词法分析实践报告
《编译系统设计实践》
词法分析器的构建
学生姓名(学号): 曾伙光(031002419)
学生姓名(学号): 林晓红(031002110)
学生姓名(学号):
学生姓名(学号):
学生姓名(学号):
专 业 班 级 : 计算机科学与技术
指 导 教 师 : 何振峰
二○一二年十一月二十四日
目 录
1.实验目的……………………………………………………………1
2.实验内容……………………………………………………………1
3.词法单元说明………………………………………………………1
4.算法说明……………………………………………………………1
5.程序的实现与执行…………………………………………………1
6.结论…………………………………………………………………1
参考书目………………………………………………………………1
实验目的
通过设计、编制一个具体的词法分析程序,加深对词法分析原理的理解。
实验内容
以经过改造的PASCAL语言(或C语言)源程序作为词法分析对象,选取它的一个适当大小的子集,可以选取一类典型单词(改造部分必须完成)。基本要求:对源程序从左到右进行扫描,对组成源程序的字符串拼接成为单词;并把其并把其转换成属性字输出,并管理符号表,处理词法错误;要求能处理注释。
3.词法单元说明
3.1 关键词
在C语言编程中,为了定义变量、表达语句功能和对一些文件进行预处理,还必须用到一些具有特殊意义的字符,这就是关键字。关键字已被编译系统本身使用,所以编写程序时不能够使用这些关键字来作为标识符。C语言中关键字主要有以下三类:? 类型说明符:用来定义变量、函数或其他数据结构的类型,如unsigned char,int,long等。? 语句定义符:用来标示一个语句的功能,如if,for等 。? 预处理命令字:用来表示预处理命令的关键字,如include,define等。
3.2 运算符
C语言的运算范围很宽,除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。主要分为三大类:算术运算符、 关系运算符与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算符。
C语言运算符主要有:( ) 圆括号;[ ]下标运算符;-指向结构体成员运算符;“ ! ”逻辑非运算符;“ ++ ”前缀增量运算符;“ -- ”前缀减量运算符;“ - ”负号运算符;“ ”地址运算符;“ * ” 乘法运算符指针运算符;“ / ” 除法运算符;“ % ” 取余运算符“ + ”加法运算符;“ - ”减法运算符、=、、=关系运算符“ == ”等于运算符;“ != ”不等于运算符“ ”按位与运算符“”逻辑与运算符“ || ”逻辑或运算符“,” 逗号运算符。
置初值
调用scaner子程序
输出词法单元
N 输入串结束?
Y
结束
图4-1
(4)scaner子程序的实现思想
设置3个变量:①token用来存放构成单词符号的字符串;②sum用来整型单词;③syn用来存放单词符号的种别码。
Scaner子程序中首先过滤空格和换行符,扫描得到当前ch:
1)如果是字母,判断下一个,如是数字或字母,继续直至不是字母或者是数字,将syn置为2;将此时的单词与关键字比较,获得识别符,syn+1。
2)如果是数字,循环看下一个是否为数字或者X,并用max记录数字串中最大的数,继续直至不是数字为止,将数字串存入数组c[n]中,根据max的值判断该数为几进制数,再转化为十进制数。
如果是+、-、*、/、(、)、[、]、{、}、;等,直接token中。如果是、、=、!时,要判断下一个,是否构成了=、=、==、!=。然后在存入token中。
如果下一个字符是空,换行,则跳过去下一个字符。
在做词法分析的时候,注意每一次判断结束之后要将token清空,而且要注意回退,即当输入串下一个不满足要求的时候,要回退一格。
扫描子程序主要部分流程如图4-2所示。
您可能关注的文档
最近下载
- 2025【基于哈佛分析框架的企业财务分析国内外文献综述3100字】.docx VIP
- 人工智能技术在企业管理决策中的应用与发展研究.docx VIP
- 全球玉米供需形势分析及后市价格展望(1).pptx VIP
- 护渔员考试题目及答案.doc VIP
- 压缩空气储能地下储气库工程施工方案.docx VIP
- SAJ三晶PDG10智能水泵变频器用户手册使用说明书.pdf
- 西南大学教学示范楼暖通设计.docx
- 武汉大学《环境微生物学》内部题库练习期末真题汇编及答案.docx
- 华南理工大学《数据库系统》15-17年历年期末考试试卷(部分含答案).pdf VIP
- CECA_GC 4-2017_建设项目全过程造价咨询规程.pdf
原创力文档


文档评论(0)