- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验一词法分析器实验报告示例
词法分析器实验报告
需求分析
C语言关键字的子集,以文件形式保存,待判断的C语言语句以文件形式保存。
关键字文件包括标识符、基本字、常数、运算符和界符以及相应的种别码。
在计算机终端顺次输出各词法单位的种别码和值。若为标识符,其值为该标识符在标识符表中的位置;若为常数,其值为该常数在常数表中的位置;其余值为-1。
非法输入单词的种别码为-1,值为-2。
“单词”定义:C语言中最小的语法单位。
“标识符”定义:用户自定义的标志符。
测试数据:文本文件为unknowedword.text
概要设计
单词种别码设计如表一所示:
表一.种别码设计
种别码 单词 种别码 单词 种别码 单词 1 for 6 ++ 11 ) 2 if 7 -- 12 = 3 else 8 += 13 ; 4 + 9 -= 14 标识符 5 - 10 ( 15 实数 2.单词规划的状态图:
A标识符及关键字如图一所示:
图一.标识符状态转换图
B实数如图二所示:
图二.实数状态转换图
C运算符如图三所示
图三.运算符状态转换图
D其它与运算符雷同,此处略
3. 数据结构
know[N] 用来存放构成单词符号的字符串;
unknow[N]用来存放待辨别的字符串;
chartab[T][N] 用来存放识别出的标识符;
keytab[M][N] 用来存放从文件中读入的基本字;
consttab[T] 用来存放识别出的实数。
以上均设为全局变量。
4.基本操作
Getchar()
初始条件:unknow中读入了一串待辨别的字符串。
操作结果:从unknow读入一个字符到ch中,指向unknow的指针加1。
Getbc()
初始条件:unknow中读入了一串待辨别的字符串。
操作结果:从unknow中读入不是空格的下一个字符。
Concat()
初始条件:know中为字母且ch中为字母,或know中为数字(包括小数点)ch中也为数字。
操作结果:将ch中的字符连接到know中。
Isletter()
初始条件:ch中已经读入了一个新的字符。
操作结果:判断ch中的字符是否字母。
Isdigit()
初始条件:ch中已经读入了一个新的字符。
操作结果:判断ch中的字符是否数字。
Keyword()
初始条件:已判断出know中的字符串为标识符。
操作结果:判断know中的字符串单词是否关键字。
Retract()
初始条件:ch中的字符不能与know中的字符串组成可识别的单词。
操作结果:将ch中的字符退回unknow中,ch为空格。
Insertchar()
初始条件:已判断出know中的字符串为非关键字的标识符。
操作结果:将know中的字符串插入到标识符表chartab中。
Insertconst()
初始条件:已判断出know中的字符串为实数。
操作结果:将know中的字符串插入到实数表consttab中。
Aword(int code)
初始条件:ch中读入了新的字符。
操作结果:判断unknow中指针当前位置开始的单词是否标识符。
Real_number(int code)
初始条件:ch中读入了新的字符。
操作结果:判断unknow中指针当前位置开始的单词是否实数。
5.本程序包含的模块
WordAnsis模块——实现对一个单词的识别功能。
Main 模块——调用词法分析器,分析文件unknowedword.text中所给出的程序。
6.各模块间调用关系
main WordAnsis 各基本操作
详细设计
程序源代码如下:
#includestdio.h
#includeconio.h
#includestdlib.h
#includestring.h
#define N 10
#define M 13
#define T 5
char ch,know[N],unknow[N],chartab[T][N], keytab[M][N];
float consttab[T],*pcos;
char *puk,*pk,*pch;
FILE *fkeywd
您可能关注的文档
最近下载
- 多层住宅小区工程监理规划.docx VIP
- NY_T 3213-2023 植保无人驾驶航空器 质量评价技术规范.docx VIP
- 盘扣式悬挑脚手架施工方案施工计划.doc VIP
- 部编版小学一年级语文上册表格式教案全册.doc VIP
- 电线电缆抗张强度检测结果的测量不确定度评定.doc VIP
- (正式版)H-G-T 22820-2024 化工安全仪表系统工程设计规范.docx VIP
- 绘本故事PPT课件之我好害怕.pptx
- 广东省惠州市博罗县泰美镇城镇总体规划项目建议书.doc VIP
- 虚拟仪器及LabVIEW知到智慧树期末考试答案题库2025年山东科技大学.docx VIP
- 2025年全国Ⅰ卷英语听力评析和听力材料二次开发(课件).pptx
文档评论(0)