电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

PL0语言编译程序分析VIP免费

PL0语言编译程序分析_第1页
1/30
PL0语言编译程序分析_第2页
2/30
PL0语言编译程序分析_第3页
3/30
PL/0 语言编译程序分析 PL/0语言是Pascal语言的一个子集,我们这里分析的PL/0的编译程序包括了对PL/0语言源程序进行分析处理、编译生成类 PCODE代码,并在虚拟机上解释运行生成的类 PCODE代码的功能。 PL/0语言编译程序采用以语法分析为核心、一遍扫描的编译方法。词法分析和代码生成作为独立的子程序供语法分析程序调用。语法分析的同时,提供了出错报告和出错恢复的功能。在源程序没有错误编译通过的情况下,调用类 PCODE解释程序解释执行生成的类 PCODE代码。 词法分析子程序分析: 词法分析子程序名为 getsym,功能是从源程序中读出一个单词符号(token),把它的信息放入全局变量 sym、id和 num中,语法分析器需要单词时,直接从这三个变量中获得。(注意!语法分析器每次用完这三个变量的值就立即调用 getsym子程序获取新的单词供下一次使用。而不是在需要新单词时才调用 getsym过程。)getsym过程通过反复调用 getch子过程从源程序过获取字符,并把它们拼成单词。getch过程中使用了行缓冲区技术以提高程序运行效率。 词法分析器的分析过程:调用 getsym时,它通过 getch过程从源程序中获得一个字符。如果这个字符是字母,则继续获取字符或数字,最终可以拼成一个单词,查保留字表,如果查到为保留字,则把 sym变量赋成相应的保留字类型值;如果没有查到,则这个单词应是一个用户自定义的标识符(可能是变量名、常量名或是过程的名字),把 sym置为 ident,把这个单词存入 id变量。查保留字表时使用了二分法查找以提高效率。如果 getch获得的字符是数字,则继续用 getch获取数字,并把它们拼成一个整数,然后把 sym置为 number,并把拼成的数值放入 num变量。如果识别出其它合法的符号(比如:赋值号、大于号、小于等于号等),则把 sym则成相应的类型。如果遇到不合法的字符,把 sym置成 nul。 语法分析子程序分析: 语法分析子程序采用了自顶向下的递归子程序法,语法分析同时也根据程序的语意生成相应的代码,并提供了出错处理的机制。语法分析主要由分程序分析过程(block)、常量定义分析过程(constdeclaration)、变量定义分析过程(vardeclaration)、语句分析过程(statement)、表达式处理过程(expression)、项处理过程(term)、因子处理过程(factor)和条件处理过程(condition)构成。这些过程在结构上构成一个嵌套的层次结构。除此之外,还有出错报告过程(error)、代码生成过程(gen)、...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

PL0语言编译程序分析

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部