pl0/GRAMMER.md

655 B

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 ")" .