PROGRAM -> CLASSDECLLIST ; CLASSDECLLIST -> CLASSDECL CLASSDECLLIST | CLASSDECL ; CLASSDECL -> SUPER DECLLIST ; SUPER -> | _ ; DECLLIST -> DECL DECLLIST | _ ; DECL -> METHODTYPE PARAMS BLOCK | VARDECL ; METHODTYPE -> TYPE | ; PARAMS -> _ | NONEMPTYPARAMS ; NONEMPTYPARAMS -> NONEMPTYPARAMS TYPE | TYPE ; //AAAAARRRRGHHH This grammar is not LL(1) !!! it looks like it's not even LR(1)!!! BLOCK -> STATEMENTLIST ; VARDECL -> TYPE IDLIST ; IDLIST -> IDLIST | ; TYPE -> | | ; STATEMENTLIST -> STATEMENT STATEMENTLIST | _ ; STATEMENT -> EXPR BLOCK ELSEPART | EXPR BLOCK | EXPR | | BLOCK | LOCATION EXPR | LOCATION CALLTAIL | CALLTAIL | VARDECL ; ELSEPART -> BLOCK | _ ; CALLTAIL -> EXPRLIST ; EXPRLIST -> NONEMPTYEXPRLIST | _ ; NONEMPTYEXPRLIST -> EXPR NONEMPTYEXPRLIST | EXPR ; LOCATION -> LOCATIONHEAD LOCATIONTAIL ; LOCATIONHEAD -> CALLTAIL | | ; LOCATIONTAIL -> LOCATIONTAIL | _ ; MULTEXPR -> UNARYEXPR MULTDIVTAIL; ADDEXPR -> MULTEXPR ADDSUBTAIL; SHIFTEXPR -> ADDEXPR SHIFTTAIL; RELEXPR -> SHIFTEXPR RELTAIL ; EQEXPR -> RELEXPR EQUALTAIL ; ANDEXPR -> EQEXPR ANDORTAIL ; EXPR -> ANDEXPR ; ANDORTAIL -> ANDEXPR | ANDEXPR | _ ; EQUALTAIL -> EQEXPR | EQEXPR | _ ; RELTAIL -> RELEXPR | RELEXPR | RELEXPR | RELEXPR | _ ; SHIFTTAIL -> SHIFTEXPR | SHIFTEXPR | _ ; ADDSUBTAIL -> ADDEXPR | ADDEXPR | _ ; MULTDIVTAIL -> MULTEXPR | MULTEXPR | _ ; UNARYEXPR -> BASEEXPR | UNARYEXPR | UNARYEXPR ; BASEEXPR -> LITERAL | | EXPR | SIMPLEEXPR ; SIMPLEEXPR -> LOCATION ; LITERAL -> | BOOLLIT | | ; BOOLLIT -> | ;