PL0 编译系统及集成开发的环境的实现文档.docVIP

  • 25
  • 0
  • 约1.06万字
  • 约 21页
  • 2018-06-28 发布于福建
  • 举报

PL0 编译系统及集成开发的环境的实现文档.doc

PL0 编译系统及集成开发的环境的实现文档

PL0编译系统及集成开发环境的实现报告 北航计算机学院王 克 Contents: 1 项目概述 3 1.1 实现扩充的PL0编译内核说明 3 1.2 PL0控制台程序简介 3 1.3 PL0集成开发环境PL0DE简介 3 2 扩充PL0语言文法 4 2.1 语法的EBNF(巴克斯-瑙尔范式) 4 2.2 语法图 5 3 属性翻译文法(包括各动作符号及各种属性的说明) 7 4 P-code代码指令说明 9 5 错误信息表 10 6 系统的设计与实现 11 6.1 (Pl0类)PL/0编译程序的结构(参考教材原版PL/0) 11 6.2 PL0文法扩充(else和for)设计和实现 12 6.3 控制台PL0编译系统结构图(DebugAndOn类, Sym类, Pl0类) 14 6.4 PL0集成开发环境PL0DE实现 16 6.5 源代码文件说明 16 7 系统工作过程说明 17 7.1 (Pl0类) 语法分析过程(参考教材原版PL/0) 17 7.2 (Sym类中)PL/0编译程序的词法分析 17 7.3 PL0集成开发环境工作流程 19 8 源程序和测试用例 19 8.1 源程序 19 8.2 系统测试 19 9 开发体会心得 20 9.1 编译学习体会 20 9.2 项目实践心得 20 9.3 开发日志 20 10 附录 21 10.1 参考资料 21 项目概述 在学玩编译原理这门课程后,一方面由于大作业的要求,另一方面渴望所学知识得到实践,便有了开发一个简单的PL0集成开发环境的设想。 本项目的开发过程可以分成三个阶段,即实现并扩充的PL0编译内核,PL0控制台程序开发,PL0集成开发环境PL0DE 开发。其中主要任务是集中在第一阶段,后两阶段只是在其基础上实现一个对外接口,并对其进行改进。 实现扩充的PL0编译内核说明 在这一阶段,主要是深入了解PL0编译器内核的构造方法,边阅读由著名计算机科学家Pascal语言的创始人N.Wirth的PL0编译系统,同时用C++语言进行重写。这其中涉及到许多Pascal语言和C++的语言设施不同,重新设计以实现。 主要在Win2003+VC6.0环境下完成。 PL0控制台程序简介 在已有内核的基础上,充分发挥C++语言的特性,及一点点面向对象的思想,重新设计了PL0编译系统的架构。同时对原有PL0文法进行一定的扩充,实现控制台,文件双重输出,又设计了调试信息输出。 此阶段主要在Win2003+VC7.1环境下完成。 PL0集成开发环境PL0DE简介 在扩充PL0系统的基础上及以前开发数据库系统的经验,实现一个PL0编译程序的IDE,最终成为PL0集成开发环境PL0DE(PL0 Development Environment)。 主要在Win2003+BCB6.0环境下完成。 项目成果展示 PL0集成开发环境PL0DE PL0控制台编译系统 扩充PL0语言文法 语法的EBNF(巴克斯-瑙尔范式) 程序 ::= 分程序. 分程序 ::= [常量说明部分][变量说明部分][过程说明部分]语句 常量说明部分 ::= const常量定义{,常量定义}; 常量定义 ::= 标识符=无符号整数 无符号整数 ::= 数字{数字} 标识符 ::= 字母字母{|数字} 变量说明部分 ::= var标识符{,标识符}; 过程说明部分 ::= 过程首部分程序{;过程说明部分}; 过程首部 ::= procedure标识符; 语句 ::= 赋值语句|条件语句|当循环语句|过程调用语句|复合语句|读语句|写语句|空 赋值语句 ::= 标识符:=表达式 表达式 ::= [+|-]项{加法运算符项} 项 ::= 因子{乘法运算符因子} 因子 ::= 标识符|无符号整数|’(’表达式‘)’ 加法运算符 ::= +|- 乘法运算符 ::= *|/ 条件语句 ::= IF条件THEN语句 关系运算符 ::= =|#||=||= 条件语句 ::= if条件then语句[else语句] 当型循环语句 ::= while条件do语句 for循环语句 ::= for表达式(to|downto)表达式[by表达式]do语句 过程调用语句 ::= call标识符 复合语句 ::= begin语句{;语句}end 读语句 ::= read’(’标识符{,标识符}’)’ 写语句 ::= write’(’表达式{,表达式}’)’ 字母 ::= a|b|c|d…|x|y|z 数字 ::= 0|1|2|3…|8|9 语法图  属性翻译文法(包括各动作符号及各种属性的说明) n,m,v:数字的值 @val 由数字获得整

文档评论(0)

1亿VIP精品文档

相关文档