PL\0编译原理实验(南航)一:实验要求及目标说明

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

声明

本次实验是对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> →

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值