1 / 21
文档名称:

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

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

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

分享

预览

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

上传人:钻石文档库 2013/9/8 文件大小: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;

最近更新

2025年嘉黎县招教考试备考题库附答案解析 31页

2026年四川文轩职业学院单招职业技能考试题库.. 44页

2026年国开电大城市管理学形考题库100道【考点.. 38页

2025年江孜县招教考试备考题库带答案解析(必.. 30页

2025年河北软件职业技术学院单招职业适应性测.. 46页

2026年国开电大外国文学形考题库及完整答案(.. 41页

2026年国开电大外国文学形考题库(巩固) 41页

2025年潍坊理工学院单招职业适应性测试题库附.. 44页

2026年地方病控制题库(夺冠系列) 40页

2026年大学c语言的期末试题(实用) 13页

2025年西吉县招教考试备考题库含答案解析(夺.. 31页

2026年天府新区航空旅游职业学院单招职业适应.. 45页

2026年学廉政知识测试题及答案(必刷) 14页

2025广东茂名市电白区区属国有企业招聘5人考试.. 48页

2026年安徽冶金科技职业学院单招职业倾向性考.. 44页

2025榆林中科洁净能源创新研究院招聘参考试题.. 35页

2025江西南昌市社会福利院招聘参考题库附答案.. 49页

2025河北张家口康保县公安局公开招聘警务辅助.. 36页

2025秋季中国石油数智研究院高校毕业生招聘笔.. 35页

2026年川南幼儿师范高等专科学校单招综合素质.. 45页

2026年工贸试题-考试题库及答案【名校卷】 41页

2026年广东工贸职业技术学院单招综合素质考试.. 45页

2026中国支付清算协会招聘4人考试备考题库附答.. 43页

2026年广西现代职业技术学院单招职业适应性测.. 44页

2026内蒙古到东北大学 定向选调(选聘)应届优.. 48页

2026华电陕西能源有限公司校园招聘笔试备考题.. 36页

ALC墙板蒸压加气轻质混凝土板材安装施工方案及.. 3页

腰椎康复操ppt 27页

GBT228-2024金属材料室温拉伸试验方法 39页

机械制图大连理工大学工程图学教研室第六版第.. 55页