实验一词法分析器的设计

实验一词法分析器的设计

ID:13227161

大小:37.50 KB

页数:10页

时间:2018-07-21

实验一词法分析器的设计_第1页
实验一词法分析器的设计_第2页
实验一词法分析器的设计_第3页
实验一词法分析器的设计_第4页
实验一词法分析器的设计_第5页
资源描述:

《实验一词法分析器的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验一词法分析器的设计一、实验目的(1)学会针对转换图实现相应的高级语言源程序。(2)深刻领会状态转换图的含义,逐步理解有限自动机。二、实验内容(1)某计算机语言的编译程序的词法分析部分实现。(2)从左到右扫描每行该语言源程序的符号,拼成单词,换成统一的内部表示(token),送给语法分析程序。三、实现原理程序中先判断这个句语句中每个单元为关键字、常数、运算符、界符,对与不同的单词符号给出不同编码形式的编码,用以区分之。PL/0语言的EBNF表示<常量定义>::=<标识符>=<无符号整数>;<标识符>::=<字母>={<字母>

2、<数字>};<加法运算符>::=+

3、-<乘法运算符>:

4、:=*

5、/<关系运算符>::==

6、#

7、<

8、<=

9、>

10、>=<字母>::=a

11、b

12、…

13、X

14、Y

15、Z<数字>::=0

16、1

17、2

18、…

19、8

20、9四、设计过程1.关键字:void,main,if,then,break,int,Char,float,include,for,while,printfscanf并为小写。2."+”;”-”;”*”;”/”;”:=“;”:”;”<“;”<=“;”>“;”>=“;”<>“;”=“;”(“;”)”;”;”;”#”为运算符。3.其他标记如字符串,表示以字母开头的标识符。4.空格符跳过。5.各符号对应种别码关键字分别对应1-13运算符分别对应401-418,501-

21、513。字符串对应100常量对应200结束符#五、心得体会其实匹配并不困难,主要是C++知识要求相对较高,只要把握住指针就好了。附源程序:#include#include#include#includeinti,j,k,flag,number,status;/*statuswhichisusetojudgethestringiskeywordsornot!*/charch;charwords[10]={""};charprogram[500];intScan(charprogram[]){char*k

22、eywords[13]={"void","main","if","then","break","int","char","float","include","for","while","printf","scanf"};number=0;status=0;j=0;ch=program[i++];/*Tohandlethelettlespaceandstab*//*handleletters*/if((ch>='a')&&(ch<='z')){while((ch>='a')&&(ch<='z')){words[j++]=ch;ch=program[i++];}i--;words[j+

23、+]='';for(k=0;k<13;k++)if(strcmp(words,keywords[k])==0)switch(k){case0:{flag=1;status=1;break;}case1:{flag=2;status=1;break;}case2:{flag=3;status=1;break;}case3:{flag=4;status=1;break;}case4:{flag=5;status=1;break;}case5:{flag=6;status=1;break;}case6:{flag=7;status=1;break;}case7:{flag=8;sta

24、tus=1;break;}case8:{flag=9;status=1;break;}case9:{flag=10;status=1;break;}case10:{flag=11;status=1;break;}case11:{flag=12;status=1;break;}case12:{flag=13;status=1;break;}}if(status==0){flag=100;}}/*handledigits*/elseif((ch>='0')&&(ch<='9')){number=0;while((ch>='0')&&(ch<='9')){number=number*10

25、+(ch-'0');ch=program[i++];}flag=200;i--;}/*opereationandedgehandle*/elseswitch(ch){case'=':{if(ch=='=')words[j++]=ch;words[j]='';ch=program[i++];if(ch=='='){words[j++]=ch;words[j]='';flag=401;}else{i--;flag=402;}break;}case'>':{if(c

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

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

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