计算机编译原理课程设计报告.doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课程设计报告 课程名称______编译原理____________________ 指导教师 _____李明新___________________ 设计起止日期 __2006-11___________________ 系 别 ___计算机科学与工程_______________ 专 业 ___计算机科学与技术_______________ 学生姓名 范海强0313419 班级/学号 __03134_______________ 成 绩 ___________________ 一:课程设计功能需求分析 编译课程设计的基本任务是设计一个mini-pascal语言的编译器,将mini-pascal 语言的源程序翻译成等价的中间代码。要求输入mini-pascal语言写的源程序(以文件形式存储),首先经过词法分析,输出原程序分析后的二元式文件,供语法制导翻译用。经过语法制导翻译将词法分析器产生的二元式翻译成等价的四元式形式,也就是中间代码的生成。要求能进行正常的关键字如:begin,end, if ,else 等的识别。例: 程序结构为: program 标识符 ; [ 变量说明 ] procedure 标识符 [ 参数表 ] [ 变量说明 ] begin [ 语句部分 ] end; begin [ 语句部分 ] end. 过程可以嵌套定义,每个过程最后以“;”为结束符,主程序最后以“·”为结束符。 可执行语句:赋值语句、条件语句(if…then 和 if …then….else 两种形式)、当型循环语句、for语句(此语句可不必做)、过程调用语句(有参和无参两种)、读语句、写语句、复合语句。 数据类型:只有一种整型数据。 数据结构:只有简单变量(整型) 二:课程设计总体设计 编译程序的任务是将高级语言程序翻译成低级语言程序(汇编语言或者机器语言).也就是说编译程序接受的对象是以字符串形式存在文件中的高级语言,经过编译处理生成一个等价的汇编语言或者机器语言程序. 三 课程实际模块详细设计 词法分析器模块的详细设计 词法分析器的任务 词法分析器的任务是将一个字符流文件按词法规则改造成一个单词流文件,也就是说输入词法分析器的是一个由字符组成的源文件,通过词法分析器识别分析后输出由若干个单词名称和单词编码组成的记录文件: 单词符号用如下二元组表示: (单词名称, 单词种类) 词法分析原理及程序设计 词法分析原理 采用直接分析法进行词法分析,根据单词的第一个字符划分单词类型: ( 若第一个字符为字母,这将紧接在字母后面的字母、数字逐一拼接成“字母数字串”直到遇到非字母也非数字的其他字符为此单词拼接完成,这可能是用户定义的标识符和保留字。 ( 若第一个字符为数字,同样向后识别,将紧接在后面的数字和前面的数字拼接在一起,直到非数字的其它字符为止,这个单词为整数。 ( 若第一个字符为其它类型,则根据字符本身就可识别,有的双字符运算符(如= , :=等)需要再向后设备一个字符才能识别。 测试简例 begin ab2a:=9; if x=0 then x:=x+1; while a=0 do b:=a*x/33455; end # 词法分析测试结果 递归下降分析法模块详细设计 递归下降法的设计思想: 用递归下降法进行语法分析时对文法的产生式有两点限制: 1.文法的产生式不含有左递归 2.提取文法中的公因子 mini –pascal 语言中的程序结构部分符合上述限制,用递归下降法进行分析。 以下为mini –pascal 语言“程序结构”部分的文法表示: { }中内容可有可无,[ ] 中内容重复0次到1 次,{ }n0 中内容重复0次到n 次 (1) 程序 → program 名字 ; 过程. PROG → program ident ; PP. (2) 过程 → [ 变量说明 ] { 子程序 } begin 语句 end PP → [IDP ] { PRP } begin PL end (3) 子程序 → procedure 名字 [ 参数说明 ] ; 过程 PRP → procedure ident [ PARL ] ; PP; (4) 变量说明 → var 变量名 { 变量名 } IDP → Var ident { , ident } ; (5) 参数说明 → (变量名 { 变量名 }) PARL → ( ident { , ident } ) 递归下降法即是对文法的每一个非终

文档评论(0)

ze122230743 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档