版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理实验报告院系: 000000姓名:0000 班级: 0000000学号:00000000题目词法分析器完成日期:2014 年10月8日实验一:词法分析程序设计【开发语言及实验环境】开发语言:C/C+/C#实验环境:Microsoft Visual Studio 6.0/ Microsoft Visual Studio .NET 2005 【实验目的】1理解词法分析在编译程序中的作用2、加深对有穷自动机模型的理解3、掌握词法分析程序的实现方法和技术 【实验要求】对一个简单的语言的子集编制一个一遍扫描的词法分析程序。【实验内容】1、待分析的简单语言词法(1) 关键字可以自由添加。女口 C语
2、言的关键字:main if else int char return void while 等。(2) 标识符(ID)ID 7 letter(letter|digit)* Letter a| |z|A| |Zdigit 0| |9(3) 常数(可以先以整形常数为例)NUM 7digit(digit)*digit0|9(4) 运算符如C语言中的运算符=+ - * / = = !=等。(5) 界符如C语言中的;:, ()等。空格由空白、制表符和换行符组成。空格 一般用来分隔关键字、ID、NUM、运算符和界符。词法分析阶段空格通常 被忽略。2、各种单词类别及对应的种别编码关键字设置为099,如“ m
3、ain”设置为0, “ if ”设置为1,;标识符设置为100;常数设置为101109,如整形常数设置为101,小数常数设置为102,; 运算符设置为110149,如“=”设置为111, “ + ”设置为112,;界符设置为150159,如“;”设置为150, “,”设置为151,。3、词法分析程序的功能输入:所给文法的一段源程序字符串输出:二元组(syn, token)构成的序列。syn为单词种别码;token为存放的单词自身字符串;例如:对源程序int x =9; if (x0)x=2*x+1/3;经词法分析后输出如下序列:(3, int)(1, x(4, =)(2, 9)拼出相应的单词符
4、号。4、主要算法思想 算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符 号,其基本思想是根据扫描到单词符号的第一个字符种类,(1)主程序示意结构图:(2)扫描子程序(scanne)的算法思想5、关键字表置初值关键字作为特殊标识符处理,把它们预先安排在一张表格中(关键字表) 当扫描程序识别标识符时,查关键字表。如能查到匹配的单词,则为关键字,否 则为一般标识符。6调试程序,验证输出结果。【思考题】1、在编程过程中遇到了哪些问题,你是如何解决的。2、源程序若存在注释,如何实现词法分析,在现有程序基础上进行扩充。功能测试:VPwtxKen-Lar andA Jwri wi at ra
5、t祢好淆输入:醐2.输入字符串 AAAAAA#其结果显示如下:怩好请输入:一廿3.输入字符串1234#其结果显示如下:你好请输入= i23411,1234X0,源代码如下:#in clude#in clude char prog80,toke n 6;char ch;int sy n,p ,m, n,sum;char * rwtab8=begi rr,if,the rr,while,do,e nd,start,foL;main ()p=0;printf(n你好,请输入:”);doch=getchar();p rog p+=ch;while(ch!=#);p=0;dosca ner();swit
6、ch(s yn)case 11: prin tf(%d,%d),s yn ,sum);break;case -1: prin tf(i nput errorn ”);break;default: prin tf(%d,%s),sy n,toke n);while(sy n!=0);getch(); /*词法扫描程序:*/sca ner()for(n=0;n8;n+)toke nn =NULL;m=0;ch=p rog p+;while(ch= )ch=p rog p+;if(ch=a)|(ch=A)while(ch=a)|(ch=A)|(ch=0)toke n m+=ch;ch=p rog p
7、+;toke nm+=0;ch=prog-p;syn=10;for(n=0;n8;n+)if(strcm p( toke n, rwtab n )=0) syn=n+1;break;elseif(ch=0)sum=0;while(ch=0) sum=sum*10+ch-0; ch=prog p+;ch=prog-p;syn=11;elseswitch(ch)case )syn=21;toke n m+=ch; elseif(ch=)syn=22;toke n m+=ch;elsesy n=20;ch=prog-p; break;case :toke n m+=ch; ch=prog p+; i
8、f(ch=) syn=24;toke n m+=ch; elsesyn=23; ch=prog-p;break;case :toke n m+=ch;ch=p rog p+; if(ch=)syn=18;toke n m+=ch; elsesyn=17;ch=prog-p;break;case +:s yn=13;toke n0 =ch;break; case -:s yn=14;toke n0 =ch;break;case *:s yn=15;toke n0 =ch;break; case /:s yn=16;toke n0 =ch;break;case :=:s yn=18;toke n0 =ch;break; case :s yn=21;toke n0 =ch;break; case =:s yn=24;toke n0 =ch;break; case =:s yn=25;toke n0 =ch;break;case ;:s yn=26;toke n0 =ch;break; case (:s yn=27;toke n0 =ch;break;case ):s yn=28;toke n0 =ch;break; case #:s yn=0;toke n0 =ch;break;case !:s yn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西京学院《军事理论(二)》2024-2025学年第二学期期末试卷
- 景区内部监察管理制度
- 淄博师范高等专科学校《大学外语理论》2024-2025学年第二学期期末试卷
- 机关内部防控管理制度
- 机关部门内部会议制度
- 机构编制内部管理制度
- 林业局内部审计制度
- 某学校内部稽核制度
- 检察院内部领导制度规定
- 河长办内部管理制度
- KA-T 22.3-2024 矿山隐蔽致灾因素普查规范 第3部分:金属非金属矿山及尾矿库
- 2026年印刷公司油墨化学品存储安全管理制度
- 历史读书心得交流
- 农业单位管理制度范本
- 房屋检测基础知识培训课件
- 眼科复用器械清洗流程
- 手抄报讲解课件
- 第05章 生物化学诊断试剂的研制
- 2.4信息系统中的控制教学设计-浙教版高中信息技术必修二
- DBJT15-94-2013 静压预制混凝土桩基础技术规程
- 电力课件小学生
评论
0/150
提交评论