1 / 21
文档名称:

编译原理词法分析器语法分析器实验报告.doc

格式:doc   页数:21
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

编译原理词法分析器语法分析器实验报告.doc

上传人:钻石文档库 2013/9/10 文件大小:0 KB

下载得到文件列表

编译原理词法分析器语法分析器实验报告.doc

文档介绍

文档介绍:编译技术班级网络 0802
学号 3080610052
姓名叶晨舟
指导老师朱玉全
2011年 7 月 4 日
一、目的
编译技术是理论与实践并重的课程,而其实验课要综合运用一、二年级所学的多门课程的内容,用来完成一个小型编译程序。从而巩固和加强对词法分析、语法分析、语义分析、代码生成和报错处理等理论的认识和理解;培养学生对完整系统的独立分析和设计的能力,进一步培养学生的独立编程能力。
二、任务及要求
基本要求:
词法分析器产生下述小语言的单词序列
这个小语言的所有的单词符号,以及它们的种别编码和内部值如下表:

单词符号
种别编码
助记符
内码值
DIM
IF
DO
STOP
END
标识符
常数(整)
=
+
*
**
,
(
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$DIM
$IF
$DO
$STOP
$END
$ID
$INT
$ASSIGN
$PLUS
$STAR
$POWER
$COMMA
$LPAR
$RPAR
-
-
-
-
-
-
内部字符串
标准二进形式
-
-
-
-
-
-
对于这个小语言,有几点重要的限制:
首先,所有的关键字(如IF﹑WHILE等)都是“保留字”。所谓的保留字的意思是,用户不得使用它们作为自己定义的标示符。例如,下面的写法是绝对禁止的:
IF(5)=x
其次,由于把关键字作为保留字,故可以把关键字作为一类特殊标示符来处理。也就是说,对于关键字不专设对应的转换图。但把它们(及其种别编码)预先安排在一张表格中(此表叫作保留字表)。当转换图识别出一个标识符时,就去查对这张表,确定它是否为一个关键字。
再次,如果关键字、标识符和常数之间没有确定的运算符或界符作间隔,则必须至少用一个空白符作间隔(此时,空白符不再是完全没有意义的了)。例如,一个条件语句应写为
IF i>0 i= 1;
而绝对不要写成
IFi>0 i=1;
因为对于后者,我们的分析器将无条件地将IFI看成一个标识符。
这个小语言的单词符号的状态转换图,如下图:

语法分析器能识别由加+ 减- 乘* 除/ 乘方^ 括号()操作数所组成的算术表达式,其文法如下:
E→E+T|E-T|T
T→T*F|T/F|F
F→P^F|P
p→(E)|i
使用的算法可以是:预测分析法;递归下降分析法;算符优先分析法;LR分析法等。
中间代码生成器产生上述算术表达式的中间代码(四元式序列)
三、实现过程
给出各题目的详细算法描述,数据结构和函数说明,流程图。
1、词法分析器的流程图
2、语法分析器主程序图
3、中间代码生成器流程图:
四、源程序
词法分析器:
#include<>
#include<>
#include<iostream>
using namespace std;
typedef struct table //分析表存储结构
{
char m[100];
}table;
table M[100][100]; //定义分析表
typedef struct stacknode //定义栈内元素节点(带头结点(为空)的)
{
char data;
struct stacknode *next;
}stackk;
void initlink(stackk *&s) //初始化新栈
{
s=(stackk *)malloc(sizeof(stackk));
s->next=NULL;
}
void poplink(stackk *&s) //顶元素出栈
{
stackk *p;char v;
if(s->next!=NULL)
{
p=s->next;
v=p->data;
s->next=p->next;
}
free(p);
}
void pushlink(stackk *&s,char x) //新元素入栈
{
stackk *p;
p=(stackk *)malloc(sizeof(stackk));
p->data=x;
p->next=s->next;
s->next=p;
}
void display(stackk *s) //打印现实显示栈内元素
{
stackk *p;
int i=0,j;
char st[100];
p=s->next;
while(p!=NULL)
{
st[i++]=p->data;

最近更新

2024年红原县招教考试备考题库及答案解析(必.. 30页

2024年苍溪县幼儿园教师招教考试备考题库附答.. 32页

2024年莘县幼儿园教师招教考试备考题库附答案.. 30页

2024年融安县招教考试备考题库及答案解析(夺.. 31页

2024年西南科技大学马克思主义基本原理概论期.. 12页

2024年西林县招教考试备考题库含答案解析(必.. 31页

2024年贵州护理职业技术学院马克思主义基本原.. 12页

2024年赣州远恒佳职业学院马克思主义基本原理.. 12页

2024年辽宁石油化工大学马克思主义基本原理概.. 12页

2024年通江县招教考试备考题库附答案解析 31页

2024年都昌县幼儿园教师招教考试备考题库带答.. 31页

2024年重庆水利电力职业技术学院马克思主义基.. 12页

2024年铅山县招教考试备考题库带答案解析 30页

2024年长春东方职业学院马克思主义基本原理概.. 13页

2024年长治学院马克思主义基本原理概论期末考.. 12页

2024年阳朔县幼儿园教师招教考试备考题库带答.. 31页

2024年陕西科技大学镐京学院马克思主义基本原.. 13页

2024年青岛农业大学马克思主义基本原理概论期.. 12页

2024年高邑县幼儿园教师招教考试备考题库含答.. 30页

2024年黎城县招教考试备考题库附答案解析(夺.. 31页

2024年齐鲁师范学院马克思主义基本原理概论期.. 13页

2025年三亚城市职业学院马克思主义基本原理概.. 12页

2025年上海交通大学马克思主义基本原理概论期.. 12页

2025年上海建桥学院马克思主义基本原理概论期.. 12页

高温抗板归材料开发 35页

2025年中国人民公安大学马克思主义基本原理概.. 12页

2025年中山职业技术学院马克思主义基本原理概.. 12页

2025年乐亭县招教考试备考题库及答案解析(夺.. 31页

育种基因组学与传统育种融合 35页

2025年云安县幼儿园教师招教考试备考题库带答.. 31页