ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:110.44KB ,
资源ID:9443703      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9443703.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(词法分析报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

词法分析报告.docx

1、词法分析报告词法分析实验报告班级:学号:姓名:一、 实验目的设计、编制并调试一个词法分析程序,加深对词法分析原理的理解。二、 实验要求2.1 待分析的简单的词法(1)关键字:begin if then while do end所有的关键字都是小写。(2)运算符和界符: = + - * / = = = ; ( ) #(3)其他单词是标识符(ID)和整型常数(SUM),通过以下正规式定义:ID = letter (letter | digit)*NUM = digit digit*(4)空格有空白、制表符和换行符组成。空格一般用来分隔ID、SUM、运算符、界符和关键字,词法分析阶段通常被忽略。2.

2、2 各种单词符号对应的种别码:表2.1 各种单词符号对应的种别码单词符号种别码 单词符号种别码bgin1:17If2:=18Then320wile421do523lettet(letter|digit)*10=24dight dight*11=25+13;2614(27*15)28/16#02.3 词法分析程序的功能:输入:所给文法的源程序字符串。输出:二元组(syn,token或sum)构成的序列。其中:syn为单词种别码;token为存放的单词自身字符串;sum为整型常数。例如:对源程序begin x:=9: if x9 then x:=2*x+1/3; end #的源文件,经过词法分析后

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

4、, “if”, “then”, “while”, “do”, “end”,;否是图3-1(2)程序中需要用到的主要变量为syn,token和sum3.2 扫描子程序的算法思想:首先设置3个变量:token用来存放构成单词符号的字符串;sum用来整型单词;syn用来存放单词符号的种别码。扫描子程序主要部分流程如图3-2所示。是 是否字母数字 其他运算符、 符号界符等符号否是图 3-2四、词法分析程序的C语言程序源代码:#include #include char prog80,token8,ch;int syn,p,m,n,sum;char *rwtab6=begin,if,then,while

5、,do,end;scaner();main()p=0;printf(n please input a string(end with #):/n);doscanf(%c,&ch);progp+=ch;while(ch!=#);p=0;doscaner();switch(syn)case 11: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

6、!=0);getch();scaner() sum=0;for(m=0;m8;m+)tokenm+=NULL;ch=progp+;m=0;while(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;tok

7、enm+=ch;else syn=23;p-;break;case +: tokenm+=ch;ch=progp+;if(ch=+) syn=17;tokenm+=ch;else syn=13;p-;break;case -:tokenm+=ch;ch=progp+;if(ch=-) syn=29;tokenm+=ch;else syn=14;p-;break;case !:ch=progp+;if(ch=) syn=21;tokenm+=ch;else syn=31;p-;break;case =:tokenm+=ch;ch=progp+;if(ch=) syn=25;tokenm+=ch;

8、else syn=18;p-;break;case *: syn=15;tokenm+=ch;break;case /: syn=16;tokenm+=ch;break;case (: syn=27;tokenm+=ch;break;case ): syn=28;tokenm+=ch;break;case : syn=5;tokenm+=ch;break;case : syn=6;tokenm+=ch;break;case ;: syn=26;tokenm+=ch;break;case : syn=30;tokenm+=ch;break;case #: syn=0;tokenm+=ch;break;case :syn=17;tokenm+=ch;break;default: syn=-1;break;tokenm+=0;五、结果分析:输入begin x:=9: if x0 then x:=0-x+x*2=3/4; end # 后经词法分析输出如下序列: 如下图所示:图5-1六、总结:词法分析的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号,其基本思想是根据扫描到单词符号的第一个字符的种类,拼出相应的单词符号。通过本试验的完成,更加加深了对词法分析原理的理解。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1