电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

编译方法实验报告(中间代码生成器)

编译方法实验报告(中间代码生成器)_第1页
1/8
编译方法实验报告(中间代码生成器)_第2页
2/8
编译方法实验报告(中间代码生成器)_第3页
3/8
编译方法实验报告 姓 名 学 号 班 级 指 导 教 师 实验名称 中间代码生成器的设计 开 设 学 期 实 验 时 间 第周 评 定 成 绩 评定人 签 字 评 定 日 期 2011 年 10 月 一、 实验目的 熟悉算术表达式的语法分析与中间代码生成原理。 二、 实验内容 (1)设计语法制导翻译生成表达式的四元式的算法; (2)编写代码并上机调试运行通过。 输入——算术表达式; 输出——语法分析结果; 相应的四元式序列。 (3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文法,使用扩展的语法分析器实现语法制导翻译。 三、 实验原理及基本步骤 ●算术表达式文法: G(E): E  E ω0 T | T T  T ω1 F | F F  i | (E) ●文法变换: G’(E) E  T {ω0 T} T  F {ω1 F} F  i | (E) ●属性翻译文法: E  T {ω0 “push(SYN, w)” T “QUAT”} T  F {ω1 “push(SYN, w)” F “QUAT”} F  i “push(SEM, entry(w))” | (E) 其中: push(SYN, w) — 当前单词 w 入算符栈 SYN; push(SEM, entry(w)) — 当前 w 在符号表中的入口值压入语义栈 SEM; QUAT — 生成四元式函数 i.T = newtemp; ii.QT[j] =( SYN[k], SEM[s-1], SEM[s], T); j++; iii.pop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T ); ●递归下降子程序: 数据结构:SYN —算符栈; SEM —语义栈; 四、 数据结构设计 使用递归的结构进行四元式的设计,同时,运用堆栈结构将四元式的输出序列打印出来 while ( exp[i]=='+' || exp[i]=='-'){ syn[++i_syn]=exp[i]; //push(SYN,w) i++; //read(w) T(); quat();} while ( exp[i]=='*' || exp[i]=='/'){ syn[++i_syn]=exp[i]; //push(SYN,w) i++; //read(w) F(); quat();} void quat(){ strcpy(qt[j],"(, , , )"); //QT[j]:=(SYN[k],SEM[s-1],SEM[s],temp); qt[j][1]=syn[i_syn]; qt[j][3]=sem[i_sem-1]; qt[j][5]=sem[i_sem]; qt[j][7]=temp; j++; i_syn--; //pop(SYN); i_sem--; //pop(SEM); i_sem--; //pop(SEM); sem[++i_sem]=temp; //push(SEM,temp); temp++;} 五、 关键代码分析(带注释)及运行结果 #include #include "string.h" #include "stdio.h" using n...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

编译方法实验报告(中间代码生成器)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部