语法分析和语义分析
由于本项目使用的是递归下降子程序法,对每一个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
程序语法描述图2
程序语法描述图3
程序语法描述图4












网友评论