编译原理课程设计增加数据类型计算机C资料_计算机-C++资料.pdf





《编译原理课程设计增加数据类型计算机C资料_计算机-C++资料.pdf》由会员分享,可在线阅读,更多相关《编译原理课程设计增加数据类型计算机C资料_计算机-C++资料.pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1/34 山东建筑大学计算机科学及技术学院 课程设计说明书 题 目:对 PL/0 语言及其编译器进行扩充和修改 实现增加数据类型功能 课 程:编译原理课程设计 院(部):计算机科学及技术学院 专 业:计算机科学及技术 班 级:计科 学生姓名:学 号:指导教师:完成日期:2014年 7 月 8 日I/34 目 录 课程设计任务书.II 对 PL/0 语言及其编译器进行扩充和修改实现增加数据类型功能 4 一、问题描述.4 二、基本要求.5 三、算法思想.6 四、数据结构.6 五、模块划分.6 六、源程序.8 七、测试数据.26 八、测试情况.29 结 论.30 参考文献.32 课程设计指导教师评语
2、.33能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译
3、程序全过程理山东建筑大学计算机科学及技术学院 课程设计任务书 设计题目 对 PL/0 语言及其编译器进行扩充和修改 实现增加数据类型功能 已知技术参数和设计要求 PL/0 程序设计语言是一个较简单语言,它以赋值语句为基础,构造概念有顺序、条件和重复(循环)三种。PL/0 有子程序概念,包括过程定义(可以嵌套)及调用且有局部变量说明。PL/0 中唯一数据类型是整型,可以用来说明该类型常量和变量。当然 PL/0 也具有通常算术运算和关系运算。通过读懂源程序,全面掌握编译原理基本实现过程。对现存 PL/0 编译程序做一些修改或扩充。设 计 内容 及 步骤 通过读懂源程序,全面掌握编译原理基本实现过程
4、。扩充 PL/0 增加识别字符型数据类型和实型数据类型功能 增加数据类型定义如下:D|integer id|char id|double id 设计工作计划及进度安排 1-4:进行完整编译程序全过程理解 5-12:根据源程序,理解整个编译器编写中涉及到全局变量及基本函数意义。能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以
5、赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理III/34 指导教师(签字):教研室主任(签字):13-20:在读懂全程序基础上,进行扩充功能,并测试。21-24:撰写课程设计报告书。设计考核要求 设计考核方法:课程设计总成绩=算法实现(30%)+课程设计说明书(50%)+平时考勤(20%)。设计考核要求:(1)规范课程设计说明书(2)所设计算法源代码 能课程编
6、译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理4
7、/34 对 PL/0语言及其编译器进行扩充和修改实现增加数据类型功能 一、问题描述 PL/0 程序设计语言是一个较简单语言,它以赋值语句为基础,构造概念有顺序、条件和重复(循环)三种。PL/0 有子程序概念,包括过程定义(可以嵌套)及调用且有局部变量说明。PL/0 中唯一数据类型是整型,可以用来说明该类型常量和变量。当然 PL/0 也具有通常算术运算和关系运算。PL/0 语言 BNF文法如下所示::=.:=变量说明部分 :=CONST,;:=:=:=VAR,;:=|:=;:=PROCEDURE;:=|:=:=:=BEGIN;END 能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及
8、技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理5/34 :=|ODD :=+|-:=:=|():=+|
9、-:=*|/:=|#|=:=IFTHEN :=CALL :=WHILEDO :=a|b|.|X|Y|Z :=0|1|2|.|8|9 对现存 PL/0 编译程序做如下修改或扩充。(1)扩充识别注释功能:注释由(*和*)包含,不允许嵌套。(2)识别对 else 子句进行处理功能 :=IFTHENELSE 二、基本要求 设计目:掌握 PL/0 语言编译器实现基本原理和实现方法。能在理解其实现原理方法基础上进行适当扩充,使其功能更强大。设计要求:在理解源代码基础上,根据文法要求,采用 C语言扩充算法。完成扩充识别注释功能,和识别对 else 子句进行处理功能 能课程编译原理课程设计院部计算机科学及技术
10、学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理6/34 三、算法思想 增加数据类型
11、功能:因子语法描述该为 因子 EBNF 文法为::=|()四、数据结构#define norw 16/关键字个数#define txmax 100/名字表容量#define nmax 14/数字最大位数#define al 10/符号最大长度#define amax 2047/地址上界#define levmax 3/最大允许嵌套声明层数#define cxmax 200/最多虚拟机代码数 enum symbol ident integer char double 表达式()number 能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月
12、日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理7/34 /枚举类型:/nul=0,ident=1,number=2,plus=3,minus=4
13、/times=5,依次类推,procsym=31 nul,ident,number,/下面表示是系统算数运算符以及逻辑运算符,知道意思就可以 plus,minus,times,/相乘意思 slash,oddsym,eql,neq,lss,leq,gtr,geq,lparen,/左括号 rparen,comma,semicolon,period,becomes,/赋值意思 /下面表示是系统保留字 beginsym,endsym,ifsym,thensym,whilesym,writesym,readsym,dosym,callsym,constsym,varsym,procsym,integer
14、sym,charactersym,doublesym,;#define symnum 35 enum object constant,variable,procedur,能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编
15、译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理8/34 integer,character,doubler,;五、模块划分 过程或函数名 简要功能说明 pl0 主程序 Error 出错处理,打印出错位置和错误编码 Getsym 词法分析,读取一个单词 Getch 漏掉空格,读取一个字符 Gen 生成目标代码,并送入目标程序区 Test 测试当前单词符号是否合法 Block 分程序分析处理过程 Enter 登录名字表 position(函数)查找标识符在名字表中位置
16、Constdeclaration 常量定义处理 Vardeclaration 变量说明处理 Listode 列出目标代码清单 Statement 语句处理 Expression 表达式处理 Term 项处理 Factor 因子处理 能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描述二基本要求三算法算机科学及技术学院课程设计任务书设计题目对语言及其编译器进行扩充和修改实现增加数据类型功能程序设计语言是一个较简单语言它以赋值语句为基础构造概念有顺序条件和重复循环三
17、种有子程序概念包括过程定义可以嵌套及算通过读懂源程序全面掌握编译原理基本实现过程对现存编译程序做一些修改或扩充通过读懂源程序全面掌握编译原理基本实现过程扩充增加识别字符型数据类型和实型数据类型功能增加数据类型定义下进行完整编译程序全过程理9/34 Condition 条件处理 Interpret 对目标代码解释执行程序 base(函数)通过静态链求出数据区基地址 六、源程序 1、/该函数功能就是取一个数据单位,通过调用该函数可以一次取出一个/数字或字符串或运算符,这个函数和 getch 函数我觉得应该是调用最经常地函数啦,/每调用一次该函数,该函数就会去调用 getch 函数/sym 记录是语
18、句单位类型,num中存放是数字大小 int getsym()./取一个数字单位 else /加入 real 类型 if(ch=0&ch=0&ch=0&chnmax)/要求数字位数不能超过 15 位,nmax=14,不过我觉得这有错误 error(30);/输出错误码 else if(int)ch=39)/加入字符类型 getchdo;if(ch=A&ch=a&chtx)/当 table表为空时,只输出 NULL 能课程编译原理课程设计院部计算机科学及技术学院专业计算机科学及技术班级计科学生姓名学号指导教师完成日期年月日目录课程设计任务书对语言及其编译器进行扩充和修改实现增加数据类型功能一问题描
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课程设计 增加 数据类型 计算机 资料 C+

限制150内