- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
华州法力#肾
课程设计报告
(2012 -2013 年度第1学期)
名 称: 编译技术课程设计
题 目: L语舌编译器的设计与实现
院 系:计算机系
班 级:
学 号:
学生姓名:
指导教师:
设计周数: 2_J1
成 绩:
日期: 2012年12月27日
〈〈编译技术》课程设计
任务书
一、 目的与要求
任务:实现一个简单的编译程序,能够对指定程序设计语言进行编译。
目的:加深对课堂讲授知识的理解, 熟练掌握编译程序设计原理及常用的技术, 建
立编译程序的整体概念,使得学生初步具有研究、设计、编制和调试编译程序的能力。
要求:熟悉有关定义、概念和实现算法, 设计出程序流程框图和数据结构, 编写出 完整的源程序,进行静态检查,设计出输入数据、显示输出数据;基本功能完善,方便易用, 操作无误;通过课程设计学会编译程序设计与实现的常用技术, 具备初步分析、设计和开发 编译程序的能力,具备分析与检查软件错误、解决和处理实验结果的能力。
学生要求人数:2人,1人负责扫描器和目标代码生成器的设计和实现,另 1人负 责语法分析器和语法制导翻译程序的设计和实现。
二、 主要内容
下面是课程设计主要内容的简介,详细内容请见〈〈编译技术课程设计指导书》 。
扫描器设计
该扫描器是一个子程序,其输入是源程序字符串,每调用一次输出一个单词符号。为了 避免超前搜索,提高运行效率,简化扫描器的设计,假设程序设计语言中, 基本字不能用作
一般标识符,如果基本字、标识符和常数之间没有确定的运算符或界符作间隔, 则用空白作
间隔。
语法分析器设计
以算法优先分析方法为例,设计一个算符优先语法分析程序。算符优先分析属于自下而 上的分析方法,该语法分析程序的输入是终结符号串(即单词符号串,以一个“ # ”结尾),
如果输入串是句子则输出“ YES”,否则输出“ NO”和错误信息。当然,也可采用预测分析 等方法设计语法分析器,具体方法自定。
语法制导翻译程序设计
采用语法制导翻译方法,实现算术表达式、赋值语句和基本控制语句等的翻译。 本语法
制导翻译程序的输入是终结符号串(即单词符号串,以一个“ #”结尾),如果输入符号串
是句子,则按照其语义进行翻译,输出等价的四元式序列。
目标代码生成器设计
将程序设计语言的中间代码程序翻译为目标代码程序, 其输入是四元式序列, 输出是
个汇编代码文件。
三、进度计划
序号设计内容
序号
设计内容
1
任务布置,资料查询,方案制定
2
算法设计,程序实现
3
撰写报告,软件验收
4
完成时间
备注
第一周周一
第一周周二至第二周周四
第二周周五
四、设计成果要求
完成规定的课程设计任务,所设计软件功能符合要求;
完成课程设计报告, 要求格式规范,内容具体而翔实,应体现自身所做的工作,注 重对设计思路的归纳和对问题解决过程的总结。
五、考核方式
平时成绩+验收答辩+实验报告;
五级分制。
学生姓名:
指导教师:
2011 年 12 月 12
词法分析
通过设计调试词法分析程序, 实现从源程序中分出各种单词的方法; 加深对课堂教学的
理解;提高词法分析方法的实践能力;掌握词法分析器作为子程序以及一遍的处理过程。
token文件
token文件
符号表文件
能对任何L语言源程序进行分析;
采用问答方式输入源程序文件名,然后进行词法分析;
分割单词并转换成机内表示形式,形成 token文件(单词序列)、符号表文件;
删除空格等无用符号;
错误处理
给出的错误信息包括:总的出错个数,每个错误所在行号,错误编号及说明;
只处理以下两种错误,其它可不必考虑
非法字符:删除,即,不写入 token文件
错误单词
包括三种形式:
数字开头的数字、字母串,如: 3a56
实数中出现两个小数点,如: 3.14.15
实数的小数部分出现字母,如: 5.26B78
处理方式:截去后面出错部分, 使其成为一个正确单词(即: 常数)。
如:3a56转换为3, 3.14.15 转换为3.14 , 5.26B78 转换为5.26
3 数据结构
输入
L源程序,为文本文件。
输出
一个单词序列文件(即:token文件)和一个符号表文件,并输出错误信息。
(1) token 文件结构
typedef struct token
(
int label; //单词序号
char name[30]; // 单词本身
int code; //单词的机内码
int addr; //地址,单词为保留字时为-1 ,为标识符或常数时为大于 0的数值,即在符
号表中的入口地址。
} token;
单词的机内码表示:
单词
编码
单词
编码
单词
编码
单词
编码
and
1
or
11
(
21
:=
31
begin
2
progra
m
12
)
22
原创力文档


文档评论(0)