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

上传人:p** 文档编号:1028209 上传时间:2024-06-15 格式:DOCX 页数:22 大小:284.80KB
下载 相关 举报
PL0 编译系统及集成开发环境的实现文档.docx_第1页
第1页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第2页
第2页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第3页
第3页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第4页
第4页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第5页
第5页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第6页
第6页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第7页
第7页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第8页
第8页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第9页
第9页 / 共22页
PL0 编译系统及集成开发环境的实现文档.docx_第10页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《PL0 编译系统及集成开发环境的实现文档.docx》由会员分享,可在线阅读,更多相关《PL0 编译系统及集成开发环境的实现文档.docx(22页珍藏版)》请在第壹文秘上搜索。

1、P1.O编译系统及集成开发环境的实现报告北航计算机学院32060624王克Contents:1项目HU21.1 实现折充的P1.O编译内核说明21.2 P1.o控制台程Jf简介21.3 P1.O集成开发环境P1.ODE简介22扩充P1.o诺言文法32.1 诺法的EBNF(巴克斯瑙尔范式)32.2 诺法图43属性H译文法(包括各动作符号及各种房住的说明)64P-COde代码指令说明85措课信息表96系缆的设计与实,IO6.1 (Plo类)P1.0编译程序的结构(参考教材原版P1./O)106.2 P1.O文法犷充(else和for)Sit和实现116.3 控制台P1.o编译系统结构图(DebUg

2、Andon类,Sym类,PIO类)136.4 P1.O集成开发环境P1.ODE实现156.5 源代周文件说明157系统工作过程说明167.1 (PIO类)培法分所过程(参考教材原版P1./0)167.2 (Sym类中)P1.0编译程If的司法分析167.3 P1.O集成开发环境工作流程188源程序和制箕用例188.1 源程序188.2 系统测试189开发体会。得199.1 编译学习体会199.2 项目实践心得199.3 开发日志1910附录2010.1 参考资料201项目柢述在学玩编译原理这门课程后,一方面由于大作业的要求,另一方面渴望所学知识得到实践,便有了开发一个简单的P1.O集成开发环境

3、的设想。本项目的开发过程可以分成三个阶段,即实现并扩充的P1.O编译内核,P1.o控制台程序开发,P1.O集成开发环境P1.ODE开发。其中主要任务是集中在第一阶段,后两阶段只是在其基础上实现一个对外接口,并对其进行改进。1.1 实现扩充的P1.O编译内核说明在这一阶段,主要是深入了解P1.O编译器内核的构造方法,边阅读由著名计算机科学家Pascal语言的创始人N.Wirth的P1.O编译系统,同时用C+语言进行重写。这其中涉及到许多PaSCal语言和C+的语言设施不同,重新设计以实现。主要在Win2003VC6.0环境下完成。1.2 P1.o控制台程序简介在己有内核的基础上,充分发挥C+语言

4、的特性,及一点点面向对象的思想,重新设计了Pu)编译系统的架构。同时对原有P1.o文法进行一定的扩充,实现控制台,文件双重输出,又设计了调试信息输出。此阶段主要在Win2003+VC7.l环境下完成。1.3 P1.o集成开发环境P1.oDE简介在扩充P1.O系统的基础上及以前开发数据库系统的经验,实现一个P1.O编译程序的IDE,最终成为P1.0集成开发环境P1.0DE(P1.0DevelopmentEnvironment)。主要在Win2003+BCB6.0环境下完成。1.4 项目成果展示1.4.1.1P1.O集成开发环境P1.ODEP1.Olfcjft开发MVO8(P1.ODovelopw

5、ontEnvironment)PovorcdbyITRunner(320606243E)12005.3.3OMICyatpf:intccer.procedureprine;verI9f:integer.procedureod.x:x-x/yy:beginf三三true:iz3.vhileidobeginx;e:yx三i.盥翁榜三三z的熊O1-3456-S9Eol-5456-S91!lllll!llIWI-getffyO.-condition();一expression。.I().II-trt();III414.17:231.4.1.2P1.O控制台编译系统2扩充P1.O语言文法2.1 晤法的E

