实验一词法分析器实验报告示例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

liudao + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档