- <程序> ::= <分程序>.
- <分程序> ::= [<常量说明部分>] [<变量说明部分>] [<数组说明部分>] [<过程说明部分>] <语句>
- <常量说明部分> ::= const <常量定义> { ,<常量定义> };
- <常量定义> ::= <标识符> = <无符号整数> | <字符常量>
- <无符号整数> ::= <数字> {<数字>}
- <字符常量> ::= ‘'’<字符>‘'’
- <变量说明部分> ::= var <标识符> { , <标识符 > };
- <数组说明部分> ::= array <标识符>‘[’<无符号整数>‘]’{‘[’<无符号整数>‘]’} { , array <标识符>‘[’<无符号整数>‘]’{‘[’<无符号整数>‘]’};
- <标识符> ::= <字母> | _ { <字母> | <数字> | _ }
- <过程说明部分> ::= <过程首部><分程序>{; <过程说明部分> };
- <过程首部> ::= procedure <标识符> ;
- <语句> ::= <赋值语句> | <条件语句> | <While循环语句> | <For循环语句> |<过程调用语句> | <读语句> | <写语句> | <字符打印语句> | <复合语句> | <自增减语句> | <空>
- <赋值语句> ::= <标识符> := | += | -= | *= | /= | %= <表达式>
- <复合语句> ::= begin <语句> {;<语句>} end
- <条件> ::= <表达式> <关系运算符> <表达式> | odd <表达式> | !‘(’<条件>‘)’
- <表达式> ::= [+ | - | ++ | --] <项> {<加法运算符> | % <项>}
- <项> ::= <因子> {<乘法运算符><因子>}
- <因子> ::= <标识符> | <无符号整数> | ‘(’<表达式>‘)’| <开方语句>
- <开方语句> ::= sqrt ‘(’<表达式>‘)’
- <加法运算符> ::= + | -
- <乘法运算符> ::= * | /
- <关系运算符> ::= = | # | < | <= | > | >=
- <条件语句> ::= if <条件> then <语句> {else <语句>}
- <过程调用语句> ::= call <标识符>
- <While循环语句> ::= while <条件> do <语句>
- <For循环语句> ::= for <赋值语句> to | until | downto <数字> {step <数字>} do <语句>
- <读语句> ::= read ‘(’ <标识符> {,<标识符>} ‘)’
- <写语句> ::= write | writeln ‘(’ <表达式> {, <表达式>} ‘)’
- <自增减语句> ::= ++ | -- <标识符>
- <字符打印语句> ::= print | println ‘(’ <表达式> | <字符串> {, <表达式> | <字符串>} ‘)’
- <字符串> ::= ‘"’{<字符>}‘"’
- <字母> ::= a | b | … | x | y | z
- <数字> ::= 0 | 1 | 2 | … | 8 | 9
- <字符> ::= <Unicode编码集>
-
Notifications
You must be signed in to change notification settings - Fork 2
PL0 Compiler improved version
License
KanModel/PL0_Compiler
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
PL0 Compiler improved version
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published