编译原理课程设计报告[18页].doc 下载本文

内容发布更新时间 : 2024/5/29 16:35:07星期一 下面是文章的全部内容请认真阅读。

皮匠网—开放、共享、免费的咨询方案报告文库

咨询人士学习成长与交流平台

一、 实验要求

1、 基本内容

(1)扩充赋值运算:+= 和 -= (2)扩充语句(Pascal的FOR语句):

FOR <变量>:=<表达式> STEP <表达式>UNTIL <表达式> DO <语句> (3)增加运算:++ 和 --。

2、 选做内容

(1)增加类型:① 字符类型; ② 实数类型。 (2)扩充函数:① 有返回值和返回语句;② 有参数函数。 (3)增加一维数组类型(可增加指令)。 (4)其他典型语言设施。

二、 实验环境与工具

1、 源语言:P\\0语言

2、 目标语言:假想式计算机的汇编语言,与具体计算机无关 3、 实现工具:编译工具:C++ builder 6,实现语言c语言 4、 运行平台:由C++ builder 6解释目标语言,实现程序功能

三、 结构设计说明

1、 PL\\0编译程序的结构:

2、 编译程序中各功能模块的描述 过程或函数名 简要功能说明 pl0 主程序 error 出错处理 getsym 词法分析,读取一个单词 getch 漏掉空格,读取一个字符 gen 生成目标代码,并送入目标程序区

本资料由皮匠网收录,更多免费资料下载请点击:

https://www.3mbang.com/

皮匠网—开放、共享、免费的咨询方案报告文库

咨询人士学习成长与交流平台

test block enter position constdeclaration vardeclaration listcode statement expression term factor condition interpret base(函数) 3、 编译程序的总体流程图

启动 置初值 测试当前单词符号是否合法 分程序分析处理过程 登录名字表 查找标识符在名字表中的位置 常量定义处理 变量说明处理 列出目标代码清单 语句部分处理 表达式处理 项处理 因子处理 条件处理 对目标代码的解释执行程序 通过静态链求出数据区的基地址 调用getsym取单调用block过程 N 是否为源程序结束出错 Y 源程序是否有错误 Y 打印错误 N 调用解释过程interpret解释执行目标执行目标

4、 词法分析过程

结束

本资料由皮匠网收录,更多免费资料下载请点击:

https://www.3mbang.com/

皮匠网—开放、共享、免费的咨询方案报告文库

咨询人士学习成长与交流平台

四、 主要成分描述

1、 符号表结构 NAME KIND(总共有VAL/vp 一下5种类vp:LEVEL或者 ADR 型) VAL A CONSTANT 存放常量的数 该变量所在地址 B VARIABLE LEV 该变量所在地址 C REAL LEV 该变量所在地址 D CHARACTER LEV E PROCEDUR LEV 2、 运行时存储组织和管理

SIZE 开辟空间大小 当源程序经过语法分析,如果未发现错误时,由编译程序调用解释程序,对存放在CODE中的代码CODE[0]开始进行解释执行.当废弃结束后,记录源程序中标识符的TABLE表已没有作

本资料由皮匠网收录,更多免费资料下载请点击:

https://www.3mbang.com/