编译原理上机实习指导书(2015-11修改)资料.doc

编译原理上机实习指导书(2015-11修改)资料.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《编译原理上机实习》指导书 一、上机实习目的 理解编译程序的构造原理,掌握编译程序的构造方法与技术。通过实习,使学生既加深对编译原理基础理论的理解,又提高动手能力,特别是提高软件设计能力。 二、上机实习要求 在理解编译原理基本思想的基础上,选择一个自己熟悉的程序设计语言,完成编译程序的设计和实现过程。 编译程序的设计可以采用自顶向下和自底向上两种不同的方法。由于许多高级语言(如PASCAL,C)中的语法成分都是递归定义的,所以本实验要求学生采用递归下降分析技术,这是一种自顶向下的的编译方法,其基本思想是对语言的每个(或若干个)语法成分编制一个处理子程序,从处理程序这个语法成分的子程序开始,在分析过程中调用一系列过程或函数,对源程序进行语法和语义分析,直到整个源程序处理完毕为止。 本上机实习是为C语言(子集)设计一个编译程序,完成词法分析、语法分析、语义分析等功能,并生成某种机器上的目标代码(汇编语言)或中间代码(四元式)。 三、上机实习步骤 1.阅读《上机实习指导书》。 2.根据设计要求写算法,画程序框图 3.根据框图编写编译程序 4.输入编译程序并上机调试 5.撰写上机实习报告 四、上机实习内容 1、题目:C语言小子集编译程序的实现 2、C语言小子集的文法规则: 程序::=main(){分程序} 分程序::=变量说明部分;语句部分 变量说明部分::=变量说明标识符表 变量说明::=int 标识符表::=标识符表,标识符 标识符表::=标识符 标识符::=字母 标识符::=标识符字母 标识符::=标识符数字 语句部分::=语句部分;语句|语句 语句::=赋值语句|条件语句|循环语句| 赋值语句::=标识符=表达式 条件::=表达式关系运算符表达式 表达式::=项|表达式加法运算符项 项::=因子|项乘法运算符因子 因子::=标识符|常量|(表达式) 常量::=无符号整数 无符号整数::=数字序列 数字序列::=数字序列数字 数字序列::=数字 加法运算符::=+|- 乘法运算符::=*|/ 关系运算符::=||!=|=|=|== 复合语句::={语句部分} 语句1::=语句|复合语句 条件语句::=if(条件)语句1else语句1 循环语句::=while(条件)do语句1 字母::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z 数字::=0|1|2|3|4|5|6|7|8|9 3、实现功能: (1)词法分析 扫描源程序,根据词法规则,识别单词,填写相应的表。 (2)语法分析 对源程序作语法分析,确定是否属于C语言小子集,同时揭示出程序的内在结构。 (3)语法错误检查 根据C语言小子集的文法规则设置检测手段,通过查错子程序或一些查错语句,报告源程序出错位置、性质等,直至整个程序结束为止。 (4)语义分析与目标代码生成 在语法分析的基础上,进行语义分析,生成输入源程序的目标代码。输入源程序的目标代码可以建立在一个假想的处理机(虚拟机)上,或者以所学的汇编语言为基础,也可以生成四元式序列。 输入源程序样本: main () { int a,b,y,max; a=10; b= ; while (a0) { b=a+b*a; a=a-1 }; x=a+b; y=b+b; if (xy) max=x else max=y } 五、附录:PL0编译程序的实现 PL0概述 PL0语言是一种类PASCAL语言,是教学用程序设计语言,它比PASCAL语言简单,作了一些限制。PL0的程序结构比较完全,赋值语句作为基本结构,构造概念有顺序执行、条件执行和重复执行,分别由BEGIN/END、IF和WHILE语句表示。此外,PL0还具有子程序概念,包括过程说明和过程调用语句。在数据类型方面,PL0只包含唯一的整型,可以说明这种类型的常量和变量。运算符有+,-,*,/,=,,,,=,=,(,)。说明部分包括常量说明、变量说明和过程说明。 PL0语言的文法规则 程序::=分程序. 分程序::=[常量说明部分);][变量说明部分;]{过程说明部分;}语句部分 常量说明部分::=const常量定义{,常量定义} 常量定义::=标识符=无符号整数 无符号整数::=数字{数字} 变量说明部分::=var标识符{标识符} 标识符::=字母{字母|数字} 过程说明部分::=过程首部分程序 过程首部::=procedure标识符 语句部分::=语句|复合语句 复合语句::=begin语句{;语句}end 语句::=赋值语句|条件

文档评论(0)

知识宝库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档