- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译课程设计(合实验)
课程设计报告
( 2013—2014 年度第 一 学期)
《编译技术课程设计B》课程设计
任 务 书
一、 目的与要求
通过设计、编写和调试词法分析程序,了解词法扫描器的组成结构、不同种类单词的识别方法,掌握由单词的词法规则出发,通过识别单词的状态转换图、利用程序实现词法扫描器的方法。通过设计、编写和调试语法分析程序,了解语法分析器的组成结构以及对文法的要求,掌握基于表达式文法的语法分析程序的实现方法。通过设计、编写和调试语法制导翻译程序,掌握从语句的语法出发,构造相应的语义子程序,实现基于算符优先分析的算术表达式的语法制导翻译。
二、 主要内容
词法分析器的设计与实现
设计一个简单的词法扫描器。其输入是源程序字符串,输出是二元式(种别编码,单词的属性值),例如“=”符号的输出形式为(8,-),其中种别编码可参照书中单词表自拟某程序设计语言的单词表及其种别编码。实现方法参考书中函数和程序框架。
语法分析器的设计与实现
自上而下的语法分析方法:构造所用文法的预测分析表,实现方法参考书中算法描述。利用所得预测分析表采用自上而下的语法分析方法对输入串进行分析。例如,若根据书中算术表达式文法构造的预测分析表,那么对输入表达式i+i#进行语法分析,输出为分析过程:
#E i+i# #E’T i# #E’T i+i# #E’T’F i# #E’T’F i+i# #E’T’ i i# #E’T’i i+i# #E’T’ # #E’T’ +i# #E’ # #E’ +i# # # #E’T+ +i# 自下而上的语法分析方法:构造所用文法的算符优先关系表,实现方法参考书中程序框架。利用所得算符优先关系表采用自下而上的语法分析方法对输入串进行分析。例如,若根据书中算术表达式文法构造算符优先表,对输入表达式i+i#进行分析,输出为:
#i +i# #N +i# #N+ i# #N+ i # #N+ N # #N # 语法制导翻译程序
采用书中所示的翻译模式,对语法分析正确的程序在其语法分析的基础上,进行语义翻译工作。每当分析出某语法单位时,就调用对应产生式的语义子程序,完成相应的翻译工作。例如,表达式文法各个产生式的语义动作表示如下:
E→E1+E2 {E.palce:=newtemp, gen(‘+’, E1.palce , E2.palce , E.palce)} E→E1*E2 {E.palce:=newtemp, gen(‘*’, E1.palce , E2.palce , E.palce)} E→(E1) {E.palce:= E1.palce } E→i {E.palce:=i }
三、 进度计划
序号 设计内容 完成时间 备注 1 词法分析器的设计与实现 周一 2 语法分析器的设计与实现 周二-周四 3 语法制导翻译器的实现 周五
四、 设计(实验)成果要求
词法分析器:能够接收用户录入的一段源程序,并且通过语法分析正确输出此段程序中所包含的所有单词编码及其属性。
语法分析器:对输入串进行自上而下或自下而上的语法分析,能够判断输入串是否某文法的句子。
语义分析器:对输入源语言程序进行语法制导翻译工作。每当分析出某语法单位时,就调用相应产生式的语义子程序完成翻译工作。例如,输入i+i#,则输出为:(+, i, i, T1)
五、 考核方式
根据进度计划的时间安排统一验收所有程序。可根据学生不同的进度提前验收时间,但不可滞后。验收时由学生讲解程序设计的思路和实现方法,教师根据讲解情况提出问题。其中,词法分析程序30分,语法分析程序50分,语义分析程序20分。
学生姓名:
指导教师:李继荣 黄建才
2013 年 12 月 29 日
一、课程设计
附录()
语法:
表格见上
3、数据:
词法:
语法及语义:
置初值
调用扫描子程序
输出单词二元组
输入串结束
开始
结束
是
否
变量初始化
忽略空格
是否文件结束?
拼数
syn=1111
对不同符号给出相应的syn值
报错
拼字符串
是否关键字?
syn为对应关键字的单词种别码
syn=10
是
返回
开始
否
字母
数字
运算符、
界符等符号
其他
符号
否
返回
是
输入文法规则数和文法规则
判断是否为
算符文法
开始
结束
是
求出终结符集
求出非终结符的FIRST和LAST集
根据终结符集,FIRST集和LASTA集利用table函数得出算符优先关系表
否
返回
输入要判断的字符串使用deal函数进行分析,输出处理栈,输入串,动作和所用的产生式
文档评论(0)