PL/0简单编译系统(四)

语法分析和语义分析

由于本项目使用的是递归下降子程序法,对每一个PL/0中的语法成分都进行了分析,并单独编写为一个过程。

函数名 功能
program() <主程序>::=<分程序>.
block() <分程序>::=[<常量说明部分>][<变量说明部分>][<过程说明部分>]<语句>
conDeclare() <常量说明部分>::=const <常量定义>{,<常量定义>}
conHandle() <常量定义>::=<标识符>=<无符号整数>
varDeclare() <变量说明部分>::=var<标识符>{,<标识符>}
proc() <过程说明部分>::=<过程首部><分程序>{;<过程说明部分>}; <过程首部>::=procedure<标识符>;
body() <复合语句>::=begin<语句>{;<语句>}end
statement() <语句>::=<赋值语句> or <条件语句> or <当循环语句> or <过程调用语句> or <复合语句> or <读语句> or <写语句> or <空>
condition() <条件>::=<表达式><关系运算符><表达式> or odd<表达式>
expression() <表达式>::=[+ or -]<项>{<加法运算符><项>} <加法运算符>::=+ or -
term() <项>::=<因子>{<乘法运算符><因子>} <乘法运算符>::=* or /
factor() <因子>::=<标识符> or <无符号整数> or '('<表达式>')'

其中每个语法成分的分析按照语法图进行,并同时进行符号表管理及Pcode代码生成。

各个语法的描述图如下:

程序语法描述图1
PL/0简单编译系统(四)_第1张图片
程序语法描述图2
PL/0简单编译系统(四)_第2张图片
程序语法描述图3
PL/0简单编译系统(四)_第3张图片
程序语法描述图4

词法分析
符号表管理
语法和语义分析
Pcode生成
出错管理

你可能感兴趣的:(PL/0简单编译系统(四))