【精品】词法分析实验报告

【精品】词法分析实验报告

ID:43602091

大小:104.53 KB

页数:9页

时间:2019-10-11

【精品】词法分析实验报告_第1页
【精品】词法分析实验报告_第2页
【精品】词法分析实验报告_第3页
【精品】词法分析实验报告_第4页
【精品】词法分析实验报告_第5页
资源描述:

《【精品】词法分析实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验1词法分析实验报吿一、实验目的通过编写并上机调试一个词法分析程序,掌握在对程序设计语言的源程序进行扫描的过程中,将其分解后各类单词的词法分析方法。二、实验内容输入:据教学要求和学生貝体情况,从具有代表性的高级程序设计语言中,选取一个适当大小的子集,例如可以选取一类典型单词,也可以尽可能使各种类型的单词都能兼顾到。输出:单词串的输出形式,所输出的每一单词均按形如(CLASS,VALUE)的二元式编码。对于变量和常数,CLASS字段为相应的类别码,VALUE字段则是该标识符、常数在其符号表中登记项的序号(要求在变量名表登记项屮

2、存放该标识符的字符串;常数表登记项屮则存放该常数的二进制形式)。对于关键字和分隔符,采用一词一类的编码形式。由于采用一•词一类的编码方式,所以仅需在二元式的CLASS字段上放置和应的单词的类别码,VALUE字段则为“空”。不过,为便于查看由词法分析程序所输出的单词串,要求在CLASS字段上直接放置单词符号串本身。三、实验要求K待分析的简单语言的词法(1)关键字:beginifthenwhiledoend所有关键字都是小写。(2)运算符和界符::=+-*/<<=<>>>==;()#(3)其他单词是标识符(ID)和整型常数(NUM

3、),通过以下正规式定义:ID=letter(letterldigit)*NUM=digitdigit*(4)空格由空白、制表符和换行符组成。空格-•般用来分隔ID、NUM,运算符、界符和关键字,词法分析阶段通常被忽略。2、各种单词符号对应的种别码单词符乃种别码单词符号种别码begin1■■17if2■—■—18then3>20while4<>21do5<=22end6<23letter(letterldigit)*10>=24digitdigit*1125*13■q26/14(27+15)28■16#()3、词法分析程序的功能

4、输入:所给文法的源程序字符吊。输Hh二元组(syn,token或sum)构成的序歹ij。其中:syn为单词种别码;token为存放的单词□身字符串;sum为整型常数。四、源程序代码:#include#include#includecharprog[80],token[8];charch;intsyn,p,m=0,n,row,sum=0;char*rwtab[6]={“begin”,”if”,“then",“while”,“do”,“end"};voidscaner(){

5、for(n=0;n<&n++)token[nJ=NULL;ch=prog[p++];while(ch==,')ch=prog[p];P++;}if((ch>=*a'&&ch<=,z')ll(ch>=,A'&&ch<='Z,)){m=0;while((ch>=,0,&&ch<=,9,)ll(ch>=,a,&&ch<=,z,)ll(ch>=,A,&&ch<='Z,)){tokenfm++]=ch;ch=prog[p++];}token[m++]=W;p--;syn=10;for(n=0;n<6;n++)if(strcmp(toke

6、n,rwtab[n])==0){syn=n+l;break;}}elseif((ch>='()'&&chv=9)){{sum=0;while((ch>='0'&&chv=9)){sum二sum*10+ch-'O';ch=progfp++];}}P・・;syn=11;if(sum>32767)syn=-l;elseswitch(ch){case,<,:m=0;token[iTi++]=ch;ch=prog[p++l;if(ch==*>'){syn=21;tokenfm++]=ch;}elseif(ch=='='){syn=22;

7、token[m++l=ch;}else{syn=23;p--;}break;case,>f:m=0;token[m++]=ch;ch=prog[p++J;if(ch==*='){syn=24;token[m++]=ch;}else{syn=20;P-sbreak;casc,:r:m=0;tokcn[m++]=ch;ch=prog[p++];if(ch==,='){syn=18;token[m++]=ch;}else{syn=17;p--;}break;case,*,:syn=13;token[0]=ch;break;casel

8、/,:syn=14;token[0]=ch;break;case屮:syn=15;tokcn[0]=ch;brcak;case-r:syn=16;token[0]=ch;break;case=,:syn=25;tokenf()l=ch;break;casel;l:syn=26

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。