pl0/GRAMMER.md

24 lines
655 B
Markdown

program = block "."
block = ["const" ident "=" number {"," ident "=" number} ";"]
["var" ident {"," ident} ";"]
{ "procedure" ident ";" block ";" }
statement .
statement = [ ident ":=" expression
| "call" ident
| "?" ident
| "!" expression
| "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 ")" .