[ FunCall -- _1 KW["("] _2 KW[")"], FunCall.2:iter-star-sep -- _1 KW[","], ProcCall -- _1 KW["("] _2 KW[")"] KW[";"], ProcCall.2:iter-star-sep -- _1 KW[","], TypeName -- _1, Declaration -- KW["var"] _1 KW[";"], DeclarationTyped -- KW["var"] _1 KW[":"] _2 KW[";"], Assign -- _1 KW[":="] _2 KW[";"], Block -- V [V vs=2 [KW["begin"] _1] KW["end"]], Block.1:iter-star -- _1, IfThen -- KW["if"] _1 KW["then"] _2 KW["end"], IfThen.2:iter-star -- _1, IfElse -- KW["if"] _1 KW["then"] _2 KW["else"] _3 KW["end"], IfElse.2:iter-star -- _1, IfElse.3:iter-star -- _1, While -- KW["while"] _1 KW["do"] _2 KW["end"], While.2:iter-star -- _1, For -- KW["for"] _1 KW[":="] _2 KW["to"] _3 KW["do"] _4 KW["end"], For.4:iter-star -- _1, True -- KW["true"], False -- KW["false"], Var -- _1, Int -- _1, String -- _1, Mul -- _1 KW["*"] _2, Div -- _1 KW["/"] _2, Mod -- _1 KW["%"] _2, Add -- _1 KW["+"] _2, Sub -- _1 KW["-"] _2, Lt -- _1 KW["<"] _2, Gt -- _1 KW[">"] _2, Leq -- _1 KW["<="] _2, Geq -- _1 KW[">="] _2, Equ -- _1 KW["="] _2, Neq -- _1 KW["!="] _2, And -- _1 KW["&"] _2, Or -- _1 KW["|"] _2, Program -- _1, Program.1:iter-star -- _1 ]