编译方法实验报告(中间代码生成器).doc_第1页
编译方法实验报告(中间代码生成器).doc_第2页
编译方法实验报告(中间代码生成器).doc_第3页
编译方法实验报告(中间代码生成器).doc_第4页
编译方法实验报告(中间代码生成器).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译方法实验报告姓 名学 号班 级指 导 教 师实验名称中间代码生成器的设计开 设 学 期实 验 时 间第周评 定 成 绩评定人签字评 定 日 期2011年10月一、 实验目的熟悉算术表达式的语法分析与中间代码生成原理。二、 实验内容(1)设计语法制导翻译生成表达式的四元式的算法;(2)编写代码并上机调试运行通过。输入算术表达式;输出语法分析结果;相应的四元式序列。(3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文法,使用扩展的语法分析器实现语法制导翻译。三、 实验原理及基本步骤算术表达式文法:G(E): E E 0 T | T T T 1 F | FF i | (E)文法变换:G(E) E T 0 T T F 1 FF 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 生成四元式函数 iT = newtemp; iiQTj =( SYNk, SEMs-1, SEMs, T); j+; iiipop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T );递归下降子程序:数据结构:SYN 算符栈;SEM 语义栈;四、 数据结构设计 使用递归的结构进行四元式的设计,同时,运用堆栈结构将四元式的输出序列打印出来while ( expi=+ | expi=-)syn+i_syn=expi; /push(SYN,w)i+; /read(w)T();quat();while ( expi=* | expi=/)syn+i_syn=expi; /push(SYN,w)i+; /read(w)F();quat();void quat()strcpy(qtj,(, , , ); /QTj:=(SYNk,SEMs-1,SEMs,temp);qtj1=syni_syn;qtj3=semi_sem-1;qtj5=semi_sem;qtj7=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.husing namespace std;char syn10; /文法符号栈int i_syn;char sem10; /运算对象栈int i_sem;char exp50; /算术表达式区int i;char qt3015; /四元式区int j=0;char temp=q; /临时变量,取值为r-zint E();int T();int F();void quat(); /生成四元式函数int main(int argc, char* argv)printf(please input your expression:); scanf(%s,exp); /输入四元式i=0; /read(w) E();if (expi=0)for (i=0;i=a & expi=0 & expi T | E+TGEQ(+) | E-TGEQ(-) T - F | T*FGEQ(*) | T/FGEQ(/)F - iPUSH(i) | ( E ) 其中: PUSH(i) 压栈函数(把当前 i 压入语义栈); GEQ(w) 表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论