编译原理词法分析实验报告

上传人:s9****2 文档编号:487722771 上传时间:2023-02-16 格式:DOCX 页数:7 大小:172.87KB
返回 下载 相关 举报
编译原理词法分析实验报告_第1页
第1页 / 共7页
编译原理词法分析实验报告_第2页
第2页 / 共7页
编译原理词法分析实验报告_第3页
第3页 / 共7页
编译原理词法分析实验报告_第4页
第4页 / 共7页
编译原理词法分析实验报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《编译原理词法分析实验报告》由会员分享,可在线阅读,更多相关《编译原理词法分析实验报告(7页珍藏版)》请在金锄头文库上搜索。

1、词法分析器实验报告一、实验目的选择一种编程语言实现简单的词法分析程序,设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。二、实验要求2、1待分析的简单的词法(1)关键字:beginifthenwhiledoend所有的关键字都就是小写。(2)运算符与界符:=+-*/=;()#(3)其她单词就是标识符(ID)与整型常数(SUM),通过以下正规式定义:ID=letter(letter|digit)*NUM=digitdigit*(4)空格有空白、制表符与换行符组成。空格一般用来分隔ID、SUM、运算符、界符与关键字,词法分析阶段通常被忽略。2、2各种单词符号对应的种别码:表2、1各种单词

2、符号对应的种别码单词符号种别码单词符号种别码begin117If2:=18Then320while421do523lettet(letter|digit)*10=24dightdight*11=25+13;26一14(27*15)28/16#02、3词法分析程序的功能:输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。例如:对源程序beginx:=9:ifx9thenx:=2*x+1/3;end#的源文件,经过词法分析后输出如下序列(1,begin)(10,x)(18,:二)(11,

3、9)(26,;)(2,if)三、词法分析程序的算法思想:算法的基本任务就是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想就是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。3、1主程序示意图:主程序示意图如图3-1所示。其中初始包括以下两个方面:关键字表的初值。关键字作为特殊标识符处理,把它们预先安排在一张表格中(称为关键字表),当扫描程序识别出标识符时,查关键字表。如能查到匹配的单词,则该单词为关键字,否则为一般标识符。关键字表为一个字符串数组,其描述如下:Char*rwtab6=begin”,if”,then”,While”,do,end”,;程序中3、2扫描子程

4、序的算法思想:放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。变量初始化忽略空格返回首先设置3个变量:token用来存放构成单词符号的字符串;sum用来整型单词;syn用来存图3-2四、词法分析程序的源代码:#include #includestring、h#include#includeprocess、hchar prog80,token8,ch;int syn,p,m,n,sum;char*rwtab6=begin,if,then,while,do,end;scaner();main()P=0;printf(n please input a string(end with #):

5、/n);doscanf(%c,&ch);progp+尸ch;while(ch!=#);p=0;doscaner();switch(syn)case11:printf( %-10d%5d )n,sum,syn);break;case -1:printf(you have input a wrong stringn);getch();exit(0);default:printf( %-10s%5d )n,token,syn);break;while(syn!=0);getch();scaner() sum=0;for(m=0;m8;m+)tokenm+=NULL;ch=progp+;m=0;whi

6、le(ch= )|(ch=n)ch=progp+;if(ch=a)|(ch= A) while(ch=a)|(ch=A)|(ch=0)&(ch=9)tokenm+=ch;ch=progp+;p-;syn=10;for(n=0;n=0)&(ch=0)&(ch=9) sum=sum*10+ch-0;ch=progp+;p-;syn=11;else switch(ch) case :tokenm+=ch;ch=progp+;if(ch=)syn=24;tokenm+=ch;elsesyn=31;P-;)break;case =:tokenm+=ch;ch=progp+;if(ch=-)syn=25;

7、 tokenm+=ch;)elsesyn=18;P-;)break;case syn=15; tokenm+=ch;break;case 7: syn=16; tokenm+=ch;break;casesyn=27; tokenm+=ch;break;casesyn=28; tokenm+=ch;break;case : syn=5;tokenm+=ch; break;tokenm+=ch;break;case :syn=17; tokenm+=ch; break;default: syn=-1;break;)tokenm+=0;)elsesyn=23;P-;)break;casetokenm

8、+=ch;ch=progp+;if(ch=+)syn=17;tokenm+=ch;)elsesyn=13;P-;)break;case-:tokenm+=ch;ch=progp+;if(ch=-)syn=29;tokenm+=ch;)elsesyn=14;P-;)break;caseT:ch=progp+;if(ch=-)syn=21;tokenm+=ch;casesyn=6;tokenm+=ch;break;casesyn=26;tokenm+=ch;break;caseV:syn=30;tokenm+=ch;break;casesyn=O;五、结果分析:输入beginy:=8:ifx=8thenx:=2*(1+1/3);end#经词法分析输出如下序列:如图所示六、总结:虽然编译这门课很难,很多时候听都听不懂,但就是做词法分析器还就是比较有趣的。尽管这个程序不就是100%由我所编写的,仍然花了我一些心思,这个程序就是由我与同学共同编写、调试的,期间也有不少的磨合。也许,编译课上我并没有学到太多关于本学科的知识,但我从教员那里了解了、收获了很多书本上没有的东西,丰富了我的阅历,拓宽了视野,也学会了很多做人的道理。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号