title: "odd" expression in PL/0
body: <p>Given the following EBNF grammar (found on wikipedia for PL/0), what is an expression preceded by the "ODD" keyword?  I would like to implement the simple language as a small project but I can not seem to figure out what this means. Has anyone head of this before or able to interpret what an odd expression is so that I can write a compiler for the language correctly?</p>
  
  <pre><code>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 ("="|"#"|"&lt;"|"&lt;="|"&gt;"|"&gt;=") expression .
  
  expression = [ "+"|"-"] term { ("+"|"-") term}.
  
  term = factor {("*"|"/") factor}.
  
  factor = ident | number | "(" expression ")".
  </code></pre>