program -> scope statement -> assignment statement -> if statement statement -> while statement statement -> break statement -> return statement -> put output statement -> get input statement -> scope statement -> procedure call expression -> integer expression -> true expression -> false expression -> - expression expression -> expression + expression expression -> expression - expression expression -> expression * expression expression -> expression / expression expression -> expression ^ expression expression -> ! expression expression -> expression & expression expression -> expression | expression expression -> expression = expression expression -> expression != expression expression -> expression < expression expression -> expression <= expression expression -> expression > expression expression -> expression >= expression expression -> ( expression ) expression -> variable expression -> function call output -> expression output -> text output -> newline input -> variable declaration -> type : identifier declaration -> type : identifier = expression declaration -> const type : identifier = expression declaration -> type : identifier [ expression ] declaration -> type function identifier ( parameters ) scope declaration -> procedure identifier ( parameters ) scope type -> integer type -> boolean argument -> expression parameter -> type : identifier parameter -> type : identifier [] parameter -> var type : identifier variable -> identifier variable -> identifier [ expression ] function call -> identifier (arguments) procedure call -> identifier (arguments)