编译原理实验报告-词法分析器和LL文法_第1页
编译原理实验报告-词法分析器和LL文法_第2页
编译原理实验报告-词法分析器和LL文法_第3页
编译原理实验报告-词法分析器和LL文法_第4页
编译原理实验报告-词法分析器和LL文法_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编译原理综合性实验报告实验学期 2016至 2017学年 第1学期专业计算机科学与技术班级 1403学生姓名黄世增学号任课教师赵曦实验成绩编译原理课程综合性实验报告开课实验室:C2102016年12月 6日实验题目 |词法分析器的设计一、实验目的通过设计、编制、调试一个具体的词法分析程序,实现对高级程序设计语言源 程序进行扫描,并将其分解为各种单词的词法分析方法;加深对课堂教学的理解; 提高词法分析方法的实践能力。二、实验要求任选一种高级程序设计语言编程完成词法分析器。词法分析器应以教材所述 分词原理为依据,使用恰当的数据结构和方法,结构清晰、高效。编制一个读单词过程,源程序保存在文本文件中(

2、也可键盘输入),读取该文 件,识别出各个具有独立意义的单词,即关键字、标识符、常数、运算符、分界符 五大类。依次输出各个单词的内部单词种别及单词符号自身值,遇到错误时可显示“Eorror”,然后跳过错误部分继续显示。二、实验设备与环境硬件:PC机Pentium】。0以上。软件:WinlO, VS2010。三、实验内容正规文法- int |for| while | do | return | break | continue- |+ | - | * | /|=| | | = |,| ; | ( | ) | |- letter (letter | digit)*- digit digit*算法思想

3、算法的基本任务是从字符串表示的源程序中识别出具有独立意义的单词符号, 其基本思想是根据扫描到单词符号的第一个字符的种类,拼接出相应的单词符号。2.1主程序图1词法分析主程序示意图其中初始包括关键字、运算符、界限符的置初值。2.2扫描子程序的算法思想:在词法分析中,先以只读方式读取一个文件,自文件头开始扫描文本,滤去 开头的空格、回车符、换行符等。读取的字符送入word。扫描第一个字符,看匹 配的类型,并进行相应的类型分析,满足判断类型时,输出其种别码和值。四、实验步骤编写程序时,先定义几个全局变量,key事先存放7个关键字,words用 来存放识别出来的单词二元组,text用来存放从文件读取的

4、内容,word用于存放 识别出来的单词,length存放字符个数,k存放识别出来的单词个数。首先,将文本内容读取到text中,文本内容最后一个字符是空白符,然后调 用scan方法,逐个扫描每个字符,如果word的第一个字符是字母,则进行拼字 符串,再判断是关键字还是标识符;如果word的第一个字符是数字,则在word 清空之前判断是否有识别出非数字字符,若有,则出错,若没有,则识别出来的 字符串是常数;若word第一个字符是运算符或界限符,则各自存到words中。 最后扫描结束后输出。五、实验结果及分析i| fe液trt -记亭市一 口 X7Aint 1 部 k, a = 10;b a + 2

5、0;I5= M |I 11211640305- X六、实验小结和思考通过这次实验,我对词法分析器有了进一步的了解,而且对词法分析和语法 分析在实践中的应用有了深入的掌握,让我对高级语言的学习有了更深的认识, 了解得更透彻。七、源程序清单#include#include#includeusing namespace std;#define MAX 10000struct WordString(string Word;/单词int category;/类别);char *key7 = (int,for, while, do, return, break, continue);/关键字 WordSt

