词法分析器实验报告示例(共9页).doc
《词法分析器实验报告示例(共9页).doc》由会员分享,可在线阅读,更多相关《词法分析器实验报告示例(共9页).doc(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上 词法分析器实验报告一. 需求分析1. C语言关键字的子集,以文件形式保存,待判断的C语言语句以文件形式保存。2. 关键字文件包括标识符、基本字、常数、运算符和界符以及相应的种别码。3. 在计算机终端顺次输出各词法单位的种别码和值。若为标识符,其值为该标识符在标识符表中的位置;若为常数,其值为该常数在常数表中的位置;其余值为-1。非法输入单词的种别码为-1,值为-2。4. “单词”定义:C语言中最小的语法单位。“标识符”定义:用户自定义的标志符。5. 测试数据:文本文件为unknowedword.text二. 概要设计1. 单词种别码设计如表一所示: 表一.种别码设计
2、种别码单词种别码单词种别码单词1for6+11)2if7-12=3else8+=13;4+9-=14标识符5-10(15实数其它其它字母初态字母012终态22.单词规划的状态图: A标识符及关键字如图一所示: 数字E其它数字小数点数字终态其它数字+或-E数字小数点数字初态数字01324567 图一.标识符状态转换图B实数如图二所示: 图二.实数状态转换图非、+初态+012终态234 C运算符如图三所示 图三.运算符状态转换图 D其它与运算符雷同,此处略3. 数据结构 knowN 用来存放构成单词符号的字符串; unknowN用来存放待辨别的字符串;chartabTN 用来存放识别出的标识符;k
3、eytabMN 用来存放从文件中读入的基本字;consttabT 用来存放识别出的实数。以上均设为全局变量。4.基本操作 Getchar() 初始条件:unknow中读入了一串待辨别的字符串。 操作结果:从unknow读入一个字符到ch中,指向unknow的指针加1。 Getbc() 初始条件:unknow中读入了一串待辨别的字符串。 操作结果:从unknow中读入不是空格的下一个字符。 Concat() 初始条件:know中为字母且ch中为字母,或know中为数字(包括小数点)ch中也为数字。 操作结果:将ch中的字符连接到know中。 Isletter() 初始条件:ch中已经读入了一个新
4、的字符。 操作结果:判断ch中的字符是否字母。 Isdigit() 初始条件:ch中已经读入了一个新的字符。 操作结果:判断ch中的字符是否数字。 Keyword() 初始条件:已判断出know中的字符串为标识符。 操作结果:判断know中的字符串单词是否关键字。 Retract() 初始条件:ch中的字符不能与know中的字符串组成可识别的单词。 操作结果:将ch中的字符退回unknow中,ch为空格。 Insertchar() 初始条件:已判断出know中的字符串为非关键字的标识符。 操作结果:将know中的字符串插入到标识符表chartab中。 Insertconst() 初始条件:已判
5、断出know中的字符串为实数。 操作结果:将know中的字符串插入到实数表consttab中。Aword(int &code) 初始条件:ch中读入了新的字符。 操作结果:判断unknow中指针当前位置开始的单词是否标识符。Real_number(int &code)初始条件:ch中读入了新的字符。 操作结果:判断unknow中指针当前位置开始的单词是否实数。 5.本程序包含的模块WordAnsis模块实现对一个单词的识别功能。Main 模块调用词法分析器,分析文件unknowedword.text中所给出的程序。6.各模块间调用关系 main WordAnsis 各基本操作 三. 详细设计程
6、序源代码如下:#include#include#include#include#define N 10#define M 13#define T 5char ch,knowN,unknowN,chartabTN, keytabMN; float consttabT,*pcos; char *puk,*pk,*pch;FILE *fkeywd,*funknw;void Getchar()ch=*puk; puk+;void Getbc()while(ch= ) Getchar(); void Concat() *pk=ch; pk+;int Isletter() if(ch64)&(ch96)&
7、(ch47)&(ch58) return 1; else return 0;int Keyword() int i; for(i=0;iM;i+) if(strcmp(know,keytabi)=0) return i+1; return 14;void Retract() ch= ; puk-;int Insertchar() strcpy(pch,know); pch+=N; return (pch-chartab0)/N;int Insertconst() int i,t,t1=-1,t2=-1,t3=-1; float num=(float)0.0,para=(float)0.1,te
8、mp=(float)0.0; for(i=0;i=0;i-) para*=10; num+=para*(knowi-48); if(t1!=-1) if(t2=-1) t=t3; else t=t2; para=1; for(i=t1+1;i=t;i-) para*=10; temp+=para*(knowi-48); for(i=0,t=1;itemp;i+) t*=10; if(knowt2+1=-) num/=t; else num*=t; *pcos=num; pcos+; return pcos-consttab;int Aword(int &code) /若是标识符,返回值为该标识
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析器 实验 报告 示例
限制150内