编译原理实验报告——词法分析器和LL文法

上传人:汽*** 文档编号:519515654 上传时间:2023-06-30 格式:DOCX 页数:32 大小:444.95KB
返回 下载 相关 举报
编译原理实验报告——词法分析器和LL文法_第1页
第1页 / 共32页
编译原理实验报告——词法分析器和LL文法_第2页
第2页 / 共32页
编译原理实验报告——词法分析器和LL文法_第3页
第3页 / 共32页
编译原理实验报告——词法分析器和LL文法_第4页
第4页 / 共32页
编译原理实验报告——词法分析器和LL文法_第5页
第5页 / 共32页
点击查看更多>>
资源描述

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

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

2、源程序保存在文本文件中(也可键盘输入),读取该文件,鉴别出各个拥有独立意义的单词,即要点字、表记符、常数、运算符、分界符 五大类。依次输出各个单词的内部单词种别及单词符号自己值,遇到错误时可显示“Eorror ”,此后跳过错误部分连续显示。二、实验设备与环境1 硬件:PC 机 PentiumlOO 以上。2 软件:WinlO,VS2010。三、实验内容1 正规文法- int Iforl while I do I return I break I continue- I+ I - I * I / |=| I I = I , I ; I ( I ) II- letter (letter I dig

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

4、来的单词二元组,text用来存放从文件读取的内容,word用于存放鉴别出来的单词,length 存放字符个数,k存放鉴别出来的单词个数。第一,将文本内容读取到text中,文本内容最后一个字符是空白符,此后调用scan方法,逐个扫描每个字符,若是word的第一个字符是字母,则进行拼字符串,再判断是要点字还是表记符;若是word的第一个字符是数字,则在word清空从前判断可否有鉴别出非数字字符,若有,则出错,若没有,则鉴别出来的字符串是常数;若 word第一个字符是运算符或界限符,则各自存到words中。 最后扫描结束后输出。五、实验结果及解析J tEtf .-M LIX5 = A MlTI Ll

5、 is六、实验小结和思虑经过此次实验,我对词法解析器有了进一步的认识,而且对词法解析和语法解析在实践中的应用有了深入的掌握,让我对高级语言的学习有了更深的认识,认识得更透彻。七、源程序清单#include vstdio.h#include vstdlib.h#include vstringusing namespacestd;#define MAX 10000struct WordStringstring Word; / 单词int category; / 种类;char *key= int,”for , while , do , return , break , continue ;/ 要点

6、字 WordString wordsMAX;/创办一个单词符号串string text;/读入的文本存入 text中string word;/切割出的单词用 word 表示int length;/字符个数int k;/总单词个数void scan()int i,j;k=0;word=;for (i=O;iv=length-l;i+)if(word!= )if(word0=A)&(word0v=Z)ll(word0=a )&(word0v=z) / 首字符是字母if(texti= A )&(textiv= Z)ll(texti=a )&(textiv=z)ll(texti=48 )&(texti

7、v=57)word+=texti;elsewordsk.Word=word;for (j=0;jv7;j+)if(wordsk.Word=keyj) wordsk.category=1; / 表示要点字 break ;else if(j=6)wordsk.category=2; / 表示表记符k+;word=;i-;elseif(word0= ,llword0=;llword0=llword0=llword0=( llword0= ) )/首字符是界限符wordsk.Word=word;wordsk.category=5; / 表示界限符k+;word=;i-;elseif(word0= +

8、llword0= -llword0=* llword0= / llword0= d0= llword0= =48&word0v=57)/ 首字符是数字if(texti=48&textiv=57)word+=texti;else if(texti= A &textiv= Z)ll(texti=a &textiv=word+=texti;wordsk.category=6; /表示出错,表记符以数字开头elsewordsk.Word=word;if(wordsk.category!=6)wordsk.category=3; / 表示常数k+;word=;i-;llworz)elseif(texti

9、!=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(O);int i=0;while (!feof(fp)/判断可否到文件结尾text+=fgetc(fp);i+;length=i; /text最后一个字符是空字符 fclose(fp);/ 关闭文件scan();for (i=0;ivk;i+)/ 输出if(wordsi.category=6)printf( %s Eorror

10、n ,wordsi.Word.c_str();elseprintf( (%d, %s)n ,wordsi.category,wordsi.Word.c_str();getchar();return 0;一、实验目的经过设计、开发一个高级语言的 LL ( 1 )语法解析程序,实现对源程序的语法 检查和构造解析,加深对相关课堂授课内容(包括自顶向下语法解析、First集、Follow集、Select集、判断LL(1)文法的方法、文法等价变换、LL(1)解析表的构造、对某一输入串的解析过程的理解,提高语法解析方法的实践能力。二、实验要求除掉直接左递归前的文法除掉直接左递归后的等价文法G E : E

11、f E+TG E : E TEE fTE +TE | T t*FT FTTfFTf *ft | F (E)liF (E)|i依照文法建立LL( 1)解析表,并对输入串i+i*i进行语法解析,判断其是否是合 法的句子,给出句子的解析过程。详尽要求以下:1、理解语法解析在编译程序中的作用;2、理解LL(1)语法解析方法对文法的要求(必定是LL(1)文法);3、理解LL(1)解析器模型;4、熟练掌握文法变换方法(除掉直接左递归和提取左公共因子)。5、熟练掌握Select会集的求解方法和LL(1)解析表的构造方法;二、实验设备与环境匸:、Lhbshu angi hi zer,DesliIoprbfl

12、144J3-1411 &403G5-蔔丈彊L l jSSSJfffDFbupVJJ 1 语法湖斤巳?疋i于号y : y :3b 7 J T_ 3 pa T ? -J RJ 3 J IT- J _3SM c. rf-rftf tftfwflrf tf-3FITi1FaJT Tfl-1 #N fi Sr * 1 i A 1F F r- J T T-T1 T1 1 Tl T1 TxFT -功ZF六、实验小结和思虑本实验加深了我对 LL(1)解析法的算法和思想的理解。七、源程序清单#inc1udevstring h#inc1ude#inc1ude#inc1udevcon io.h/*1:E-TE 2:E-+TE 3:E- ? 4:T-FT 5:T-*FT 6:T- ? 7:F-(E) 8:F-i*/ int 11156=1,0,0丄0,0,02,0,0,3,

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

当前位置:首页 > 学术论文 > 其它学术论文

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