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} stmt : {IDENT, OPERATOR, KWOPERATOR, LBRACE, LPAREN, EQUALS, QMARK, SEMIC, STAR, LITERAL, TYPE, ATOMWORD, BREAK, CONTINUE, DO, FOR, GOTO, IF, RETURN, SWITCH, SYNCHRONIZED, THROW, TRY, WHILE} plain_stmt : {IDENT, OPERATOR, KWOPERATOR, LPAREN, EQUALS, QMARK, STAR, LITERAL, TYPE, ATOMWORD} if_stmt : {IF} for_stmt : {FOR} switch_stmt : {SWITCH} try_block : {TRY} ident_opt : {IDENT} expr_opt : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE, ATOMWORD} qn_stmt_tail : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN, EQUALS, COLON, QMARK, SEMIC, STAR, LITERAL, ATOMWORD} non_name_expr : {OPERATOR, KWOPERATOR, LPAREN, EQUALS, QMARK, STAR, LITERAL, ATOMWORD} qn_lb_stmt_tail : {IDENT, OPERATOR, KWOPERATOR, LBRAC, RBRAC, LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE, ATOMWORD} name_expr_tail : {OPERATOR, KWOPERATOR, LPAREN, EQUALS, QMARK, STAR, LITERAL, ATOMWORD} stmt_list_opt : {IDENT, OPERATOR, KWOPERATOR, LBRACE, LPAREN, EQUALS, QMARK, SEMIC, STAR, LITERAL, TYPE, ATOMWORD, BREAK, CONTINUE, DO, FOR, GOTO, IF, RETURN, SWITCH, SYNCHRONIZED, THROW, TRY, WHILE} else_opt : {ELSE} for_init : {IDENT, TYPE} expr_list_opt : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE, ATOMWORD} qn_for_init_tail : {IDENT, OPERATOR, KWOPERATOR, LBRAC, LPAREN, EQUALS, QMARK, COMMA, STAR, LITERAL, ATOMWORD} qn_lb_for_init_tail : {IDENT, OPERATOR, KWOPERATOR, LBRAC, RBRAC, LPAREN, EQUALS, QMARK, DOT, STAR, LITERAL, TYPE, ATOMWORD} more_exprs : {COMMA} arm_list_opt : {CASE, DEFAULT} arm : {CASE, DEFAULT} catches : {CATCH, FINALLY} expr_list : {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} non_name_atom : {OPERATOR, KWOPERATOR, LPAREN, EQUALS, QMARK, STAR, LITERAL, ATOMWORD}