编译实践-实验报告-姜楠讲稿.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译实践-PL\0编译系统实现姓名:姜楠专业:计算机科学与技术学院:软件学院提交时间:2013年12月25日北京航空航天大学·软件学院编译实践-PL\0编译系统实现实验要求以个人为单位进行开发,不得多人合作完成。共32个学时。个人无计算机者可以申请上机机时。细节要求:输入:符合PL/0文法的源程序(自己要有5个测试用例,包含出错的情况,还要用老师提供的测试用例进行测试)输出:P-Code错误信息:参见教材第316页表14.4。P-Code指令集:参见教材第316页表14.5。语法分析部分要求统一使用递归下降子程序法实现。编程语言使用C、C++、C#或Java等。上交材料中不但要包括源代码(含注释)和可执行程序,还应有完整文档。PL/0语言描述PL/0语言是一种类PASCAL语言,是教学用程序设计语言,它比PASCAL语言简单,作了一些限制。PL/0的程序结构比较完全,赋值语句作为基本结构,构造概念有顺序执行、条件执行和重复执行,分别由begin/end,if then else和while do语句表示。PL0还具有子程序概念,包括过程说明和过程调用语句。在数据类型方面,PL0只包含唯一的整型,可以说明这种类型的常量和变量。运算符有+,-,*,/,=,,,,=,=,(,)。说明部分包括常量说明、变量说明和过程说明。PL/0语言文法的EBNF表示程序 ::= 分程序.分程序 ::= [常量说明部分][变量说明部分]{过程说明部分}语句常量说明部分 ::= const常量定义{,常量定义};常量定义 ::= 标识符=无符号整数无符号整数 ::= 数字{数字}标识符 ::= 字母{字母|数字}变量说明部分::= var标识符{,标识符};过程说明部分 ::= 过程首部分程序;过程首部 ::= procedure标识符;语句 ::= 赋值语句|条件语句|当型循环语句|过程调用语句|读语句|写语句|复合语句|重复语句|空赋值语句 ::= 标识符:=表达式表达式 ::= [+|-]项{加法运算符项}项 ::= 因子{乘法运算符因子}因子 ::= 标识符|无符号整数|(表达式)加法运算符 ::= +|-乘法运算符 ::= *|/条件 ::= 表达式关系运算符表达式|odd表达式关系运算符 ::= =|||=||=条件语句 ::= if条件then语句[else语句]当型循环语句 ::= while条件do语句过程调用语句 ::= call标识符复合语句 ::= begin语句{;语句}end重复语句 ::= repeat语句{;语句}until条件读语句 ::= read(标识符{,标识符})写语句 ::= write(标识符{,标识符})字母 ::= a|b|...|X|Y|Z数字 ::= 0|1|2|...|8|9注意:数据类型:无符号整数标识符类型:简单变量(var)和常数(const)数字位数:小于14位标识符的有效长度:小于10位过程嵌套:小于3层PL/0语言的语法图描述图1-1 程序语法描述图图1-2 分程序语法描述图图1-6 项语法描述图图1-7 因子语法描述图PL/0编译系统结构图 1-8 PL/0编译程序和解释执行过程PL/0编译程序函数定义层次结构:pl0errorgetsymgetchgentestblockenterpositionconstdeclarationvardeclarationlistcodest:atementexpressiontermfactorconditioninterpretbase下面介绍这些过程(函数)的作用。pl0主程序error出错处理,打印出错位置和错误代码getsym词法分析,读取一个单词getch取字符gen生成P-code指令,送入目标程序区test测试当前单词符号是否合法block分程序分析处理enter登记符号表position查找标识符在符号表中的位置constdeclaration常量定义处理vardeclaration变量定义处理listcode列出p-code指令清单statement语句部分分析处理expression表达式分析处理term项分析处理factor因子分析处理condition条件分析处理interpretP-code解释执行程序base通过静态链求出数据区的基地址PL/0编译程序的词法分析PL/0编译系统中所有的字符,字符串的类型为,如下表格:保留字begin, end, if,then, else, const, procedure,var,do,while, call,read, write, repeat, until算数运算符+ ,—,*,/比较运算符 , ,= , , = ,=赋值符:= , =标识符变量名,过程名,常数名常数10,2

文档评论(0)

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

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

1亿VIP精品文档

相关文档