声明
本次实验是对pascal语言的子集PL\0语言进行词法、语法分析、语义分析、中间代码生成和解释器执行中间代码等五个部分
实验采用python编写,优点在于列表和字典数据结构以及简洁的语法使得较少的代码量实现整个功能,如果你采用别的语言也可以参考本教程,我会尽量详细的说明实验的细节
理论和实验参考了以下博客:
http://jcf94.com/2016/02/21/2016-02-21-pl0/ 这个和南航的实验有些差别,但包括了主要的实验思路
https://www.cnblogs.com/X-Jun/p/11042544.html#_lab2_2_0 这个详细介绍了符号表和运行时存储组织记录
https://www.jianshu.com/p/de9132228b99 这个介绍了中间代码的规则和地址回填的方法
实验要求
课程设计题目
一个PASCAL语言子集(PL/0)编译器的设计与实现
PL/0语言的BNF描述(扩充的巴克斯范式表示法)
<prog> → program <id>;<block>
<block> → [<condecl>][<vardecl>][<proc>]<body>
<condecl> → const <const>{,<const>};
<const> → <id>:=<integer>
<vardecl> → var <id>{,<id>};
<proc> → procedure <id>([<id>{,<id>}]);<block>{;<proc>}
<body> →
PL/0编译器设计

本文介绍了一个PASCAL语言子集(PL/0)的编译器设计与实现,涵盖词法、语法、语义分析、中间代码生成及解释执行。使用Python编写,详细解析了BNF描述、中间代码格式、假想目标机结构和活动记录。
最低0.47元/天 解锁文章
3044

被折叠的 条评论
为什么被折叠?



