给定以下 EBNF 语法(在 PL/0 的 wikipedia 上找到),“ODD”关键字前面的表达式是什么?我想将简单的语言实现为一个小项目,但我似乎无法弄清楚这意味着什么。有没有人在此之前或能够解释什么是奇怪的表达式,以便我可以正确地为该语言编写编译器?
program = block "." .
block = [ "const" ident "=" number {"," ident "=" number} ";"]
[ "var" ident {"," ident} ";"]
{ "procedure" ident ";" block ";" } statement .
statement = [ ident ":=" expression | "call" ident |
"begin" statement {";" statement } "end" |
"if" condition "then" statement |
"while" condition "do" statement ].
condition = "odd" expression |
expression ("="|"#"|"<"|"<="|">"|">=") expression .
expression = [ "+"|"-"] term { ("+"|"-") term}.
term = factor {("*"|"/") factor}.
factor = ident | number | "(" expression ")".