6、BNF(巴克斯-瑙尔范式)程序:=分程序. 无符号整数 标识符 变量说明部分 过程说明部分 过程首部 语句赋值语句表达式项因子加法运算符乘法运算符条件语句关系运算符条件语句 分程序:=常量说明部分变量说明部分过程说明部分语句 常量说明部分:=const常量定义,常量定义; 常量定义:=标识符=无符号整数:=数字数字):=字母字母|数字var标识符,标识符;过程首部分程序;过程说明部分;ProCedUre标识符;赋值语句|条件语句|当循环语句|过程调用语句|复合语句|读语句|写语句|空标识符:=表达式:=+卜项加法运算符项:=因子乘法运算符因子标识符|无符号整数C表达式):=+-:=*|/IF条

7、件THEN语句if条件then语句elsev语句 当型循环语句:=WhiIe条件do语句 VfOr循环语句:=forv表达式(todownto)v表达式byv表达式dov语句 过程调用语句:=call标识符 复合语句 读语句 写语句 字母 数字:=begin语句;语句end:=read(标识符,标识符):=WriteT表达式,表达式):=abcd.xyz:=0l23.892.2 暗法图分程今语法图(扩充)2005年3月311const)idem)Ynumber)-procedure)Yidem)“分程32060624T克OI语句IV语句语法图(扩充)2005年33H32060624卜克V条件语

8、法图2005年3川3口32060624卜克25语法图2005年3月31132060624I克V因子语法图2005-3属性Sl译文沫(包括各动作符号及各种属性的说明)无符号整数v-数字“V数字mvalvn,m,v:数字的值val由数字获得整数的值标识符“::=V字母字母K数字公/n:标识符的名字bsf:获得标识符的名字常量定义:=标识符11=无符号整数enterncn:常量名c:无符号整数的值enter:把常量名和无符号整数的值登如符号表变量说明部分:=var标识符11entern,标识符n:变量名enter:把变量名登入符号表过程首部::=ProCedUre过程名,enternn:过程名ent

9、er:把过程名登入到符号表赋值语句:=Sei1.l标认符:=reset1.1.表达式1.:左值特征set1.:置左值特征为真reset1.:置左值特征为假表达式:=+-fu项+V项add-V项subfu:发送取反指令add:发送加法指令sub:发送减法指令项:=V因子*mul因子因子mul:发送乘法指令div:发送除法指令因子:=V标识符positionnpushjK无符号整数pushii,(,表达式,),n:常量名或者变量名j:名字n在符号表中的位置i:整数position:查询j在符号表中的位置push:发送1.OD指令pushi发送1.IT指令条件:=表达式vV表达式neq表达式表达式1

10、SSI表达式V=V表达式lesI表达式表达式gtrI表达式=V表达式geqIodd表达式oddneq:发送不等于判断指令lss:发送小于判断指令les:发送小于等于指令gtr:发送大于判断指令geq:发送大于等于判断指令odd:发送不等于判断指令条件语句:=if条件brf丫then语句labprod丫brf:发送条件跳转指令labprod:把继承属性y回填到目标程序中当循环:二(while头fr语句retbranchrIabmit.r(while头fl:=Whilelabgen条件false_branchdof,r:转移位置ret_branch:发送JMP指令labmit:发送JPC指令lab

11、gen:返回循环结束位置false_branch:产生位置标号:=call11100kupprocnigenjsrin:过程名i:过程名在符号表中的位置loOkUPProc:返回过程名在符号表中的位置genjsr:压栈:=read,(,rednred11,),red发送RED读指令:=write,(,jwrtjjwrtj,),j:输出值Wrt:发送WRT输出指令4P-Code代码指令说明P1./O编译程序所产生的目标代码是一个假想栈式计算机的目标代码即P-code指令代码。P-COde不依赖于任何实际计算机,其指令格式如下:f1a其中f为功能码;1表示层次差,即变量或过程被引用的分程序与说明该变量或过程的分程序之间的层次差;a的含义对不同的指令有所区别,可以是常数值、位移量、操作符代码等。目标指令有10条:P-code指令1.说明A说明指令含义11.IT0aa为常数取常量H放到数据栈顶2OPRIa1为层差a为表示执行何种运算执行运算(详见代码中interpret)31.OD1a1为调用层与说明层的层差a为变量在所说明层中的相对位置取变量放到数据栈栈顶4STO1a1为调用层与说明层的层差a为变量在所说明层中的相对位置将数据栈顶内容存入变量5CA1.1a1为层差a为被调用过程的目标程序入口地址调用过程6INT0aa为开辟的单元个数数据栈栈顶指针加a7JMP0aa为转向地

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 论文 > 管理论文

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!