regular tree grammar start Program productions ListStarOfStat0 -> ListPlusOfStat0 ListStarOfStat0 -> <nil>() ListStarOfStat0 -> <conc>(ListStarOfStat0,ListStarOfStat0) ListPlusOfStat0 -> <conc>(ListStarOfStat0,ListPlusOfStat0) ListPlusOfStat0 -> <conc>(ListPlusOfStat0,ListStarOfStat0) ListPlusOfStat0 -> <conc>(ListPlusOfStat0,ListPlusOfStat0) ListPlusOfStat0 -> <cons>(Stat,ListStarOfStat0) ListStarOfExp0 -> ListPlusOfExp0 ListStarOfExp0 -> <nil>() ListStarOfExp0 -> <conc>(ListStarOfExp0,ListStarOfExp0) ListPlusOfExp0 -> <conc>(ListStarOfExp0,ListPlusOfExp0) ListPlusOfExp0 -> <conc>(ListPlusOfExp0,ListStarOfExp0) ListPlusOfExp0 -> <conc>(ListPlusOfExp0,ListPlusOfExp0) ListPlusOfExp0 -> <cons>(Exp,ListStarOfExp0) ListStarOfStrChar0 -> <string> ListPlusOfStrChar0 -> <string> Program -> Program(ListStarOfStat0) Stat -> ProcCall(Id,ListStarOfExp0) Exp -> FunCall(Id,ListStarOfExp0) Stat -> For(Id,Exp,Exp,ListStarOfStat0) Stat -> While(Exp,ListStarOfStat0) Stat -> IfElse(Exp,ListStarOfStat0,ListStarOfStat0) Stat -> IfThen(Exp,ListStarOfStat0) Stat -> Block(ListStarOfStat0) Stat -> Assign(Id,Exp) Stat -> DeclarationTyped(Id,Type) Stat -> Declaration(Id) Type -> TypeName(Id) Exp -> Or(Exp,Exp) Exp -> And(Exp,Exp) Exp -> Neq(Exp,Exp) Exp -> Equ(Exp,Exp) Exp -> Geq(Exp,Exp) Exp -> Leq(Exp,Exp) Exp -> Gt(Exp,Exp) Exp -> Lt(Exp,Exp) Exp -> Sub(Exp,Exp) Exp -> Add(Exp,Exp) Exp -> Mod(Exp,Exp) Exp -> Div(Exp,Exp) Exp -> Mul(Exp,Exp) Exp -> String(String) Exp -> Int(Int) Exp -> Var(Id) Exp -> False() Exp -> True() StrChar -> <string> String -> <string> Int -> <string> Id -> <string>