《编译原理教程》习题解析与上机指导(第四版) 第十一章

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

/*6*/
{-1,10,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1},
/*7*/ /*8*/ /*9*/ /*10*/ /*11*/ /*12*/ /*13*/ /*14*/ /*15*/ /*16*/ /*17*/ /*18*/
{-1,-1,-1,-1,-1,11,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,12,-1,-1,-1,-1,-1,-1}, {-1,-1,-1,-1,-1,-1,105,-1,13,-1,-1,-1,-1}, {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,14,-1}, {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,15,-1}, {-1,-1,103,-1,-1,-1,103,-1,103,-1,103,-1,-1}, {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,16}, {-1,-1,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}, {-1,-1,102,-1,-1,-1,102,-1,102,-1,102,-1,-1}, {-1,-1,-1,-1,-1,-1,106,-1,-1,-1,-1,-1,-1}, {2,-1,-1,3,4,-1,-1,5,-1,-1,-1,18,-1}, {-1,-1,101,-1,-1,-1,101,-1,101,-1,101,-1,-1}};
第十一章 高级语言到四元式的编译程序
#include ″tdio.h″ #include ″string.h″
#define ACC
-2
/****************************************/
#define sy_if
0
#define sy_then
1
#define sy_else
char op[10]; struct aa arg1; struct aa arg2; int result; }fexp[200]; /*四元式的结构*/
int
ssp=0;
struct aa *pbuf=buf;
int
nlength=0;
int
lnum=0;
/*指向 sstack[100]*/ /*指向词法分析缓冲区*/
struct aa{ int sy1; int pos;
}buf[1000]; n; n1; E; sstack[100]; ibuf[100], stack[1000];
/*词法分析结果缓冲区*/ /*当前字符*/ /*当前表达式中的字符*/ /*非终结符*/ /*符号栈*/
struct aa oth; struct fourexp{
15
#define EA
18
#define EO
19
/*E and*/ /*E or*/
#define plus
34
#define times
36
#define becomes
38
#define op_and
39
#define op_or
40
#define op_not
41
#define rop
42
/*源程序长度*/
int
tt1=0;
FILE *cfile;
FILE *mfile;
/**************************************************
*******/
int newt=0;
/*临时变量*/
int nxq=100;
/*nxq 指向下一个形成的四元式的地址*/
#define lparent
48
#define rparent
49
#define ident
56
#define intconst
57
/******************************************/
char ch=′\0′; int count=0; static char spelling[10]={″″}; static char line[81]={″″}; char *pline;
char sp[10]; int sy; }; /*存放文件的结构*/ struct rwords reswords[10]={{″if″,sy_if},
{″do″,sy_do}, {″else″,sy_else}, {″while″,sy_while}, {″then″,sy_then}, {″begin″,sy_begin}, {″end″,sy_end}, {″and″,op_and}, {″or″,op_or}, {″not″,op_not}};
/*当前字符*/
/*存放识别的字*/ /*一行字符缓冲区*/ /*字符缓冲区指针*/
static char ntab1[100][10]; struct ntab
{ int tc; int fc;
}ntab2[200]; int label=0;
/*存放临时变量的表的定义*/ struct rwords{
/*1*/
{-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,acc,-1,-1},
/*2*/
{-1,-1,-1,-1,-1,-1,-1,-1,-1,6,-1,-1,-1},
/*3*/
{-1,-1,-1,-1,-1,-1,-1,-1,-1,7,-1,-1,-1},
/*4*/ /*5*/
{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,9,8}, {-1,-1,104,-1,-1,-1,104,-1,104,-1,104,-1,-1},
int lr;
int lr1;
int sp=0;
/*状态栈定义*/ int stack1[100]; int sp1=0; /*状态栈 1 的定义*/ int num=0; struct ll{
int nxq1; int tc1; int fc1;
}labelmark[10]; int labeltemp[10]; int pointmark=-1,pointtemp=-1; int sign=0;
/*sign=1,表达式为赋值语句;sign=2 ,表达式为布尔表
达式*/ /******Leabharlann Baidu**************** 程 序 语 句 的 LR 分 析 表
************************/
static int /*0*/
action[19][13]= {{2,-1,-1,3,4,-1,-1,5,-1,-1,-1,1,-1},
2
#define sy_while
3
#define sy_begin
4
#define sy_do
5
#define sy_end
6
#define a
7
#define semicolon 8
#define e
9
#define jinghao
10
#define S
11
#define L
12
#define tempsy
相关文档
最新文档