语义分析及中间代码生成程序设计原理与实现技术
XXX 1028XXX2 计科1XXX班
1. 程序功能描述
完成以下描述赋值语句和算术表达式文法的语法制导生成中间代码四元式的过程。
G[A]:A→V:=E E→E+T∣E-T∣ T→T*F∣T/F∣F F→(E)∣i V→i 说明:终结符号i 为用户定义的简单变量,即标识符的定义。
2. 设计要求
(1)给出每一产生式对应的语义动作;(2)设计中间代码四元式的结构(暂不与符号表有关)。(3)输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串的四元式序列中间文件。(4)设计两个测试用例(尽可能完备),并给出程序执行结果四元式序列。
3. 主要数据结构描述:
本程序采用的是算符优先文法,文法以及算符优先矩阵是根据第四次实验来修改的,所以主要的数据结构也跟第四次差不多,主要为文法的表示,FirstVT集和LastVT集以及算符优先矩阵:
struct info{ char left; vector
char mtr[9][9]; //算符优先矩阵
4. 程序结构描述:
本程序一共有8功能函数: void get(); //获取文法 void print(); //打印文法
void fun(); //求FirstVT 和 LastVT void matrix(); //求算符优先矩阵 void test(); //测试文法
int cmp(char a,char b); 比较两个运算符的优先级 1 0 -1 void out(char now,int avg1,int avg2); //打印四元式 int ope(char op,int a,int b); //定义四元式计算方法
5. 实验代码
详见附件
6. 程序测试 6.1 功能测试
程序运行显示如下功能菜单:
选择打印文法:
选择构造FirstVt集和LastVT集:
选择构造算符优先矩阵: