[编译原理]PL/0 编译器的设计与实现

本文详细介绍了PL/0编译器的设计与实现,包括词法分析、语法分析和目标代码生成的过程。词法分析涉及读取源程序、识别保留字和标识符等;语法分析采用递归子程序法,从'程序'开始符进行;目标代码生成则关注伪操作码、符号表和代码生成策略。此外,文章还涵盖了错误处理和符号表管理等关键环节。
摘要由CSDN通过智能技术生成

一.程序基本任务及结构

其编译过程采用一趟扫描方式
以语法、语义分析程序为核心
词法分析程序和代码生成程序都作为一个过程,当语法分析需要读单词时就调用词法分析程序,而当语法、语义分析正确,需要生成相应的目标代码时,则调用代码生成程序。
表格管理程序实现变量,常量和过程标识符的信息的登录与查找。
出错处理程序,对词法和语法、语义分析遇到的错误给出在源程序中出错的位置和与错误 性质有关的编号,并进行错误恢复。
在这里插入图片描述

二.PL/0语言基本结构

<程序> :: = <程序首部> <分程序>.
<程序首部> :: = PROGRAM <标识符>;
<分程序> :: = [<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句部分>
<常量说明部分> :: = CONST <常量定义>{
    ,<常量定义> };
<常量定义> :: = <标识符 >= <无符号整数>
<变量说明部分> :: = VAR <标识符>{
    ,<标识符> };
<过程说明部分> :: = <过程首部>; <分程序>;
<过程首部> :: = PROCEDURE <标识符>//变量定义
<语句部分> :: = <语句> | <复合语句>
<复合语句> :: = BEGIN <语句>{
    ; <语句> }
<语句>:: = <赋值语句> | <条件语句> | <当型 循环语句> | <过程调用语句> | <读语句> | <写语句> | <复合语句>
<赋值语句> :: = <标识符>: = <表达式>
<读语句> :: = READ(<标识符>{
   , <标识符>})
<写语句> :: = WRITE(<表达式>{
   , <表达式>})
<过程调用语句> :: = CALL <标识符>
<条件语句> :: = IF <条件> THEN <语句>
<当型循环语句> :: = WHILE <条件> DO <语句>
<因子> :: = <标识符> | <常量> | (<表达式>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值