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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》综合性

实验报告

实验学期2016 至2017 学年第 1 学期专业计算机科学与技术班级1403

学生姓名黄世增学号**********

任课教师赵曦

实验成绩

《编译原理》课程综合性实验报告

开课实验室:C210 2016年12月6日

四、实验步骤

编写程序时,先定义几个全局变量,key[]事先存放7个关键字,words[]用来存放识别出来的单词二元组,text用来存放从文件读取的内容,word用于存放识别出来的单词,length存放字符个数,k存放识别出来的单词个数。

首先,将文本内容读取到text中,文本内容最后一个字符是空白符,然后调用scan方法,逐个扫描每个字符,如果word的第一个字符是字母,则进行拼字符串,再判断是关键字还是标识符;如果word的第一个字符是数字,则在word 清空之前判断是否有识别出非数字字符,若有,则出错,若没有,则识别出来的字符串是常数;若word第一个字符是运算符或界限符,则各自存到words[]中。最后扫描结束后输出。

五、实验结果及分析

六、实验小结和思考

通过这次实验,我对词法分析器有了进一步的了解,而且对词法分析和语法分析在实践中的应用有了深入的掌握, 让我对高级语言的学习有了更深的认识,了解得更透彻。

七、源程序清单

#include

#include

#include

using namespace std;

#define MAX 10000

struct WordString

{

string Word;//单词

int category;//类别

};

char *key[7] = {"int","for", "while", "do", "return", "break", "continue"};//关键字WordString words[MAX]; //创建一个单词符号串

string text; //读入的文本存入text中

string word; //分割出的单词用word表示

int length; //字符个数

int k; //总单词个数

开课实验室:C210 2016年12月8日

六、实验小结和思考

本实验加深了我对LL(1)分析法的算法和思想的理解。

七、源程序清单

#include

#include

#include

#include

/*1:E->TE' 2:E'->+TE' 3:E'->ε? 4:T->FT' 5:T'->*FT' 6:T'->ε? 7:F->(E) 8:F->i*/ int ll1[5][6]={{1,0,0,1,0,0},

{0,2,0,0,3,3},

{4,0,0,4,0,0},

{0,6,5,0,6,6},

相关文档
最新文档