compilation_unit     : {SEMIC, MODIFIER, CLASSWORD, IMPORT, PACKAGE,
                        SYNCHRONIZED, EOF}
package_opt          : {PACKAGE}
imports              : {IMPORT}
type_definitions     : {SEMIC, MODIFIER, CLASSWORD, SYNCHRONIZED}
qualified_name       : {IDENT}
expr                 : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN,
                        EQUALS, QMARK, DOT, STAR, LITERAL, TYPE, ATOMWORD}
modifiers            : {MODIFIER, SYNCHRONIZED}
class_definition     : {CLASSWORD}
brackets_opt         : {LBRAC}
qualified_name_tail  : {DOT}
qualified_name_list  : {IDENT}
more_qualified_names : {COMMA}
extends_clause       : {EXTENDS}
implements_clause    : {IMPLEMENTS}
fields               : {IDENT, LBRACE, SEMIC, MODIFIER, TYPE, SYNCHRONIZED}
throws_clause        : {THROWS}
field                : {IDENT, LBRACE, SEMIC, MODIFIER, TYPE, SYNCHRONIZED}
field_tail           : {IDENT, LBRACE, TYPE}
qn_field_tail        : {IDENT, LBRAC, LPAREN}
type_field_tail      : {IDENT, LBRAC}
compound_stmt        : {LBRACE}
routine_tail         : {LPAREN}
name_field_tail      : {LBRAC, LPAREN, EQUALS, SEMIC, COMMA}
var_decs_tail        : {LBRAC, EQUALS, COMMA}
params_opt           : {IDENT, TYPE}
routine_body_opt     : {LBRACE, SEMIC}
param                : {IDENT, TYPE}
more_params          : {COMMA}
type                 : {IDENT, TYPE}
var_decs             : {IDENT}
eq_initializer_opt   : {EQUALS}
more_var_decs        : {COMMA}
initializer          : {IDENT, OPERATOR, KWOPERATOR, LBRACE, LBRAC,
                        LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
initializer_list_opt : {IDENT, OPERATOR, KWOPERATOR, LBRACE, LBRAC,
                        LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
more_initializers    : {COMMA}
balanced_stuff       : {IDENT, OPERATOR, KWOPERATOR, LBRACE, LBRAC,
                        RBRAC, LPAREN, RPAREN, EQUALS, COLON, QMARK,
                        SEMIC, COMMA, DOT, STAR, MODIFIER, LITERAL,
                        TYPE, ATOMWORD, CLASSWORD, BREAK, CASE, CATCH,
                        CONTINUE, DEFAULT, DO, ELSE, FINALLY, FOR, GOTO,
                        IF, RETURN, SWITCH, SYNCHRONIZED, THROW, TRY,
                        WHILE}
stuff                : {IDENT, OPERATOR, KWOPERATOR, LBRAC, RBRAC,
                        LPAREN, RPAREN, EQUALS, COLON, QMARK, SEMIC,
                        COMMA, DOT, STAR, MODIFIER, LITERAL, TYPE,
                        ATOMWORD, CLASSWORD, BREAK, CASE, CATCH,
                        CONTINUE, DEFAULT, DO, ELSE, FINALLY, FOR, GOTO,
                        IF, RETURN, SWITCH, SYNCHRONIZED, THROW, TRY,
                        WHILE}
expr_list            : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN,
                        EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
more_exprs           : {COMMA}
expr_list_opt        : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN,
                        EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
expr_opt             : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN,
                        EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
atom                 : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN,
                        EQUALS, QMARK, DOT, STAR, LITERAL, TYPE,
                        ATOMWORD}