6、ring wordsMAX;创建一个单词符号串string text;读入的文本存入text中string word;分割出的单词用word表示int length;字符个数int k;总单词个数void scan()(int i,j;k=0;word=;for(i=0;i=A)&(word0=a)&(word0=A)&(texti=a)&(texti=48)&(texti=57)(word+=texti;)else(wordsk.Word二word;for(j=0;j|word0=48&word0=48&texti=A&texti=a&texti=z)(word+=texti;wordsk.

7、category=6;/表示出错,标识符以数字开头)else(wordsk.Word二word;if(wordsk.category!=6)wordsk.category=3;/表示常数 k+;word=;i-;)else(if(texti!=10&texti!=32&texti!=9)(word+=texti;) int main()(FILE *fp;文件指针fp=fopen(text.txt,r);打开文件if(fp=NULL)(printf(Cant open this file!n);exit(0);)int i=0;while(!feof(fp)判断是否到文件结尾(text+=fg

8、etc(fp);i+;)length=i;/text最后一个字符是空字符fclose(fp);关闭文件scan();for(i=0;ik;i+)输出(if(wordsi.category=6)printf(%s Eorrorn,wordsi.Word.c_str();elseprintf(%d, %s)n,wordsi.category,wordsi.Word.c_str();)getchar();return 0;)开课实验室:C210开课实验室:C210日实验题目语法分析LL(1)语法分析方法的实现一、实验目的通过设计、开发一个高级语言的LL (1)语法分析程序,实现对源程序的语法 检查和

9、结构分析,加深对相关课堂教学内容(包括自顶向下语法分析、First集、 Follow集、Select集、判断LL(1)文法的方法、文法等价变换、LL(1)分析表的 构造、对某一输入串的分析过程的理解,提高语法分析方法的实践能力。二、实验要求消除直接左递归前的文法消除直接左递归后的等价文法G 旧:EE+TGE: ETEEFE+TE|eTF*FTfFTTfFTf*FT| (E)|i (E)|i根据文法建立LL(1)分析表,并对输入串i+i*i进行语法分析,判断其是否是合法的句子,给出句子的分析过程。具体要求如下:1、理解语法分析在编译程序中的作用;2、理解LL(1)语法分析方法对文法的要求(必须是

10、LL(1)文法);3、理解LL(1)分析器模型;4、熟练掌握文法变换方法(消除直接左递归和提取左公共因子)。5、熟练掌握Select集合的求解方法和LL(1)分析表的构造方法;二、实验设备与环境硬件:PC 机 Pentium100 以上。软件:Win10, VS2010O三、实验内容给定一个上下文无关文法G,在LL(1)语法分析方法中,必须先求出Select 集,通过Select集判断是否是LL(1)文法,若是,则构造预测分析表。求出预测 分析表之后,键盘输入一个字符串,依据LL(1)分析表单步输出字符串的分析过程。四、实验步骤专业资料专业资料. C:U sershu a ng &hizer

11、gXDeskto pXttWlfll 403 -1411 &4. C:U sershu a ng &hizer gXDeskto pXttWlfll 403 -1411 &4邛引5 国也SILL诣活分析WefbuciUL诺法分析已成u 1 2 3 4 n- 6 l-l.J _J lo -u e i-i.u口wr jtE #ET 抵TF 柜T i WET KE1 见T- #ET 旧TF 祀 Ti KET 即T却半 #ETF M li #ET 州,以盘结尾:瑜人丰iM#1-iM# 电# 十讲2 +i*i# Fi#Fi# T# x诵;t=f所用产生武T-IFT:i-XE1T-;FIF-)iT坪1I-

12、:-_7?成六、实验小结和思考本实验加深了我对LL(1)分析法的算法和思想的理解。七、源程序清单#include#include#include#include/*1:E-TE 2:E-+TE 3:E-X? 4:T-FT 5:T-*FT 6:T-? 7:F-(E) 8:F-i*/int ll156=1,0,0,1,0,0,020,0,3,3,4,0,040,0,0,6,5,0,6,6,8,0,0,7,0,0;/表示 LL(1)分析表内容int main()char ch10=#,E;用于存放符号栈内容char str10;/存放输入串char str110;用于存放最初输入的字符串char cha;分析字符int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论