编译原理课件:Chapter-5 语法制导翻译技术.ppt
2022-07-07 09:11:09 1.35MB 编译原理
学习PL/0中简单语句的翻译处理并将其生成相应形式的四元式序列,学习中间代码的生方法与原理。
1
一、实验目的 通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法。 二、实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值语句进行语义分析并生成四元式序列。 三、实验的结果验证 1.输入是语法分析后提供的正确的单词串,输出为三地址指令形式的四元式序列。 给出语句串: begin_a:=2+3*4; _x:=(a+b)/c_end# 输出如下三地址指令: (1) t1=3*4 (2) t2=2+t1 (3) a=t2 (4) t3=a+b (5) t4=t3/c (6) x=t4 2.自己任意给出一语句串,输出四元式序列。 要求:将上述2个语句串的执行结果显示保留在实验报告中(拷屏)。 四、算法思想 1、设置语义过程。 (1)emit(char *result,char *ag1,char *op,char *ag2) 该函数的功能是生成一个三地址语句送到四元式表中。 四元式表的结构如下: struct{char result[8]; char ag1[8]; char op[8]; char ag2[8]; }quad[20]; (2) char *newtemp() 该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,… char *newtemp(void) {char *p; char m[8]; p=(char *)malloc(8); k++; itoa(k,m,10); strcpy(p+1,m); p[0]=’t’; return(p); } 2、函数lrparser 在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值语句进行翻译。 五、语义分析程序的C程序。 #include #include #include #include struct {char result[12]; char ag1[12]; char op[12]; char ag2[12]; }quad; char prog[80],token[12]; char ch; int syn,p,m=0,n,sum=0,kk; //p是缓冲区prog的指针,m是token的指针 char *rwtab[6]={"begin","if","then","while","do","end"}; void scaner(); char *factor(void); char *term(void); char *expression(void); int yucu(); void emit(char *result,char *ag1,char *op,char *ag2); char *newtemp(); int statement(); int k=0; void emit(char *result,char *ag1,char *op,char *ag2) { strcpy(quad.result,result); strcpy(参数设置); strcpy(quad.op,op); strcpy(quad.ag2,ag2); cout<
1
计算机编译原理课程实验中使用,语法制导与中间代码生成。
2021-07-10 21:35:36 875B 语法 制导 翻译 中间代码
1
语法制导翻译器,将算术表达式翻译成三元式。 确定一个定义算术表达式的文法,为其设计一个语法分析程序,为每条产生式配备一个语义子程序,按照一遍扫描的语法制导翻译方法,实现翻译程序。对用户输入的任意一个正确的算术表达式,程序将其转换成三元式输出。
2021-07-05 14:51:53 104KB LL1文法 编译原理 三元式 四元式
1
实验内容在自底向上语法分析基础上设计语义规则(语法制导翻译),将源程序翻译为四元式输出,若有错误将错误信息输出。其中包含C++实现代码、测试用例等基本报告内容。
1
交大徐老师课程的实验,徐老师非常认真负责,老师留的作业对大家也有很大的提高,自己认为完成的还算不错,从中也特到了很大的提高,希望可以给学弟学妹们提供一些参考,但是严禁抄袭拷贝呦,不然徐老师会严厉惩罚你哒~!更多资源可以关注我的主页~
2021-05-16 20:56:32 64.43MB 北交大 编译原理 语法制导 翻译
1
赋值语句自上而下翻译系统的设计与实现 设有如下文法: S → A A → V:=E E → E + T | T T → T * F | F F → (E) | digit V → i 采用LL(1)分析法对所定义的赋值语句进行语法分析,并在语法分析过程中将所输入的赋值语句翻译为四元式。
1
提供语法制导翻译及中间代码生成,举例说明语法制导原理和概念,提供一些例题
2021-05-09 19:03:35 824KB 编译原 语法制
1