# compilerForPL0 **Repository Path**: zsx872941355/compiler-for-pl0 ## Basic Information - **Project Name**: compilerForPL0 - **Description**: 编译原理实验 要求实现词法分析器和语法分析器 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-06-06 - **Last Updated**: 2022-04-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### PL/0语言描述 PL/0文法的EBNF表示如下: ``` <程序> ::= <分程序>. <分程序> ::= [<常量说明部分>][变量说明部分>][<过程说明部分>]<语句> <常量说明部分> ::= const<常量定义>{,<常量定义>}; <常量定义> ::= <标识符>=<无符号整数> <无符号整数> ::= <数字>{<数字>} <标识符> ::= <字母>{<字母>|<数字>} <变量说明部分>::= var<标识符>{,<标识符>}; <过程说明部分> ::= <过程首部><分程序>;{<过程说明部分>} <过程首部> ::= procedure<标识符>; <语句> ::= <赋值语句>|<条件语句>|<当型循环语句>|<过程调用语句>|<读语句>|<写语句>|<复合语句>|<重复语句>|<空> <赋值语句> ::= <标识符>:=<表达式> <表达式> ::= [+|-]<项>{<加法运算符><项>} <项> ::= <因子>{<乘法运算符><因子>} <因子> ::= <标识符>|<无符号整数>|'('<表达式>')‘ <加法运算符> ::= +|- <乘法运算符> ::= *|/ <条件> ::= <表达式><关系运算符><表达式>|odd<表达式> <关系运算符> ::= =|<>|<|<=|>|>= <条件语句> ::= if<条件>then<语句>[else<语句>] <当型循环语句> ::= while<条件>do<语句> <过程调用语句> ::= call<标识符> <复合语句> ::= begin<语句>{;<语句>}end <重复语句> ::= repeat<语句>{;<语句>}until<条件> <读语句> ::= read'('<标识符>{,<标识符>}')‘ <写语句> ::= write'('<标识符>{,<标识符>}')‘ <字母> ::= a|b|...|X|Y|Z <数字> ::= 0|1|2|...|8|9 ``` TODO LIST: - [x] 词法分析 - [ ] 词法分析(采用字符串) - [x] 词法分析(递归下降法) - [ ] 词法分析(LL(1) or LR(0))