PLX编译器件设计说明书.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PLX编译器件设计说明书

PL/X编译器软件设计说明书 作者:xxx 日期:2009/4/30 1.介绍 本编译器可以按照PL/X语言语法要求进行词法、语法、语义、出错处理,并最终成生目标代码,通过解释执行得到最终结果。完成了求余、for语句、do……while语句、read语句、call语句以及自增、自减、常量的定义和使用等扩展功能。 2.编译器系统结构 2.1 编译器 2.1.1 PL/X语法图 prog=”program”block”.”. block=ds{”procedure”ident”;”block”;”}”begin”ss”end”. ds=d{“;”d}. d=”integer”aident{“,”aident}|”logical”bident{“,”bident}|const ident”=”number{“,”ident”=”number}. ss=s1{“;”s1}. s1=aident”:=”ae| bident”:=be| ”if”be”then”ss[“else”ss]”end”| ”while”be”do”ss”end”| ”repeat”ss”until”be| ”write”ae| “do”ss”end””while”be| ”read””(“aident{“,”aident}”)”| ”call” ident| “for” aident”:=”number”to”number””do”(s1|”begin”ss”end”)| aident”++”|bident”—“. ae=[“-“]at{(“-“|”+”)at} at=af{(“*”|”/”|”odd”|”%”)af}. af=aident|number|”(“ae”)”. be=bt{“or”bt}. bt=bf{“and”bf}. bf=bident|”true”|false”|”not”bf|”(“be”)”|re. re=(aident|number)(“=”|””|”=”|””|”=”|”/=”)ae. 扩展部分: 1.能够进行求余运算; 2.能够正确执行read语句; 3.能够正确执行do…while..语句。 4.能够正确执行for语句。 5.能够正确执行call语句。 6.能够正确定义和使用const常量定义。 7.能够正确执行自增自减运算。 8.能够进行奇偶判断。 2.1.2判断是否符合两条限制规则 1、找出图中每一个分支点,考察每个分枝点的各个分支的头符号是否相异。 2、找出图中每一个透明结构,考察每个透明结构的头符号集合与其跟随符号集合是否相异。 2.1.3 过程调用相关图 2.1.5 语法出错表定义 1 源文件缺少program入口. 2 程序缺少结束符号! 3 过程定义缺少结束分号! 4 过程定义缺少开始分号! 5 不可识别的过程定义标识符! 6 程序语句缺少begin关键字. 7 程序缺少end关键字. 8 不可识别的标识符! 9 赋值语句不能使用 = 标识符! 10 左值使用出错! 11 为过程变量! 12 if 语句缺乏 end标记符 13 if 语句缺少 then标识符! 14 在 while 循环里需要一个 end 标识符 15 while 语句缺少 do标识符! 16 repeat 缺乏until标识符! 17 repeat 缺乏until标识符! 18 被调用的不是过程! 19 call 语句无法识别! 20 应该为赋值 21 缺少了do 22 数值类型 23 应该为to 24 应该为标识符 25 运算式中不可使用 26 缺乏)标识符 28 不可识别的运算因子 29 应该为数值或标识符, 30 错误的运算符号 2.2 虚拟机 2.2.1 虚拟机组织结构 程序存储器 指令存储器 数据存储器 程序地址寄存器 基本地址寄存器 地址寄存器 2.2.2 虚拟机指令格式 LIT 0,a 把一个常数置入栈顶 OPR 0,a 一组算术和关系运算指令 LOD l,a 把一个变量置入栈顶 STO l,a 从栈顶把数置入到一个变量单元里 INT 0,a 预留数据存储位置 JMP 0,a 无条件转移指令 JPC 0,a 有条件转移指令 WRC0,a 写出一个变量值 2.2.3 虚拟机指令系统及其解释 switch(i.f) { case LIT: t++; s[t]=i.a; break; case OPR: switch(i.a)

文档评论(0)

linjuanrong + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档