2024年4月22日发(作者:镜若薇)
扩展MINI_PL的文法
<程序>PROGRAM<标识符>’(’<标识符>﹛, <标识符>﹜’)’;<分程序>.
<分程序>[<常数说明>][<变量说明>]﹛<过程说明>﹜BEGIN<语句>﹛; <语句>﹜END
<常数说明>CONST<常量标识符>=<常量>﹛; <常量标识符>=<常量>﹜;
<变量说明>VAR<变量标识符>﹛,<变量标识符>﹜:<类型>
﹛; <变量标识符>﹛,<变量标识符>﹜:<类型>};
<过程说明>PROCEDURE<过程标识符><参数表>;<分程序>;
<参数表>ε︱’(’<参数〉﹛;<参数>﹜’)’
<参数><变参>︱<值参>
<变参>VAR <标识符>﹛,<标识符>﹜:<简单类型>
<值参><标识符>﹛,<标识符>﹜:<简单类型>
<类型><简单类型>︱ARRAY’[’<无符号整数>..<无符号整数>’]’OF <简单类型>
<简单类型>REAL︱INTEGER︱CHAR︱BOOLEAN
<语句><赋值语句>︱︱<空语句>︱<过程调用>︱<复合语句>
︱<条件语句>︱
<赋值语句><变量>:=<表达式>
<读语句>︱<写语句>
<读语句>READ’(’ <变量标识符>﹛,<变量标识符>﹜’)’
︱READLN[’(’ <变量标识符>﹛,<变量标识符>﹜’)’ ]
<写语句>WRITE’(’ <简单表达式>﹛,<简单表达式>﹜’)’
︱WRITELN[’(’ <简单表达式>﹛,<简单表达式>﹜’)’ ]
<空语句>ε
<过程调用><过程标识符>[’(’ <表达式>﹛,<表达式>﹜’)’ ]
<复合语句>BEGIN<语句>﹛;<语句>﹜END
<条件语句>IF<表达式>THEN<语句>[ELSE<语句>]
<表达式><简单表达式>[<关系运算符><简单表达式>]
<关系运算符><︱<= ︱= ︱<>︱>= ︱>
<简单表达式>(ε︱+︱-)<项>[(+︱-︱OR)<项>]
<项><因子>[(*︱/︱DIV︱MOD︱AND)<因子>]
<因子><无符号整数>|<变量>|’(’<表达式>’)’|NOT<因子>
<变量><变量标识符>[’[’<表达式>’]’]
<常量><数值常量>|<字符串常量>
<数值常量>(ε︱+︱-)(<常量标识符>|<无符号数>)
<字符串常量>’{<字符>}’
<字符><字母>|<数字>|+|-|*|/|(|)|=|:|;|,|.|<|>|[|]
<无符号数><无符号整数>[.<数字>{<数字>}][E(ε︱+︱-)<无符号整数>]
<无符号整数><数字>{<数字>}
<变量标识符><标识符>
<常量标识符><标识符>
<过程标识符><标识符>
<标识符><字母>{<字母>|<数字>}
<字母><大写字母>|<小写字母>
<大写字母>A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<小写字母>a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
<数字>0|1|2|3|4|5|6|7|8|9
2024年4月22日发(作者:镜若薇)
扩展MINI_PL的文法
<程序>PROGRAM<标识符>’(’<标识符>﹛, <标识符>﹜’)’;<分程序>.
<分程序>[<常数说明>][<变量说明>]﹛<过程说明>﹜BEGIN<语句>﹛; <语句>﹜END
<常数说明>CONST<常量标识符>=<常量>﹛; <常量标识符>=<常量>﹜;
<变量说明>VAR<变量标识符>﹛,<变量标识符>﹜:<类型>
﹛; <变量标识符>﹛,<变量标识符>﹜:<类型>};
<过程说明>PROCEDURE<过程标识符><参数表>;<分程序>;
<参数表>ε︱’(’<参数〉﹛;<参数>﹜’)’
<参数><变参>︱<值参>
<变参>VAR <标识符>﹛,<标识符>﹜:<简单类型>
<值参><标识符>﹛,<标识符>﹜:<简单类型>
<类型><简单类型>︱ARRAY’[’<无符号整数>..<无符号整数>’]’OF <简单类型>
<简单类型>REAL︱INTEGER︱CHAR︱BOOLEAN
<语句><赋值语句>︱︱<空语句>︱<过程调用>︱<复合语句>
︱<条件语句>︱
<赋值语句><变量>:=<表达式>
<读语句>︱<写语句>
<读语句>READ’(’ <变量标识符>﹛,<变量标识符>﹜’)’
︱READLN[’(’ <变量标识符>﹛,<变量标识符>﹜’)’ ]
<写语句>WRITE’(’ <简单表达式>﹛,<简单表达式>﹜’)’
︱WRITELN[’(’ <简单表达式>﹛,<简单表达式>﹜’)’ ]
<空语句>ε
<过程调用><过程标识符>[’(’ <表达式>﹛,<表达式>﹜’)’ ]
<复合语句>BEGIN<语句>﹛;<语句>﹜END
<条件语句>IF<表达式>THEN<语句>[ELSE<语句>]
<表达式><简单表达式>[<关系运算符><简单表达式>]
<关系运算符><︱<= ︱= ︱<>︱>= ︱>
<简单表达式>(ε︱+︱-)<项>[(+︱-︱OR)<项>]
<项><因子>[(*︱/︱DIV︱MOD︱AND)<因子>]
<因子><无符号整数>|<变量>|’(’<表达式>’)’|NOT<因子>
<变量><变量标识符>[’[’<表达式>’]’]
<常量><数值常量>|<字符串常量>
<数值常量>(ε︱+︱-)(<常量标识符>|<无符号数>)
<字符串常量>’{<字符>}’
<字符><字母>|<数字>|+|-|*|/|(|)|=|:|;|,|.|<|>|[|]
<无符号数><无符号整数>[.<数字>{<数字>}][E(ε︱+︱-)<无符号整数>]
<无符号整数><数字>{<数字>}
<变量标识符><标识符>
<常量标识符><标识符>
<过程标识符><标识符>
<标识符><字母>{<字母>|<数字>}
<字母><大写字母>|<小写字母>
<大写字母>A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
<小写字母>a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z
<数字>0|1|2|3|4|5|6|7|8|9