词法分析器-计算器-设计与实现实验报告汇总(共21页).doc
《词法分析器-计算器-设计与实现实验报告汇总(共21页).doc》由会员分享,可在线阅读,更多相关《词法分析器-计算器-设计与实现实验报告汇总(共21页).doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上辅导教师 张静 成绩 实验日期实验时间1实验名称 :词法分析器的设计与实现2、实验目的(1)掌握C语言单词符号的划分、正规式、状态转换图及词法分析器的实现。(2)掌握词法分析程序的作用。3、实验要求(1)对任给的一个C语言源程序,能够滤掉空格、回车换行符、tab键及注释。(2)识别各类单词符号,如关键字、标识符、运算符、常数、界符,结果以二元式形式输出,并构造符号表。(3)输出有词法错误的单词及所在行号。(在此阶段只能识别有限的词法错误)4、实验原理根据扫描到的单词符号的第一个字符的种类,分别转到相应的程序进行处理。这些程序的功能就是识别以相应字符开头的各类单词符号。
2、5、实验步骤(1)根据C语言各类单词的正规式,构造能识别各类单词的状态转换图。(2)根据状态转换图,构造识别各类单词的词法分析器。6、状态转换图及词法分析程序 状态转换图:01324567空白字母非字母与数字字母或数字数字非数字运算符界符其他*词法分析程序:#include#include#include#includeusing namespace std;string keywords20=include,void,main,int,char,float,double,if,else,then,break,continue,for,do,while,printf,scanf,begin,e
3、nd,return;char rz99999= ;string id10000;int pp=0;string nu10000;int qq=0; int choice1(char a) /判断是否是字母if(a=a&a=A&a=0&a=9)return 1;else return 0;int alpha(int st) /识别保留字和标识符char wordbuf20= ;int n=0;for( ; ; )wordbufn=rzst;st+;n+; if(choice2(rzst)=1)|(choice1(rzst)=1)|(rzst=_)wordbufn=rzst;else break;
4、int flag=0;for(int k=0;k20;k+)if(strcmp(keywordsk.c_str(),wordbuf)=0) flag=1;if(flag=0)int flagg=-1;for(int t=0;tpp;t+)if(strcmp(idt.c_str(),wordbuf)=0)flagg=t;if(flagg!=-1) printf( (id,%d) ,flagg);elseidpp=wordbuf;printf( (id,%d) ,pp);pp+;elseprintf( ();for(int i=0;in;i+)printf(%c,wordbufi);printf(
5、,-) );return st;int number(int st) /识别整数char numbuf20= ;int n=0;int k=0;int flag=0;for( ; ; )numbufn=rzst;st+;n+;if(choice2(rzst)=1)numbufn=rzst;else if(k=0)&(rzst=.) numbufn=rzst;k+;else if(choice1(rzst)=1)numbufn=rzst;flag=1;continue;else break;if(flag=0)int flagg=-1;for(int t=0;tqq;t+)if(strcmp(n
6、ut.c_str(),numbuf)=0)flagg=t;if(flagg!=-1) printf( (nu,%d) ,flagg);elsenuqq=numbuf;printf( (nu,%d) ,qq);qq+;elseprintf( ();for(int i=0;in;i+) printf(%c,numbufi);printf(,error digital!) );return st;int anotation(int st) /处理除号/和注释char tabuf9999= ;int n=0;st+;if(rzst=/)printf( (/,-) );st+;while(rzst!=1
7、0)tabufn=rzst;st+;n+;printf( n 注释);for(int i=0;in;i+)printf(%c,tabufi);else if(rzst=*)printf( (/*,-) );st+;int stt=st+1;while(1)if(rzst=*&rzst+1=/) break;tabufn=rzst;st+;n+;if(rzst+1=0)printf(/* error!n);return st+1;printf( n 注释);for(int i=0;i: st+;if(rzst=) st+;printf( (rlop,=) ); else printf( (rlo
8、p,) );break;case : st+;if(rzst=) st+;printf( (rlop,=) ); else printf( (rlop,) );break;case %: st+;if(rzst=) st+;printf( (%=,-) ); else printf( (%,-) );break;case !: st+;if(rzst=) st+;printf( (!=,-) ); elseprintf( (!,wrong thing!) );break;case &: st+;if(rzst=&) st+;printf( (&,-) ); else printf( (&,wo
9、rng word!) );break;case |: st+;if(rzst=|) st+;printf( (|,-) ); else printf( (|,worng word!) );break;case : st+;printf( (,-) );break;case : st+;printf( (,-) );break;case (: st+;printf( (,-) );break;case ): st+;printf( (),-) );break;case : st+;printf( (,-) );break;case : st+;printf( (,-) );break;case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析器 计算器 设计 实现 实验 报告 汇总 21
限制150内