欢迎来到第壹文秘! | 帮助中心 分享价值,成长自我!
第壹文秘
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 第壹文秘 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:1028209       资源大小:284.80KB        全文页数:22页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,如果您不填写信息,系统将为您自动创建临时账号,适用于临时下载。
    如果您填写信息,用户名和密码都是您填写的【邮箱或者手机号】(系统自动生成),方便查询和重复下载。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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编译系统结构图(DebUgAndon类,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集成开发环境的设想。本项目的开发过程可以分成三个阶段,即实现并扩充的P1.O编译内核,P1.o控制台程序开发,P1.O集成开发环境P1.ODE开发。其中主要任务是集中在第一阶段,后两阶段只是在其基础上实现一个对外接口,并对其进行改进。1.1 实现扩充的P1.O编译内核说明在这一阶段,主要是深入了解P1.O编译器内核的构造方法,边阅读由著名计算机科学家Pascal语言的创始人N.Wirth的P1.O编译系统,同时用C+语言进行重写。这其中涉及到许多PaSCal语言和C+的语言设施不同,重新设计以实现。主要在Win2003÷VC6.0环境下完成。1.2 P1.o控制台程序简介在己有内核的基础上,充分发挥C+语言的特性,及一点点面向对象的思想,重新设计了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.ODovelopwontEnvironment)PovorcdbyITRunner(320606243E)12005.3.3OMIC<-piiIEaiqlJfip打开PCODEftW符号筏consttrue=I,fals=0.var×>y»a>tpf:intccer.procedureprine;verI9f:integer.procedureod.x:«x-x/y«y:beginf三三true:iz3.vhilei<>dobeginx;e»:yx三i.盥翁榜三三z的熊O1-3456-S9Eol>-5456-S91!lllll!llIWI>-getffy>O.<-condition();一expression。.I<-tr>().II<-factorO;III0;Illl>-trt();III<-postion().欢迎2使用rsD*3h:200S->414.17:231.4.1.2P1.O控制台编译系统2扩充P1.O语言文法2.1 晤法的EBNF(巴克斯-瑙尔范式)程序:=分程序. 无符号整数 标识符 变量说明部分 过程说明部分 过程首部 语句赋值语句表达式项因子加法运算符乘法运算符条件语句关系运算符条件语句 分程序:=常量说明部分变量说明部分过程说明部分语句 常量说明部分:=const常量定义,常量定义; 常量定义:=标识符=无符号整数:=数字数字):=字母字母|数字var标识符,标识符;过程首部分程序;过程说明部分;ProCedUre标识符;赋值语句|条件语句|当循环语句|过程调用语句|复合语句|读语句|写语句|空标识符:=表达式:=+卜项加法运算符项:=因子乘法运算符因子标识符|无符号整数'C表达式):=+-:=*|/IF条件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条件>语法图2005年3川3口32060624卜克25<l3JJ3II32060624I克V项>语法图2005年3月31132060624I克V因子>语法图2005<3JJ3H32060624上克-因子(Ident)umbcrI9T表达式I>-3属性Sl译文沫(包括各动作符号及各种属性的说明)无符号整数v-数字“V数字mvalvn,m,v:数字的值val由数字获得整数的值标识符“::=V字母字母K数字公/n:标识符的名字bsf:获得标识符的名字常量定义:=标识符11=无符号整数enterncn:常量名c:无符号整数的值enter:把常量名和无符号整数的值登如符号表变量说明部分:=var标识符11entern,标识符n:变量名enter:把变量名登入符号表过程首部::=ProCedUre过程名,©enternn:过程名enter:把过程名登入到符号表赋值语句:=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表达式表达式1SSI表达式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指令labgen:返回循环结束位置false_branch:产生位置标号< 过程调用语句>:=call<标识符>11100kupprocnigenjsrin:过程名i:过程名在符号表中的位置loOkUPProc:返回过程名在符号表中的位置genjsr:压栈< 读语句>:=read,(,<标识符>redn><标识符>red11,),red发送RED读指令< 写语句>:=write,(,<表达式>jwrtj><表达式>jwrtj,),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为转向地

    注意事项

    本文(PL0 编译系统及集成开发环境的实现文档.docx)为本站会员(p**)主动上传,第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第壹文秘(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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

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

    收起
    展开