Lines Matching refs:parser

361 c_lex_one_token (c_token *token, c_parser *parser)  in c_lex_one_token()  argument
399 c_token *tk = c_parser_peek_2nd_token (parser); in c_lex_one_token()
482 c_parser_peek_token (c_parser *parser) in c_parser_peek_token() argument
484 if (parser->tokens_avail == 0) in c_parser_peek_token()
487 parser->tokens_avail = 1; in c_parser_peek_token()
489 c_lex_one_token (&parser->tokens[0], parser); in c_parser_peek_token()
492 return &parser->tokens[0]; in c_parser_peek_token()
499 c_parser_next_token_is (c_parser *parser, enum cpp_ttype type) in c_parser_next_token_is() argument
501 return c_parser_peek_token (parser)->type == type; in c_parser_next_token_is()
508 c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type) in c_parser_next_token_is_not() argument
510 return !c_parser_next_token_is (parser, type); in c_parser_next_token_is_not()
517 c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword) in c_parser_next_token_is_keyword() argument
522 token = c_parser_peek_token (parser); in c_parser_next_token_is_keyword()
588 c_parser_next_token_starts_typename (c_parser *parser) in c_parser_next_token_starts_typename() argument
590 c_token *token = c_parser_peek_token (parser); in c_parser_next_token_starts_typename()
662 c_parser_next_token_starts_declspecs (c_parser *parser) in c_parser_next_token_starts_declspecs() argument
664 c_token *token = c_parser_peek_token (parser); in c_parser_next_token_starts_declspecs()
670 || c_parser_peek_2nd_token (parser)->type != CPP_DOT); in c_parser_next_token_starts_declspecs()
678 c_parser_peek_2nd_token (c_parser *parser) in c_parser_peek_2nd_token() argument
680 if (parser->tokens_avail >= 2) in c_parser_peek_2nd_token()
681 return &parser->tokens[1]; in c_parser_peek_2nd_token()
682 gcc_assert (parser->tokens_avail == 1); in c_parser_peek_2nd_token()
683 gcc_assert (parser->tokens[0].type != CPP_EOF); in c_parser_peek_2nd_token()
684 gcc_assert (parser->tokens[0].type != CPP_PRAGMA_EOL); in c_parser_peek_2nd_token()
686 parser->tokens_avail = 2; in c_parser_peek_2nd_token()
688 c_lex_one_token (&parser->tokens[1], parser); in c_parser_peek_2nd_token()
690 return &parser->tokens[1]; in c_parser_peek_2nd_token()
696 c_parser_consume_token (c_parser *parser) in c_parser_consume_token() argument
698 gcc_assert (parser->tokens_avail >= 1); in c_parser_consume_token()
699 gcc_assert (parser->tokens[0].type != CPP_EOF); in c_parser_consume_token()
700 gcc_assert (!parser->in_pragma || parser->tokens[0].type != CPP_PRAGMA_EOL); in c_parser_consume_token()
701 gcc_assert (parser->error || parser->tokens[0].type != CPP_PRAGMA); in c_parser_consume_token()
702 if (parser->tokens_avail == 2) in c_parser_consume_token()
703 parser->tokens[0] = parser->tokens[1]; in c_parser_consume_token()
704 parser->tokens_avail--; in c_parser_consume_token()
711 c_parser_consume_pragma (c_parser *parser) in c_parser_consume_pragma() argument
713 gcc_assert (!parser->in_pragma); in c_parser_consume_pragma()
714 gcc_assert (parser->tokens_avail >= 1); in c_parser_consume_pragma()
715 gcc_assert (parser->tokens[0].type == CPP_PRAGMA); in c_parser_consume_pragma()
716 if (parser->tokens_avail == 2) in c_parser_consume_pragma()
717 parser->tokens[0] = parser->tokens[1]; in c_parser_consume_pragma()
718 parser->tokens_avail--; in c_parser_consume_pragma()
719 parser->in_pragma = true; in c_parser_consume_pragma()
747 c_parser_error (c_parser *parser, const char *gmsgid) in c_parser_error() argument
749 c_token *token = c_parser_peek_token (parser); in c_parser_error()
750 if (parser->error) in c_parser_error()
752 parser->error = true; in c_parser_error()
772 c_parser_require (c_parser *parser, in c_parser_require() argument
776 if (c_parser_next_token_is (parser, type)) in c_parser_require()
778 c_parser_consume_token (parser); in c_parser_require()
783 c_parser_error (parser, msgid); in c_parser_require()
792 c_parser_require_keyword (c_parser *parser, in c_parser_require_keyword() argument
796 if (c_parser_next_token_is_keyword (parser, keyword)) in c_parser_require_keyword()
798 c_parser_consume_token (parser); in c_parser_require_keyword()
803 c_parser_error (parser, msgid); in c_parser_require_keyword()
815 c_parser_skip_until_found (c_parser *parser, in c_parser_skip_until_found() argument
821 if (c_parser_require (parser, type, msgid)) in c_parser_skip_until_found()
828 c_token *token = c_parser_peek_token (parser); in c_parser_skip_until_found()
832 c_parser_consume_token (parser); in c_parser_skip_until_found()
839 if (token->type == CPP_PRAGMA_EOL && parser->in_pragma) in c_parser_skip_until_found()
853 c_parser_consume_token (parser); in c_parser_skip_until_found()
855 parser->error = false; in c_parser_skip_until_found()
862 c_parser_skip_to_end_of_parameter (c_parser *parser) in c_parser_skip_to_end_of_parameter() argument
868 c_token *token = c_parser_peek_token (parser); in c_parser_skip_to_end_of_parameter()
875 if (token->type == CPP_PRAGMA_EOL && parser->in_pragma) in c_parser_skip_to_end_of_parameter()
889 c_parser_consume_token (parser); in c_parser_skip_to_end_of_parameter()
891 parser->error = false; in c_parser_skip_to_end_of_parameter()
898 c_parser_skip_to_pragma_eol (c_parser *parser) in c_parser_skip_to_pragma_eol() argument
900 gcc_assert (parser->in_pragma); in c_parser_skip_to_pragma_eol()
901 parser->in_pragma = false; in c_parser_skip_to_pragma_eol()
903 if (!c_parser_require (parser, CPP_PRAGMA_EOL, "expected end of line")) in c_parser_skip_to_pragma_eol()
906 c_token *token = c_parser_peek_token (parser); in c_parser_skip_to_pragma_eol()
911 c_parser_consume_token (parser); in c_parser_skip_to_pragma_eol()
914 c_parser_consume_token (parser); in c_parser_skip_to_pragma_eol()
917 parser->error = false; in c_parser_skip_to_pragma_eol()
924 c_parser_skip_to_end_of_block_or_statement (c_parser *parser) in c_parser_skip_to_end_of_block_or_statement() argument
927 bool save_error = parser->error; in c_parser_skip_to_end_of_block_or_statement()
934 token = c_parser_peek_token (parser); in c_parser_skip_to_end_of_block_or_statement()
942 if (parser->in_pragma) in c_parser_skip_to_end_of_block_or_statement()
952 c_parser_consume_token (parser); in c_parser_skip_to_end_of_block_or_statement()
962 c_parser_consume_token (parser); in c_parser_skip_to_end_of_block_or_statement()
980 c_parser_consume_pragma (parser); in c_parser_skip_to_end_of_block_or_statement()
981 c_parser_skip_to_pragma_eol (parser); in c_parser_skip_to_end_of_block_or_statement()
982 parser->error = save_error; in c_parser_skip_to_end_of_block_or_statement()
989 c_parser_consume_token (parser); in c_parser_skip_to_end_of_block_or_statement()
993 parser->error = false; in c_parser_skip_to_end_of_block_or_statement()
1157 c_parser_translation_unit (c_parser *parser) in c_parser_translation_unit() argument
1159 if (c_parser_next_token_is (parser, CPP_EOF)) in c_parser_translation_unit()
1170 c_parser_external_declaration (parser); in c_parser_translation_unit()
1173 while (c_parser_next_token_is_not (parser, CPP_EOF)); in c_parser_translation_unit()
1202 c_parser_external_declaration (c_parser *parser) in c_parser_external_declaration() argument
1205 switch (c_parser_peek_token (parser)->type) in c_parser_external_declaration()
1208 switch (c_parser_peek_token (parser)->keyword) in c_parser_external_declaration()
1212 c_parser_consume_token (parser); in c_parser_external_declaration()
1213 c_parser_external_declaration (parser); in c_parser_external_declaration()
1217 c_parser_asm_definition (parser); in c_parser_external_declaration()
1223 c_parser_objc_class_definition (parser, NULL_TREE); in c_parser_external_declaration()
1227 c_parser_objc_class_declaration (parser); in c_parser_external_declaration()
1231 c_parser_objc_alias_declaration (parser); in c_parser_external_declaration()
1236 c_parser_objc_protocol_definition (parser, NULL_TREE); in c_parser_external_declaration()
1241 c_parser_objc_property_declaration (parser); in c_parser_external_declaration()
1246 c_parser_consume_token (parser); in c_parser_external_declaration()
1256 c_parser_consume_token (parser); in c_parser_external_declaration()
1259 c_parser_pragma (parser, pragma_external); in c_parser_external_declaration()
1265 c_parser_objc_method_definition (parser); in c_parser_external_declaration()
1276 c_parser_declaration_or_fndef (parser, true, true, false, true, NULL); in c_parser_external_declaration()
1340 c_parser_declaration_or_fndef (c_parser *parser, bool fndef_ok, bool empty_ok, in c_parser_declaration_or_fndef() argument
1350 c_parser_declspecs (parser, specs, true, true, start_attr_ok); in c_parser_declaration_or_fndef()
1351 if (parser->error) in c_parser_declaration_or_fndef()
1353 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_declaration_or_fndef()
1358 c_parser_error (parser, "expected declaration specifiers"); in c_parser_declaration_or_fndef()
1359 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_declaration_or_fndef()
1363 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_declaration_or_fndef()
1372 c_parser_consume_token (parser); in c_parser_declaration_or_fndef()
1376 else if (c_parser_next_token_is_keyword (parser, RID_AT_INTERFACE) in c_parser_declaration_or_fndef()
1377 || c_parser_next_token_is_keyword (parser, RID_AT_IMPLEMENTATION)) in c_parser_declaration_or_fndef()
1382 c_parser_error (parser, "no type or storage class may be specified here"); in c_parser_declaration_or_fndef()
1383 c_parser_objc_class_definition (parser, specs->attrs); in c_parser_declaration_or_fndef()
1388 else if (c_parser_next_token_is_keyword (parser, RID_AT_PROTOCOL)) in c_parser_declaration_or_fndef()
1393 c_parser_error (parser, "no type or storage class may be specified here"); in c_parser_declaration_or_fndef()
1394 c_parser_objc_protocol_definition (parser, specs->attrs); in c_parser_declaration_or_fndef()
1411 declarator = c_parser_declarator (parser, specs->type_seen_p, in c_parser_declaration_or_fndef()
1415 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_declaration_or_fndef()
1418 if (c_parser_next_token_is (parser, CPP_EQ) in c_parser_declaration_or_fndef()
1419 || c_parser_next_token_is (parser, CPP_COMMA) in c_parser_declaration_or_fndef()
1420 || c_parser_next_token_is (parser, CPP_SEMICOLON) in c_parser_declaration_or_fndef()
1421 || c_parser_next_token_is_keyword (parser, RID_ASM) in c_parser_declaration_or_fndef()
1423 || c_parser_next_token_is_keyword (parser, RID_IN) in c_parser_declaration_or_fndef()
1424 || c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_declaration_or_fndef()
1436 if (c_parser_next_token_is_keyword (parser, RID_ASM)) in c_parser_declaration_or_fndef()
1437 asm_name = c_parser_simple_asm_expr (parser); in c_parser_declaration_or_fndef()
1438 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_declaration_or_fndef()
1439 postfix_attrs = c_parser_attributes (parser); in c_parser_declaration_or_fndef()
1441 if (c_parser_next_token_is_keyword (parser, RID_IN)) in c_parser_declaration_or_fndef()
1452 if (c_parser_next_token_is (parser, CPP_EQ)) in c_parser_declaration_or_fndef()
1456 c_parser_consume_token (parser); in c_parser_declaration_or_fndef()
1464 init = c_parser_initializer (parser); in c_parser_declaration_or_fndef()
1480 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_declaration_or_fndef()
1482 c_parser_consume_token (parser); in c_parser_declaration_or_fndef()
1483 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_declaration_or_fndef()
1484 all_prefix_attrs = chainon (c_parser_attributes (parser), in c_parser_declaration_or_fndef()
1490 else if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_declaration_or_fndef()
1492 c_parser_consume_token (parser); in c_parser_declaration_or_fndef()
1497 c_parser_error (parser, "expected %<,%> or %<;%>"); in c_parser_declaration_or_fndef()
1498 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_declaration_or_fndef()
1504 c_parser_error (parser, "expected %<=%>, %<,%>, %<;%>, " in c_parser_declaration_or_fndef()
1506 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_declaration_or_fndef()
1530 c_parser_error (parser, "expected %<=%>, %<,%>, %<;%>, %<asm%> " in c_parser_declaration_or_fndef()
1548 while (c_parser_next_token_is_not (parser, CPP_EOF) in c_parser_declaration_or_fndef()
1549 && c_parser_next_token_is_not (parser, CPP_OPEN_BRACE)) in c_parser_declaration_or_fndef()
1551 c_parser_declaration_or_fndef (parser, false, false, true, false, NULL); in c_parser_declaration_or_fndef()
1553 = c_parser_peek_token (parser)->location; in c_parser_declaration_or_fndef()
1555 fnbody = c_parser_compound_statement (parser); in c_parser_declaration_or_fndef()
1574 finish_parse_foreach_header (c_parser *parser, tree foreach_elem_selector) in finish_parse_foreach_header() argument
1580 c_parser_consume_token (parser); in finish_parse_foreach_header()
1581 res = build_tree_list (foreach_elem_selector, c_parser_initializer (parser).value); in finish_parse_foreach_header()
1598 c_parser_asm_definition (c_parser *parser) in c_parser_asm_definition() argument
1600 tree asm_str = c_parser_simple_asm_expr (parser); in c_parser_asm_definition()
1603 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_asm_definition()
1685 c_parser_declspecs (c_parser *parser, struct c_declspecs *specs, in c_parser_declspecs() argument
1690 while (c_parser_next_token_is (parser, CPP_NAME) in c_parser_declspecs()
1691 || c_parser_next_token_is (parser, CPP_KEYWORD) in c_parser_declspecs()
1692 || (c_dialect_objc () && c_parser_next_token_is (parser, CPP_LESS))) in c_parser_declspecs()
1696 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_declspecs()
1698 tree value = c_parser_peek_token (parser)->value; in c_parser_declspecs()
1699 c_id_kind kind = c_parser_peek_token (parser)->id_kind; in c_parser_declspecs()
1706 c_parser_consume_token (parser); in c_parser_declspecs()
1711 || c_parser_next_token_is_not (parser, CPP_LESS))) in c_parser_declspecs()
1723 if (c_parser_next_token_is (parser, CPP_LESS)) in c_parser_declspecs()
1724 proto = c_parser_objc_protocol_refs (parser); in c_parser_declspecs()
1730 if (c_parser_next_token_is (parser, CPP_LESS)) in c_parser_declspecs()
1738 proto = c_parser_objc_protocol_refs (parser); in c_parser_declspecs()
1744 gcc_assert (c_parser_next_token_is (parser, CPP_KEYWORD)); in c_parser_declspecs()
1745 switch (c_parser_peek_token (parser)->keyword) in c_parser_declspecs()
1760 declspecs_add_scspec (specs, c_parser_peek_token (parser)->value); in c_parser_declspecs()
1761 c_parser_consume_token (parser); in c_parser_declspecs()
1783 t.spec = c_parser_peek_token (parser)->value; in c_parser_declspecs()
1785 c_parser_consume_token (parser); in c_parser_declspecs()
1792 t = c_parser_enum_specifier (parser); in c_parser_declspecs()
1801 t = c_parser_struct_or_union_specifier (parser); in c_parser_declspecs()
1812 t = c_parser_typeof_specifier (parser); in c_parser_declspecs()
1819 declspecs_add_qual (specs, c_parser_peek_token (parser)->value); in c_parser_declspecs()
1820 c_parser_consume_token (parser); in c_parser_declspecs()
1825 attrs = c_parser_attributes (parser); in c_parser_declspecs()
1858 c_parser_enum_specifier (c_parser *parser) in c_parser_enum_specifier() argument
1863 gcc_assert (c_parser_next_token_is_keyword (parser, RID_ENUM)); in c_parser_enum_specifier()
1864 c_parser_consume_token (parser); in c_parser_enum_specifier()
1865 attrs = c_parser_attributes (parser); in c_parser_enum_specifier()
1866 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_enum_specifier()
1868 ident = c_parser_peek_token (parser)->value; in c_parser_enum_specifier()
1869 c_parser_consume_token (parser); in c_parser_enum_specifier()
1871 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_enum_specifier()
1879 c_parser_consume_token (parser); in c_parser_enum_specifier()
1886 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_enum_specifier()
1888 c_parser_error (parser, "expected identifier"); in c_parser_enum_specifier()
1889 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL); in c_parser_enum_specifier()
1893 enum_id = c_parser_peek_token (parser)->value; in c_parser_enum_specifier()
1894 c_parser_consume_token (parser); in c_parser_enum_specifier()
1895 if (c_parser_next_token_is (parser, CPP_EQ)) in c_parser_enum_specifier()
1897 c_parser_consume_token (parser); in c_parser_enum_specifier()
1898 enum_value = c_parser_expr_no_commas (parser, NULL).value; in c_parser_enum_specifier()
1906 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_enum_specifier()
1909 c_parser_consume_token (parser); in c_parser_enum_specifier()
1911 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_enum_specifier()
1915 c_parser_consume_token (parser); in c_parser_enum_specifier()
1920 c_parser_error (parser, "expected %<,%> or %<}%>"); in c_parser_enum_specifier()
1921 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL); in c_parser_enum_specifier()
1926 postfix_attrs = c_parser_attributes (parser); in c_parser_enum_specifier()
1934 c_parser_error (parser, "expected %<{%>"); in c_parser_enum_specifier()
1987 c_parser_struct_or_union_specifier (c_parser *parser) in c_parser_struct_or_union_specifier() argument
1993 switch (c_parser_peek_token (parser)->keyword) in c_parser_struct_or_union_specifier()
2004 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2005 attrs = c_parser_attributes (parser); in c_parser_struct_or_union_specifier()
2006 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_struct_or_union_specifier()
2008 ident = c_parser_peek_token (parser)->value; in c_parser_struct_or_union_specifier()
2009 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2011 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_struct_or_union_specifier()
2028 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2031 if (c_parser_next_token_is_keyword (parser, RID_AT_DEFS)) in c_parser_struct_or_union_specifier()
2035 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2036 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_struct_or_union_specifier()
2038 if (c_parser_next_token_is (parser, CPP_NAME) in c_parser_struct_or_union_specifier()
2039 && c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME) in c_parser_struct_or_union_specifier()
2041 name = c_parser_peek_token (parser)->value; in c_parser_struct_or_union_specifier()
2042 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2046 c_parser_error (parser, "expected class name"); in c_parser_struct_or_union_specifier()
2047 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_struct_or_union_specifier()
2050 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_struct_or_union_specifier()
2062 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_struct_or_union_specifier()
2066 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2070 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_struct_or_union_specifier()
2072 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2076 if (c_parser_next_token_is (parser, CPP_PRAGMA)) in c_parser_struct_or_union_specifier()
2078 c_parser_pragma (parser, pragma_external); in c_parser_struct_or_union_specifier()
2083 decls = c_parser_struct_declaration (parser); in c_parser_struct_or_union_specifier()
2088 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_struct_or_union_specifier()
2089 c_parser_consume_token (parser); in c_parser_struct_or_union_specifier()
2092 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_struct_or_union_specifier()
2096 c_parser_error (parser, "expected %<;%>"); in c_parser_struct_or_union_specifier()
2097 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL); in c_parser_struct_or_union_specifier()
2102 postfix_attrs = c_parser_attributes (parser); in c_parser_struct_or_union_specifier()
2110 c_parser_error (parser, "expected %<{%>"); in c_parser_struct_or_union_specifier()
2151 c_parser_struct_declaration (c_parser *parser) in c_parser_struct_declaration() argument
2157 if (c_parser_next_token_is_keyword (parser, RID_EXTENSION)) in c_parser_struct_declaration()
2162 c_parser_consume_token (parser); in c_parser_struct_declaration()
2163 decl = c_parser_struct_declaration (parser); in c_parser_struct_declaration()
2168 c_parser_declspecs (parser, specs, false, true, true); in c_parser_struct_declaration()
2169 if (parser->error) in c_parser_struct_declaration()
2173 c_parser_error (parser, "expected specifier-qualifier-list"); in c_parser_struct_declaration()
2177 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_struct_declaration()
2206 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_struct_declaration()
2209 declarator = c_parser_declarator (parser, specs->type_seen_p, in c_parser_struct_declaration()
2213 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_struct_declaration()
2216 if (c_parser_next_token_is (parser, CPP_COLON) in c_parser_struct_declaration()
2217 || c_parser_next_token_is (parser, CPP_COMMA) in c_parser_struct_declaration()
2218 || c_parser_next_token_is (parser, CPP_SEMICOLON) in c_parser_struct_declaration()
2219 || c_parser_next_token_is (parser, CPP_CLOSE_BRACE) in c_parser_struct_declaration()
2220 || c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_struct_declaration()
2225 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_struct_declaration()
2227 c_parser_consume_token (parser); in c_parser_struct_declaration()
2228 width = c_parser_expr_no_commas (parser, NULL).value; in c_parser_struct_declaration()
2230 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_struct_declaration()
2231 postfix_attrs = c_parser_attributes (parser); in c_parser_struct_declaration()
2237 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_struct_declaration()
2238 all_prefix_attrs = chainon (c_parser_attributes (parser), in c_parser_struct_declaration()
2242 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_struct_declaration()
2243 c_parser_consume_token (parser); in c_parser_struct_declaration()
2244 else if (c_parser_next_token_is (parser, CPP_SEMICOLON) in c_parser_struct_declaration()
2245 || c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_struct_declaration()
2252 c_parser_error (parser, "expected %<,%>, %<;%> or %<}%>"); in c_parser_struct_declaration()
2258 c_parser_error (parser, in c_parser_struct_declaration()
2275 c_parser_typeof_specifier (c_parser *parser) in c_parser_typeof_specifier() argument
2280 gcc_assert (c_parser_next_token_is_keyword (parser, RID_TYPEOF)); in c_parser_typeof_specifier()
2281 c_parser_consume_token (parser); in c_parser_typeof_specifier()
2284 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_typeof_specifier()
2290 if (c_parser_next_token_starts_typename (parser)) in c_parser_typeof_specifier()
2292 struct c_type_name *type = c_parser_type_name (parser); in c_parser_typeof_specifier()
2304 struct c_expr expr = c_parser_expression (parser); in c_parser_typeof_specifier()
2331 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_typeof_specifier()
2425 c_parser_declarator (c_parser *parser, bool type_seen_p, c_dtr_syn kind, in c_parser_declarator() argument
2429 if (c_parser_next_token_is (parser, CPP_MULT)) in c_parser_declarator()
2433 c_parser_consume_token (parser); in c_parser_declarator()
2434 c_parser_declspecs (parser, quals_attrs, false, false, true); in c_parser_declarator()
2435 inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); in c_parser_declarator()
2442 else if (flag_blocks && c_parser_next_token_is (parser, CPP_XOR)) { in c_parser_declarator()
2445 c_parser_consume_token (parser); in c_parser_declarator()
2446 c_parser_declspecs (parser, quals_attrs, false, false, true); in c_parser_declarator()
2447 inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); in c_parser_declarator()
2457 return c_parser_direct_declarator (parser, type_seen_p, kind, seen_id); in c_parser_declarator()
2464 c_parser_direct_declarator (c_parser *parser, bool type_seen_p, c_dtr_syn kind, in c_parser_direct_declarator() argument
2503 && c_parser_next_token_is (parser, CPP_NAME) in c_parser_direct_declarator()
2506 && (c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME in c_parser_direct_declarator()
2507 || c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME)) in c_parser_direct_declarator()
2509 || c_parser_peek_token (parser)->id_kind == C_ID_ID)) in c_parser_direct_declarator()
2512 = build_id_declarator (c_parser_peek_token (parser)->value); in c_parser_direct_declarator()
2514 inner->id_loc = c_parser_peek_token (parser)->location; in c_parser_direct_declarator()
2515 c_parser_consume_token (parser); in c_parser_direct_declarator()
2516 return c_parser_direct_declarator_inner (parser, *seen_id, inner); in c_parser_direct_declarator()
2520 && c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) in c_parser_direct_declarator()
2523 return c_parser_direct_declarator_inner (parser, *seen_id, inner); in c_parser_direct_declarator()
2529 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_direct_declarator()
2533 c_parser_consume_token (parser); in c_parser_direct_declarator()
2534 attrs = c_parser_attributes (parser); in c_parser_direct_declarator()
2536 && (c_parser_next_token_starts_declspecs (parser) in c_parser_direct_declarator()
2537 || c_parser_next_token_is (parser, CPP_CLOSE_PAREN))) in c_parser_direct_declarator()
2540 = c_parser_parms_declarator (parser, kind == C_DTR_NORMAL, in c_parser_direct_declarator()
2549 return c_parser_direct_declarator_inner (parser, *seen_id, in c_parser_direct_declarator()
2554 inner = c_parser_declarator (parser, type_seen_p, kind, seen_id); in c_parser_direct_declarator()
2557 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_direct_declarator()
2559 c_parser_consume_token (parser); in c_parser_direct_declarator()
2563 return c_parser_direct_declarator_inner (parser, *seen_id, inner); in c_parser_direct_declarator()
2567 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_direct_declarator()
2576 c_parser_error (parser, "expected identifier or %<(%>"); in c_parser_direct_declarator()
2590 c_parser_direct_declarator_inner (c_parser *parser, bool id_present, in c_parser_direct_declarator_inner() argument
2594 if (c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) in c_parser_direct_declarator_inner()
2601 c_parser_consume_token (parser); in c_parser_direct_declarator_inner()
2602 c_parser_declspecs (parser, quals_attrs, false, false, true); in c_parser_direct_declarator_inner()
2603 static_seen = c_parser_next_token_is_keyword (parser, RID_STATIC); in c_parser_direct_declarator_inner()
2605 c_parser_consume_token (parser); in c_parser_direct_declarator_inner()
2607 c_parser_declspecs (parser, quals_attrs, false, false, true); in c_parser_direct_declarator_inner()
2616 dimen = c_parser_expr_no_commas (parser, NULL).value; in c_parser_direct_declarator_inner()
2620 if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) in c_parser_direct_declarator_inner()
2625 else if (c_parser_next_token_is (parser, CPP_MULT)) in c_parser_direct_declarator_inner()
2627 if (c_parser_peek_2nd_token (parser)->type == CPP_CLOSE_SQUARE) in c_parser_direct_declarator_inner()
2631 c_parser_consume_token (parser); in c_parser_direct_declarator_inner()
2636 dimen = c_parser_expr_no_commas (parser, NULL).value; in c_parser_direct_declarator_inner()
2642 dimen = c_parser_expr_no_commas (parser, NULL).value; in c_parser_direct_declarator_inner()
2645 if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) in c_parser_direct_declarator_inner()
2646 c_parser_consume_token (parser); in c_parser_direct_declarator_inner()
2649 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_direct_declarator_inner()
2658 return c_parser_direct_declarator_inner (parser, id_present, inner); in c_parser_direct_declarator_inner()
2660 else if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_direct_declarator_inner()
2664 c_parser_consume_token (parser); in c_parser_direct_declarator_inner()
2665 attrs = c_parser_attributes (parser); in c_parser_direct_declarator_inner()
2666 args = c_parser_parms_declarator (parser, id_present, attrs); in c_parser_direct_declarator_inner()
2672 return c_parser_direct_declarator_inner (parser, id_present, inner); in c_parser_direct_declarator_inner()
2684 c_parser_parms_declarator (c_parser *parser, bool id_list_ok, tree attrs) in c_parser_parms_declarator() argument
2692 && c_parser_next_token_is (parser, CPP_NAME) in c_parser_parms_declarator()
2693 && c_parser_peek_token (parser)->id_kind == C_ID_ID) in c_parser_parms_declarator()
2696 while (c_parser_next_token_is (parser, CPP_NAME) in c_parser_parms_declarator()
2697 && c_parser_peek_token (parser)->id_kind == C_ID_ID) in c_parser_parms_declarator()
2700 c_parser_peek_token (parser)->value); in c_parser_parms_declarator()
2702 c_parser_consume_token (parser); in c_parser_parms_declarator()
2703 if (c_parser_next_token_is_not (parser, CPP_COMMA)) in c_parser_parms_declarator()
2705 c_parser_consume_token (parser); in c_parser_parms_declarator()
2706 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_declarator()
2708 c_parser_error (parser, "expected identifier"); in c_parser_parms_declarator()
2712 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_declarator()
2721 c_parser_consume_token (parser); in c_parser_parms_declarator()
2727 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_parms_declarator()
2735 struct c_arg_info *ret = c_parser_parms_list_declarator (parser, attrs); in c_parser_parms_declarator()
2746 c_parser_parms_list_declarator (c_parser *parser, tree attrs) in c_parser_parms_list_declarator() argument
2755 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_list_declarator()
2764 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2767 if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_parms_list_declarator()
2778 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2779 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_list_declarator()
2781 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2786 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_parms_list_declarator()
2797 struct c_parm *parm = c_parser_parameter_declaration (parser, attrs); in c_parser_parms_list_declarator()
2804 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_parms_list_declarator()
2807 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2809 new_attrs = c_parser_attributes (parser); in c_parser_parms_list_declarator()
2810 return c_parser_parms_list_declarator (parser, new_attrs); in c_parser_parms_list_declarator()
2812 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_list_declarator()
2814 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2830 if (!c_parser_require (parser, CPP_COMMA, in c_parser_parms_list_declarator()
2833 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_parms_list_declarator()
2836 if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_parms_list_declarator()
2838 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2839 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_parms_list_declarator()
2841 c_parser_consume_token (parser); in c_parser_parms_list_declarator()
2859 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_parms_list_declarator()
2871 c_parser_parameter_declaration (c_parser *parser, tree attrs) in c_parser_parameter_declaration() argument
2878 if (!c_parser_next_token_starts_declspecs (parser)) in c_parser_parameter_declaration()
2882 c_parser_error (parser, in c_parser_parameter_declaration()
2884 c_parser_skip_to_end_of_parameter (parser); in c_parser_parameter_declaration()
2893 c_parser_declspecs (parser, specs, true, true, true); in c_parser_parameter_declaration()
2898 declarator = c_parser_declarator (parser, specs->type_seen_p, in c_parser_parameter_declaration()
2902 c_parser_skip_until_found (parser, CPP_COMMA, NULL); in c_parser_parameter_declaration()
2905 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_parameter_declaration()
2906 postfix_attrs = c_parser_attributes (parser); in c_parser_parameter_declaration()
2923 c_parser_asm_string_literal (c_parser *parser) in c_parser_asm_string_literal() argument
2926 if (c_parser_next_token_is (parser, CPP_STRING)) in c_parser_asm_string_literal()
2928 str = c_parser_peek_token (parser)->value; in c_parser_asm_string_literal()
2929 c_parser_consume_token (parser); in c_parser_asm_string_literal()
2931 else if (c_parser_next_token_is (parser, CPP_WSTRING)) in c_parser_asm_string_literal()
2935 c_parser_consume_token (parser); in c_parser_asm_string_literal()
2939 c_parser_error (parser, "expected string literal"); in c_parser_asm_string_literal()
2954 c_parser_simple_asm_expr (c_parser *parser) in c_parser_simple_asm_expr() argument
2957 gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); in c_parser_simple_asm_expr()
2961 c_parser_consume_token (parser); in c_parser_simple_asm_expr()
2962 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_simple_asm_expr()
2967 str = c_parser_asm_string_literal (parser); in c_parser_simple_asm_expr()
2969 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) in c_parser_simple_asm_expr()
2971 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_simple_asm_expr()
3005 c_parser_attributes (c_parser *parser) in c_parser_attributes() argument
3008 while (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_attributes()
3013 c_parser_consume_token (parser); in c_parser_attributes()
3014 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_attributes()
3019 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_attributes()
3022 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_attributes()
3026 while (c_parser_next_token_is (parser, CPP_COMMA) in c_parser_attributes()
3027 || c_parser_next_token_is (parser, CPP_NAME) in c_parser_attributes()
3028 || c_parser_next_token_is (parser, CPP_KEYWORD)) in c_parser_attributes()
3031 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_attributes()
3033 c_parser_consume_token (parser); in c_parser_attributes()
3036 if (c_parser_next_token_is (parser, CPP_KEYWORD)) in c_parser_attributes()
3041 switch (c_parser_peek_token (parser)->keyword) in c_parser_attributes()
3076 attr_name = c_parser_peek_token (parser)->value; in c_parser_attributes()
3077 c_parser_consume_token (parser); in c_parser_attributes()
3078 if (c_parser_next_token_is_not (parser, CPP_OPEN_PAREN)) in c_parser_attributes()
3084 c_parser_consume_token (parser); in c_parser_attributes()
3089 if (c_parser_next_token_is (parser, CPP_NAME) in c_parser_attributes()
3090 && c_parser_peek_token (parser)->id_kind == C_ID_ID in c_parser_attributes()
3091 && ((c_parser_peek_2nd_token (parser)->type == CPP_COMMA) in c_parser_attributes()
3092 || (c_parser_peek_2nd_token (parser)->type in c_parser_attributes()
3095 tree arg1 = c_parser_peek_token (parser)->value; in c_parser_attributes()
3096 c_parser_consume_token (parser); in c_parser_attributes()
3097 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_attributes()
3101 c_parser_consume_token (parser); in c_parser_attributes()
3103 c_parser_expr_list (parser, false)); in c_parser_attributes()
3108 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_attributes()
3111 attr_args = c_parser_expr_list (parser, false); in c_parser_attributes()
3114 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_attributes()
3115 c_parser_consume_token (parser); in c_parser_attributes()
3119 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_attributes()
3125 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_attributes()
3126 c_parser_consume_token (parser); in c_parser_attributes()
3130 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_attributes()
3134 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_attributes()
3135 c_parser_consume_token (parser); in c_parser_attributes()
3139 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_attributes()
3155 c_parser_type_name (c_parser *parser) in c_parser_type_name() argument
3161 c_parser_declspecs (parser, specs, false, true, true); in c_parser_type_name()
3164 c_parser_error (parser, "expected specifier-qualifier-list"); in c_parser_type_name()
3169 declarator = c_parser_declarator (parser, specs->type_seen_p, in c_parser_type_name()
3223 c_parser_initializer (c_parser *parser) in c_parser_initializer() argument
3225 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_initializer()
3226 return c_parser_braced_init (parser, NULL_TREE, false); in c_parser_initializer()
3230 ret = c_parser_expr_no_commas (parser, NULL); in c_parser_initializer()
3245 c_parser_braced_init (c_parser *parser, tree type, bool nested_p) in c_parser_braced_init() argument
3247 gcc_assert (c_parser_next_token_is (parser, CPP_OPEN_BRACE)); in c_parser_braced_init()
3248 c_parser_consume_token (parser); in c_parser_braced_init()
3253 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_braced_init()
3264 c_parser_initelt (parser); in c_parser_braced_init()
3265 if (parser->error) in c_parser_braced_init()
3267 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_braced_init()
3268 c_parser_consume_token (parser); in c_parser_braced_init()
3271 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_braced_init()
3275 if (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE)) in c_parser_braced_init()
3280 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, "expected %<}%>"); in c_parser_braced_init()
3283 c_parser_consume_token (parser); in c_parser_braced_init()
3290 c_parser_initelt (c_parser *parser) in c_parser_initelt() argument
3295 if (c_parser_next_token_is (parser, CPP_NAME) in c_parser_initelt()
3296 && c_parser_peek_2nd_token (parser)->type == CPP_COLON) in c_parser_initelt()
3299 set_init_label (c_parser_peek_token (parser)->value); in c_parser_initelt()
3302 c_parser_consume_token (parser); in c_parser_initelt()
3303 c_parser_consume_token (parser); in c_parser_initelt()
3310 while (c_parser_next_token_is (parser, CPP_OPEN_SQUARE) in c_parser_initelt()
3311 || c_parser_next_token_is (parser, CPP_DOT)) in c_parser_initelt()
3316 if (c_parser_next_token_is (parser, CPP_DOT)) in c_parser_initelt()
3319 c_parser_consume_token (parser); in c_parser_initelt()
3320 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_initelt()
3322 set_init_label (c_parser_peek_token (parser)->value); in c_parser_initelt()
3323 c_parser_consume_token (parser); in c_parser_initelt()
3330 c_parser_error (parser, "expected identifier"); in c_parser_initelt()
3331 c_parser_skip_until_found (parser, CPP_COMMA, NULL); in c_parser_initelt()
3366 c_parser_consume_token (parser); in c_parser_initelt()
3367 if (c_parser_peek_token (parser)->type == CPP_NAME in c_parser_initelt()
3368 && ((c_parser_peek_token (parser)->id_kind in c_parser_initelt()
3370 || (c_parser_peek_token (parser)->id_kind in c_parser_initelt()
3374 tree id = c_parser_peek_token (parser)->value; in c_parser_initelt()
3375 c_parser_consume_token (parser); in c_parser_initelt()
3379 first = c_parser_expr_no_commas (parser, NULL).value; in c_parser_initelt()
3380 if (c_parser_next_token_is (parser, CPP_ELLIPSIS) in c_parser_initelt()
3381 || c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) in c_parser_initelt()
3387 while (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_initelt()
3390 c_parser_consume_token (parser); in c_parser_initelt()
3391 next = c_parser_expr_no_commas (parser, NULL); in c_parser_initelt()
3397 args = c_parser_objc_message_args (parser); in c_parser_initelt()
3398 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_initelt()
3406 c_parser_initval (parser, &mexpr); in c_parser_initelt()
3409 c_parser_consume_token (parser); in c_parser_initelt()
3410 first = c_parser_expr_no_commas (parser, NULL).value; in c_parser_initelt()
3412 if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_initelt()
3414 c_parser_consume_token (parser); in c_parser_initelt()
3415 second = c_parser_expr_no_commas (parser, NULL).value; in c_parser_initelt()
3419 if (c_parser_next_token_is (parser, CPP_CLOSE_SQUARE)) in c_parser_initelt()
3421 c_parser_consume_token (parser); in c_parser_initelt()
3428 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_initelt()
3434 if (c_parser_next_token_is (parser, CPP_EQ)) in c_parser_initelt()
3438 c_parser_consume_token (parser); in c_parser_initelt()
3453 c_parser_error (parser, "expected %<=%>"); in c_parser_initelt()
3454 c_parser_skip_until_found (parser, CPP_COMMA, NULL); in c_parser_initelt()
3461 c_parser_initval (parser, NULL); in c_parser_initelt()
3471 c_parser_initval (c_parser *parser, struct c_expr *after) in c_parser_initval() argument
3475 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE) && !after) in c_parser_initval()
3476 init = c_parser_braced_init (parser, NULL_TREE, true); in c_parser_initval()
3479 init = c_parser_expr_no_commas (parser, after); in c_parser_initval()
3542 c_parser_compound_statement (c_parser *parser) in c_parser_compound_statement() argument
3545 if (!c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) in c_parser_compound_statement()
3548 c_parser_compound_statement_nostart (parser); in c_parser_compound_statement()
3557 c_parser_compound_statement_nostart (c_parser *parser) in c_parser_compound_statement_nostart() argument
3563 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_compound_statement_nostart()
3565 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3568 if (c_parser_next_token_is_keyword (parser, RID_LABEL)) in c_parser_compound_statement_nostart()
3572 while (c_parser_next_token_is_keyword (parser, RID_LABEL)) in c_parser_compound_statement_nostart()
3574 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3580 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_compound_statement_nostart()
3582 c_parser_error (parser, "expected identifier"); in c_parser_compound_statement_nostart()
3586 = declare_label (c_parser_peek_token (parser)->value); in c_parser_compound_statement_nostart()
3589 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3590 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_compound_statement_nostart()
3591 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3595 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_compound_statement_nostart()
3604 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_compound_statement_nostart()
3606 c_parser_error (parser, "expected declaration or statement"); in c_parser_compound_statement_nostart()
3607 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3610 while (c_parser_next_token_is_not (parser, CPP_CLOSE_BRACE)) in c_parser_compound_statement_nostart()
3612 location_t loc = c_parser_peek_token (parser)->location; in c_parser_compound_statement_nostart()
3613 if (c_parser_next_token_is_keyword (parser, RID_CASE) in c_parser_compound_statement_nostart()
3614 || c_parser_next_token_is_keyword (parser, RID_DEFAULT) in c_parser_compound_statement_nostart()
3615 || (c_parser_next_token_is (parser, CPP_NAME) in c_parser_compound_statement_nostart()
3616 && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) in c_parser_compound_statement_nostart()
3620 c_parser_label (parser); in c_parser_compound_statement_nostart()
3623 && c_parser_next_token_starts_declspecs (parser)) in c_parser_compound_statement_nostart()
3627 c_parser_declaration_or_fndef (parser, true, true, true, true, NULL); in c_parser_compound_statement_nostart()
3636 && c_parser_next_token_is_keyword (parser, RID_EXTENSION)) in c_parser_compound_statement_nostart()
3642 while (c_parser_peek_2nd_token (parser)->type == CPP_KEYWORD in c_parser_compound_statement_nostart()
3643 && (c_parser_peek_2nd_token (parser)->keyword in c_parser_compound_statement_nostart()
3645 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3646 if (c_token_starts_declspecs (c_parser_peek_2nd_token (parser))) in c_parser_compound_statement_nostart()
3650 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3653 c_parser_declaration_or_fndef (parser, true, true, true, true, NULL); in c_parser_compound_statement_nostart()
3667 else if (c_parser_next_token_is (parser, CPP_PRAGMA)) in c_parser_compound_statement_nostart()
3674 if (c_parser_pragma (parser, pragma_compound)) in c_parser_compound_statement_nostart()
3677 else if (c_parser_next_token_is (parser, CPP_EOF)) in c_parser_compound_statement_nostart()
3679 c_parser_error (parser, "expected declaration or statement"); in c_parser_compound_statement_nostart()
3687 c_parser_statement_after_labels (parser); in c_parser_compound_statement_nostart()
3690 parser->error = false; in c_parser_compound_statement_nostart()
3696 c_parser_consume_token (parser); in c_parser_compound_statement_nostart()
3716 c_parser_label (c_parser *parser) in c_parser_label() argument
3718 location_t loc1 = c_parser_peek_token (parser)->location; in c_parser_label()
3720 if (c_parser_next_token_is_keyword (parser, RID_CASE)) in c_parser_label()
3723 c_parser_consume_token (parser); in c_parser_label()
3724 exp1 = c_parser_expr_no_commas (parser, NULL).value; in c_parser_label()
3725 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_label()
3727 c_parser_consume_token (parser); in c_parser_label()
3730 else if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_label()
3732 c_parser_consume_token (parser); in c_parser_label()
3733 exp2 = c_parser_expr_no_commas (parser, NULL).value; in c_parser_label()
3734 if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_label()
3738 c_parser_error (parser, "expected %<:%> or %<...%>"); in c_parser_label()
3740 else if (c_parser_next_token_is_keyword (parser, RID_DEFAULT)) in c_parser_label()
3742 c_parser_consume_token (parser); in c_parser_label()
3743 if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_label()
3748 tree name = c_parser_peek_token (parser)->value; in c_parser_label()
3752 gcc_assert (c_parser_next_token_is (parser, CPP_NAME)); in c_parser_label()
3753 c_parser_consume_token (parser); in c_parser_label()
3754 gcc_assert (c_parser_next_token_is (parser, CPP_COLON)); in c_parser_label()
3755 loc2 = c_parser_peek_token (parser)->location; in c_parser_label()
3756 c_parser_consume_token (parser); in c_parser_label()
3757 attrs = c_parser_attributes (parser); in c_parser_label()
3867 c_parser_statement (c_parser *parser) in c_parser_statement() argument
3869 while (c_parser_next_token_is_keyword (parser, RID_CASE) in c_parser_statement()
3870 || c_parser_next_token_is_keyword (parser, RID_DEFAULT) in c_parser_statement()
3871 || (c_parser_next_token_is (parser, CPP_NAME) in c_parser_statement()
3872 && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) in c_parser_statement()
3873 c_parser_label (parser); in c_parser_statement()
3874 c_parser_statement_after_labels (parser); in c_parser_statement()
3880 c_parser_statement_after_labels (c_parser *parser) in c_parser_statement_after_labels() argument
3882 location_t loc = c_parser_peek_token (parser)->location; in c_parser_statement_after_labels()
3884 switch (c_parser_peek_token (parser)->type) in c_parser_statement_after_labels()
3887 add_stmt (c_parser_compound_statement (parser)); in c_parser_statement_after_labels()
3890 switch (c_parser_peek_token (parser)->keyword) in c_parser_statement_after_labels()
3893 c_parser_if_statement (parser); in c_parser_statement_after_labels()
3896 c_parser_switch_statement (parser); in c_parser_statement_after_labels()
3899 c_parser_while_statement (parser); in c_parser_statement_after_labels()
3902 c_parser_do_statement (parser); in c_parser_statement_after_labels()
3905 c_parser_for_statement (parser); in c_parser_statement_after_labels()
3912 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3913 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_statement_after_labels()
3915 stmt = c_finish_goto_label (c_parser_peek_token (parser)->value); in c_parser_statement_after_labels()
3916 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3918 else if (c_parser_next_token_is (parser, CPP_MULT)) in c_parser_statement_after_labels()
3920 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3921 stmt = c_finish_goto_ptr (c_parser_expression (parser).value); in c_parser_statement_after_labels()
3924 c_parser_error (parser, "expected identifier or %<*%>"); in c_parser_statement_after_labels()
3927 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3931 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3935 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3936 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_statement_after_labels()
3939 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3943 stmt = c_finish_return (c_parser_expression_conv (parser).value); in c_parser_statement_after_labels()
3948 stmt = c_parser_asm_statement (parser); in c_parser_statement_after_labels()
3952 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3953 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_statement_after_labels()
3956 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3961 = objc_build_throw_stmt (c_parser_expression (parser).value); in c_parser_statement_after_labels()
3967 c_parser_objc_try_catch_statement (parser); in c_parser_statement_after_labels()
3971 c_parser_objc_synchronized_statement (parser); in c_parser_statement_after_labels()
3978 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3986 c_parser_error (parser, "expected statement"); in c_parser_statement_after_labels()
3987 c_parser_consume_token (parser); in c_parser_statement_after_labels()
3990 c_parser_pragma (parser, pragma_stmt); in c_parser_statement_after_labels()
3994 stmt = c_finish_expr_stmt (c_parser_expression_conv (parser).value); in c_parser_statement_after_labels()
3996 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_statement_after_labels()
4031 c_parser_paren_condition (c_parser *parser) in c_parser_paren_condition() argument
4035 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_paren_condition()
4037 loc = c_parser_peek_token (parser)->location; in c_parser_paren_condition()
4039 (c_parser_expression_conv (parser).value); in c_parser_paren_condition()
4042 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_paren_condition()
4049 c_parser_c99_block_statement (c_parser *parser) in c_parser_c99_block_statement() argument
4052 c_parser_statement (parser); in c_parser_c99_block_statement()
4063 c_parser_if_body (c_parser *parser, bool *if_p) in c_parser_if_body() argument
4066 while (c_parser_next_token_is_keyword (parser, RID_CASE) in c_parser_if_body()
4067 || c_parser_next_token_is_keyword (parser, RID_DEFAULT) in c_parser_if_body()
4068 || (c_parser_next_token_is (parser, CPP_NAME) in c_parser_if_body()
4069 && c_parser_peek_2nd_token (parser)->type == CPP_COLON)) in c_parser_if_body()
4070 c_parser_label (parser); in c_parser_if_body()
4071 *if_p = c_parser_next_token_is_keyword (parser, RID_IF); in c_parser_if_body()
4072 if (extra_warnings && c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_if_body()
4074 c_parser_statement_after_labels (parser); in c_parser_if_body()
4086 c_parser_if_statement (c_parser *parser) in c_parser_if_statement() argument
4093 gcc_assert (c_parser_next_token_is_keyword (parser, RID_IF)); in c_parser_if_statement()
4094 c_parser_consume_token (parser); in c_parser_if_statement()
4096 loc = c_parser_peek_token (parser)->location; in c_parser_if_statement()
4097 cond = c_parser_paren_condition (parser); in c_parser_if_statement()
4098 first_body = c_parser_if_body (parser, &first_if); in c_parser_if_statement()
4099 if (c_parser_next_token_is_keyword (parser, RID_ELSE)) in c_parser_if_statement()
4101 c_parser_consume_token (parser); in c_parser_if_statement()
4102 second_body = c_parser_if_body (parser, &second_if); in c_parser_if_statement()
4117 c_parser_switch_statement (c_parser *parser) in c_parser_switch_statement() argument
4120 gcc_assert (c_parser_next_token_is_keyword (parser, RID_SWITCH)); in c_parser_switch_statement()
4121 c_parser_consume_token (parser); in c_parser_switch_statement()
4123 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_switch_statement()
4125 expr = c_parser_expression (parser).value; in c_parser_switch_statement()
4126 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_switch_statement()
4133 body = c_parser_c99_block_statement (parser); in c_parser_switch_statement()
4152 c_parser_while_statement (c_parser *parser) in c_parser_while_statement() argument
4158 gcc_assert (c_parser_next_token_is_keyword (parser, RID_WHILE)); in c_parser_while_statement()
4159 c_parser_consume_token (parser); in c_parser_while_statement()
4161 attrs = c_parser_attributes (parser); in c_parser_while_statement()
4164 loc = c_parser_peek_token (parser)->location; in c_parser_while_statement()
4165 cond = c_parser_paren_condition (parser); in c_parser_while_statement()
4170 body = c_parser_c99_block_statement (parser); in c_parser_while_statement()
4191 c_parser_do_statement (c_parser *parser) in c_parser_do_statement() argument
4197 gcc_assert (c_parser_next_token_is_keyword (parser, RID_DO)); in c_parser_do_statement()
4198 c_parser_consume_token (parser); in c_parser_do_statement()
4200 attrs = c_parser_attributes (parser); in c_parser_do_statement()
4203 loc = c_parser_peek_token (parser)->location; in c_parser_do_statement()
4208 body = c_parser_c99_block_statement (parser); in c_parser_do_statement()
4209 c_parser_require_keyword (parser, RID_WHILE, "expected %<while%>"); in c_parser_do_statement()
4214 cond = c_parser_paren_condition (parser); in c_parser_do_statement()
4215 if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) in c_parser_do_statement()
4216 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_do_statement()
4246 c_parser_for_statement (c_parser *parser) in c_parser_for_statement() argument
4254 gcc_assert (c_parser_next_token_is_keyword (parser, RID_FOR)); in c_parser_for_statement()
4255 loc = c_parser_peek_token (parser)->location; in c_parser_for_statement()
4256 c_parser_consume_token (parser); in c_parser_for_statement()
4258 attrs = c_parser_attributes (parser); in c_parser_for_statement()
4261 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_for_statement()
4264 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_for_statement()
4266 c_parser_consume_token (parser); in c_parser_for_statement()
4269 else if (c_parser_next_token_starts_declspecs (parser)) in c_parser_for_statement()
4273 c_parser_declaration_or_fndef (parser, true, true, true, true, &cond); in c_parser_for_statement()
4275 if (c_parser_next_token_is_keyword (parser, RID_IN) && cond) in c_parser_for_statement()
4277 cond = finish_parse_foreach_header (parser, cond); in c_parser_for_statement()
4284 else if (c_parser_next_token_is_keyword (parser, RID_EXTENSION)) in c_parser_for_statement()
4290 while (c_parser_peek_2nd_token (parser)->type == CPP_KEYWORD in c_parser_for_statement()
4291 && (c_parser_peek_2nd_token (parser)->keyword in c_parser_for_statement()
4293 c_parser_consume_token (parser); in c_parser_for_statement()
4294 if (c_token_starts_declspecs (c_parser_peek_2nd_token (parser))) in c_parser_for_statement()
4298 c_parser_consume_token (parser); in c_parser_for_statement()
4301 c_parser_declaration_or_fndef (parser, true, true, true, true, &cond); in c_parser_for_statement()
4304 if (c_parser_next_token_is_keyword (parser, RID_IN) && cond) in c_parser_for_statement()
4306 cond = finish_parse_foreach_header (parser, cond); in c_parser_for_statement()
4320 cond = c_parser_expression (parser).value; in c_parser_for_statement()
4321 if (c_parser_next_token_is_keyword (parser, RID_IN)) in c_parser_for_statement()
4323 c_parser_consume_token (parser); /* IN */ in c_parser_for_statement()
4324 cond = build_tree_list (cond, c_parser_initializer (parser).value); in c_parser_for_statement()
4330 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_for_statement()
4336 loc = c_parser_peek_token (parser)->location; in c_parser_for_statement()
4337 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_for_statement()
4339 c_parser_consume_token (parser); in c_parser_for_statement()
4348 tree ocond = c_parser_expression_conv (parser).value; in c_parser_for_statement()
4352 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_for_statement()
4355 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_for_statement()
4358 incr = c_process_expr_stmt (c_parser_expression (parser).value); in c_parser_for_statement()
4359 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_for_statement()
4370 body = c_parser_c99_block_statement (parser); in c_parser_for_statement()
4397 c_parser_asm_statement (c_parser *parser) in c_parser_asm_statement() argument
4401 gcc_assert (c_parser_next_token_is_keyword (parser, RID_ASM)); in c_parser_asm_statement()
4402 c_parser_consume_token (parser); in c_parser_asm_statement()
4403 if (c_parser_next_token_is_keyword (parser, RID_VOLATILE)) in c_parser_asm_statement()
4405 quals = c_parser_peek_token (parser)->value; in c_parser_asm_statement()
4406 c_parser_consume_token (parser); in c_parser_asm_statement()
4408 else if (c_parser_next_token_is_keyword (parser, RID_CONST) in c_parser_asm_statement()
4409 || c_parser_next_token_is_keyword (parser, RID_RESTRICT)) in c_parser_asm_statement()
4412 c_parser_peek_token (parser)->value); in c_parser_asm_statement()
4414 c_parser_consume_token (parser); in c_parser_asm_statement()
4421 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_asm_statement()
4426 str = c_parser_asm_string_literal (parser); in c_parser_asm_statement()
4427 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_asm_statement()
4435 if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) in c_parser_asm_statement()
4438 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_asm_statement()
4443 if (c_parser_next_token_is (parser, CPP_COLON) in c_parser_asm_statement()
4444 || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_asm_statement()
4447 outputs = c_parser_asm_operands (parser, false); in c_parser_asm_statement()
4448 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_asm_statement()
4454 if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) in c_parser_asm_statement()
4457 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_asm_statement()
4461 if (c_parser_next_token_is (parser, CPP_COLON) in c_parser_asm_statement()
4462 || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_asm_statement()
4465 inputs = c_parser_asm_operands (parser, true); in c_parser_asm_statement()
4466 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_asm_statement()
4471 if (!c_parser_require (parser, CPP_COLON, "expected %<:%> or %<)%>")) in c_parser_asm_statement()
4474 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_asm_statement()
4478 clobbers = c_parser_asm_clobbers (parser); in c_parser_asm_statement()
4481 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) in c_parser_asm_statement()
4483 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_asm_statement()
4486 if (!c_parser_require (parser, CPP_SEMICOLON, "expected %<;%>")) in c_parser_asm_statement()
4487 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_asm_statement()
4507 c_parser_asm_operands (c_parser *parser, bool convert_p) in c_parser_asm_operands() argument
4514 if (c_parser_next_token_is (parser, CPP_OPEN_SQUARE)) in c_parser_asm_operands()
4516 c_parser_consume_token (parser); in c_parser_asm_operands()
4517 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_asm_operands()
4519 tree id = c_parser_peek_token (parser)->value; in c_parser_asm_operands()
4520 c_parser_consume_token (parser); in c_parser_asm_operands()
4526 c_parser_error (parser, "expected identifier"); in c_parser_asm_operands()
4527 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, NULL); in c_parser_asm_operands()
4530 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_asm_operands()
4535 str = c_parser_asm_string_literal (parser); in c_parser_asm_operands()
4539 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_asm_operands()
4544 expr = c_parser_expression (parser); in c_parser_asm_operands()
4548 if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>")) in c_parser_asm_operands()
4550 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_asm_operands()
4555 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_asm_operands()
4556 c_parser_consume_token (parser); in c_parser_asm_operands()
4571 c_parser_asm_clobbers (c_parser *parser) in c_parser_asm_clobbers() argument
4576 tree str = c_parser_asm_string_literal (parser); in c_parser_asm_clobbers()
4581 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_asm_clobbers()
4582 c_parser_consume_token (parser); in c_parser_asm_clobbers()
4606 c_parser_expr_no_commas (c_parser *parser, struct c_expr *after) in c_parser_expr_no_commas() argument
4611 lhs = c_parser_conditional_expression (parser, after); in c_parser_expr_no_commas()
4612 switch (c_parser_peek_token (parser)->type) in c_parser_expr_no_commas()
4650 c_parser_consume_token (parser); in c_parser_expr_no_commas()
4651 rhs = c_parser_expr_no_commas (parser, NULL); in c_parser_expr_no_commas()
4679 c_parser_conditional_expression (c_parser *parser, struct c_expr *after) in c_parser_conditional_expression() argument
4683 cond = c_parser_binary_expression (parser, after); in c_parser_conditional_expression()
4684 if (c_parser_next_token_is_not (parser, CPP_QUERY)) in c_parser_conditional_expression()
4687 c_parser_consume_token (parser); in c_parser_conditional_expression()
4688 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_conditional_expression()
4703 exp1 = c_parser_expression_conv (parser); in c_parser_conditional_expression()
4707 if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_conditional_expression()
4714 exp2 = c_parser_conditional_expression (parser, NULL); in c_parser_conditional_expression()
4777 c_parser_binary_expression (c_parser *parser, struct c_expr *after) in c_parser_binary_expression() argument
4849 stack[0].expr = c_parser_cast_expression (parser, after); in c_parser_binary_expression()
4861 if (parser->error) in c_parser_binary_expression()
4863 switch (c_parser_peek_token (parser)->type) in c_parser_binary_expression()
4942 c_parser_consume_token (parser); in c_parser_binary_expression()
4965 stack[sp].expr = c_parser_cast_expression (parser, NULL); in c_parser_binary_expression()
4991 c_parser_cast_expression (c_parser *parser, struct c_expr *after) in c_parser_cast_expression() argument
4995 return c_parser_postfix_expression_after_primary (parser, *after); in c_parser_cast_expression()
5000 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) in c_parser_cast_expression()
5001 && c_token_starts_typename (c_parser_peek_2nd_token (parser))) in c_parser_cast_expression()
5006 c_parser_consume_token (parser); in c_parser_cast_expression()
5007 type_name = c_parser_type_name (parser); in c_parser_cast_expression()
5008 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_cast_expression()
5019 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_cast_expression()
5020 return c_parser_postfix_expression_after_paren_type (parser, in c_parser_cast_expression()
5022 expr = c_parser_cast_expression (parser, NULL); in c_parser_cast_expression()
5029 return c_parser_unary_expression (parser); in c_parser_cast_expression()
5060 c_parser_unary_expression (c_parser *parser) in c_parser_unary_expression() argument
5064 switch (c_parser_peek_token (parser)->type) in c_parser_unary_expression()
5067 c_parser_consume_token (parser); in c_parser_unary_expression()
5068 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5072 c_parser_consume_token (parser); in c_parser_unary_expression()
5073 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5077 c_parser_consume_token (parser); in c_parser_unary_expression()
5079 c_parser_cast_expression (parser, NULL)); in c_parser_unary_expression()
5081 c_parser_consume_token (parser); in c_parser_unary_expression()
5082 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5088 c_parser_consume_token (parser); in c_parser_unary_expression()
5092 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5096 c_parser_consume_token (parser); in c_parser_unary_expression()
5097 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5101 c_parser_consume_token (parser); in c_parser_unary_expression()
5102 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5106 c_parser_consume_token (parser); in c_parser_unary_expression()
5107 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5112 c_parser_consume_token (parser); in c_parser_unary_expression()
5113 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_unary_expression()
5116 (c_parser_peek_token (parser)->value); in c_parser_unary_expression()
5117 c_parser_consume_token (parser); in c_parser_unary_expression()
5121 c_parser_error (parser, "expected identifier"); in c_parser_unary_expression()
5127 switch (c_parser_peek_token (parser)->keyword) in c_parser_unary_expression()
5130 return c_parser_sizeof_expression (parser); in c_parser_unary_expression()
5132 return c_parser_alignof_expression (parser); in c_parser_unary_expression()
5134 c_parser_consume_token (parser); in c_parser_unary_expression()
5136 ret = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5140 c_parser_consume_token (parser); in c_parser_unary_expression()
5141 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5145 c_parser_consume_token (parser); in c_parser_unary_expression()
5146 op = c_parser_cast_expression (parser, NULL); in c_parser_unary_expression()
5150 return c_parser_postfix_expression (parser); in c_parser_unary_expression()
5153 return c_parser_postfix_expression (parser); in c_parser_unary_expression()
5160 c_parser_sizeof_expression (c_parser *parser) in c_parser_sizeof_expression() argument
5163 gcc_assert (c_parser_next_token_is_keyword (parser, RID_SIZEOF)); in c_parser_sizeof_expression()
5164 c_parser_consume_token (parser); in c_parser_sizeof_expression()
5167 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) in c_parser_sizeof_expression()
5168 && c_token_starts_typename (c_parser_peek_2nd_token (parser))) in c_parser_sizeof_expression()
5173 c_parser_consume_token (parser); in c_parser_sizeof_expression()
5174 type_name = c_parser_type_name (parser); in c_parser_sizeof_expression()
5175 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_sizeof_expression()
5185 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_sizeof_expression()
5187 expr = c_parser_postfix_expression_after_paren_type (parser, in c_parser_sizeof_expression()
5204 expr = c_parser_unary_expression (parser); in c_parser_sizeof_expression()
5218 c_parser_alignof_expression (c_parser *parser) in c_parser_alignof_expression() argument
5221 gcc_assert (c_parser_next_token_is_keyword (parser, RID_ALIGNOF)); in c_parser_alignof_expression()
5222 c_parser_consume_token (parser); in c_parser_alignof_expression()
5225 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) in c_parser_alignof_expression()
5226 && c_token_starts_typename (c_parser_peek_2nd_token (parser))) in c_parser_alignof_expression()
5232 c_parser_consume_token (parser); in c_parser_alignof_expression()
5233 type_name = c_parser_type_name (parser); in c_parser_alignof_expression()
5234 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_alignof_expression()
5244 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_alignof_expression()
5246 expr = c_parser_postfix_expression_after_paren_type (parser, in c_parser_alignof_expression()
5260 expr = c_parser_unary_expression (parser); in c_parser_alignof_expression()
5326 c_parser_postfix_expression (c_parser *parser) in c_parser_postfix_expression() argument
5330 switch (c_parser_peek_token (parser)->type) in c_parser_postfix_expression()
5335 expr.value = c_parser_peek_token (parser)->value; in c_parser_postfix_expression()
5337 c_parser_consume_token (parser); in c_parser_postfix_expression()
5341 expr.value = c_parser_peek_token (parser)->value; in c_parser_postfix_expression()
5343 c_parser_consume_token (parser); in c_parser_postfix_expression()
5348 = objc_build_string_object (c_parser_peek_token (parser)->value); in c_parser_postfix_expression()
5350 c_parser_consume_token (parser); in c_parser_postfix_expression()
5354 if (c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME in c_parser_postfix_expression()
5355 && c_parser_peek_2nd_token (parser)->type == CPP_DOT) in c_parser_postfix_expression()
5359 receiver = c_parser_objc_receiver (parser); in c_parser_postfix_expression()
5361 c_parser_consume_token (parser); in c_parser_postfix_expression()
5362 component = c_parser_objc_message_args (parser); in c_parser_postfix_expression()
5368 if (c_parser_peek_token (parser)->id_kind != C_ID_ID) in c_parser_postfix_expression()
5370 c_parser_error (parser, "expected expression"); in c_parser_postfix_expression()
5376 tree id = c_parser_peek_token (parser)->value; in c_parser_postfix_expression()
5377 location_t loc = c_parser_peek_token (parser)->location; in c_parser_postfix_expression()
5378 c_parser_consume_token (parser); in c_parser_postfix_expression()
5380 (c_parser_peek_token (parser)->type in c_parser_postfix_expression()
5416 if (c_parser_peek_2nd_token (parser)->type == CPP_OPEN_BRACE) in c_parser_postfix_expression()
5420 c_parser_consume_token (parser); in c_parser_postfix_expression()
5421 c_parser_consume_token (parser); in c_parser_postfix_expression()
5426 parser->error = true; in c_parser_postfix_expression()
5427 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, NULL); in c_parser_postfix_expression()
5428 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5434 c_parser_compound_statement_nostart (parser); in c_parser_postfix_expression()
5435 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5442 else if (c_token_starts_typename (c_parser_peek_2nd_token (parser))) in c_parser_postfix_expression()
5449 c_parser_consume_token (parser); in c_parser_postfix_expression()
5450 type_name = c_parser_type_name (parser); in c_parser_postfix_expression()
5451 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5459 expr = c_parser_postfix_expression_after_paren_type (parser, in c_parser_postfix_expression()
5465 c_parser_consume_token (parser); in c_parser_postfix_expression()
5466 expr = c_parser_expression (parser); in c_parser_postfix_expression()
5470 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5475 switch (c_parser_peek_token (parser)->keyword) in c_parser_postfix_expression()
5480 expr.value = fname_decl (c_parser_peek_token (parser)->keyword, in c_parser_postfix_expression()
5481 c_parser_peek_token (parser)->value); in c_parser_postfix_expression()
5483 c_parser_consume_token (parser); in c_parser_postfix_expression()
5486 c_parser_consume_token (parser); in c_parser_postfix_expression()
5487 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5493 e1 = c_parser_expr_no_commas (parser, NULL); in c_parser_postfix_expression()
5494 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) in c_parser_postfix_expression()
5496 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5501 t1 = c_parser_type_name (parser); in c_parser_postfix_expression()
5502 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5516 c_parser_consume_token (parser); in c_parser_postfix_expression()
5517 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5523 t1 = c_parser_type_name (parser); in c_parser_postfix_expression()
5530 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) in c_parser_postfix_expression()
5532 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5547 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_postfix_expression()
5550 (offsetof_ref, c_parser_peek_token (parser)->value); in c_parser_postfix_expression()
5551 c_parser_consume_token (parser); in c_parser_postfix_expression()
5552 while (c_parser_next_token_is (parser, CPP_DOT) in c_parser_postfix_expression()
5553 || c_parser_next_token_is (parser, in c_parser_postfix_expression()
5556 if (c_parser_next_token_is (parser, CPP_DOT)) in c_parser_postfix_expression()
5558 c_parser_consume_token (parser); in c_parser_postfix_expression()
5559 if (c_parser_next_token_is_not (parser, in c_parser_postfix_expression()
5562 c_parser_error (parser, "expected identifier"); in c_parser_postfix_expression()
5567 c_parser_peek_token (parser)->value); in c_parser_postfix_expression()
5568 c_parser_consume_token (parser); in c_parser_postfix_expression()
5573 c_parser_consume_token (parser); in c_parser_postfix_expression()
5574 idx = c_parser_expression (parser).value; in c_parser_postfix_expression()
5575 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_postfix_expression()
5582 c_parser_error (parser, "expected identifier"); in c_parser_postfix_expression()
5583 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5590 c_parser_consume_token (parser); in c_parser_postfix_expression()
5591 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5597 e1 = c_parser_expr_no_commas (parser, NULL); in c_parser_postfix_expression()
5598 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) in c_parser_postfix_expression()
5600 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5605 e2 = c_parser_expr_no_commas (parser, NULL); in c_parser_postfix_expression()
5606 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) in c_parser_postfix_expression()
5608 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5613 e3 = c_parser_expr_no_commas (parser, NULL); in c_parser_postfix_expression()
5614 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5627 c_parser_consume_token (parser); in c_parser_postfix_expression()
5628 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5634 t1 = c_parser_type_name (parser); in c_parser_postfix_expression()
5641 if (!c_parser_require (parser, CPP_COMMA, "expected %<,%>")) in c_parser_postfix_expression()
5643 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5648 t2 = c_parser_type_name (parser); in c_parser_postfix_expression()
5655 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5671 c_parser_consume_token (parser); in c_parser_postfix_expression()
5672 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5679 tree sel = c_parser_objc_selector_arg (parser); in c_parser_postfix_expression()
5680 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5688 c_parser_consume_token (parser); in c_parser_postfix_expression()
5689 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5695 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_postfix_expression()
5697 c_parser_error (parser, "expected identifier"); in c_parser_postfix_expression()
5698 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5704 tree id = c_parser_peek_token (parser)->value; in c_parser_postfix_expression()
5705 c_parser_consume_token (parser); in c_parser_postfix_expression()
5706 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5715 c_parser_consume_token (parser); in c_parser_postfix_expression()
5716 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_postfix_expression()
5722 t1 = c_parser_type_name (parser); in c_parser_postfix_expression()
5727 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_postfix_expression()
5730 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression()
5739 c_parser_error (parser, "expected expression"); in c_parser_postfix_expression()
5748 expr.value = c_parser_block_literal_expr (parser); in c_parser_postfix_expression()
5752 c_parser_error (parser, "expected expression"); in c_parser_postfix_expression()
5761 c_parser_consume_token (parser); in c_parser_postfix_expression()
5762 receiver = c_parser_objc_receiver (parser); in c_parser_postfix_expression()
5763 args = c_parser_objc_message_args (parser); in c_parser_postfix_expression()
5764 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_postfix_expression()
5773 c_parser_error (parser, "expected expression"); in c_parser_postfix_expression()
5778 return c_parser_postfix_expression_after_primary (parser, expr); in c_parser_postfix_expression()
5790 c_parser_postfix_expression_after_paren_type (c_parser *parser, in c_parser_postfix_expression_after_paren_type() argument
5803 init = c_parser_braced_init (parser, type, false); in c_parser_postfix_expression_after_paren_type()
5811 return c_parser_postfix_expression_after_primary (parser, expr); in c_parser_postfix_expression_after_paren_type()
5818 c_parser_postfix_expression_after_primary (c_parser *parser, in c_parser_postfix_expression_after_primary() argument
5824 switch (c_parser_peek_token (parser)->type) in c_parser_postfix_expression_after_primary()
5828 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5829 idx = c_parser_expression (parser).value; in c_parser_postfix_expression_after_primary()
5830 c_parser_skip_until_found (parser, CPP_CLOSE_SQUARE, in c_parser_postfix_expression_after_primary()
5837 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5838 if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN)) in c_parser_postfix_expression_after_primary()
5841 exprlist = c_parser_expr_list (parser, true); in c_parser_postfix_expression_after_primary()
5842 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_postfix_expression_after_primary()
5849 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5851 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_postfix_expression_after_primary()
5852 ident = c_parser_peek_token (parser)->value; in c_parser_postfix_expression_after_primary()
5855 c_parser_error (parser, "expected identifier"); in c_parser_postfix_expression_after_primary()
5860 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5866 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5868 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_postfix_expression_after_primary()
5869 ident = c_parser_peek_token (parser)->value; in c_parser_postfix_expression_after_primary()
5872 c_parser_error (parser, "expected identifier"); in c_parser_postfix_expression_after_primary()
5877 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5884 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5891 c_parser_consume_token (parser); in c_parser_postfix_expression_after_primary()
5910 c_parser_expression (c_parser *parser) in c_parser_expression() argument
5913 expr = c_parser_expr_no_commas (parser, NULL); in c_parser_expression()
5914 while (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_expression()
5917 c_parser_consume_token (parser); in c_parser_expression()
5918 next = c_parser_expr_no_commas (parser, NULL); in c_parser_expression()
5930 c_parser_expression_conv (c_parser *parser) in c_parser_expression_conv() argument
5933 expr = c_parser_expression (parser); in c_parser_expression_conv()
5947 c_parser_expr_list (c_parser *parser, bool convert_p) in c_parser_expr_list() argument
5951 expr = c_parser_expr_no_commas (parser, NULL); in c_parser_expr_list()
5955 while (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_expr_list()
5957 c_parser_consume_token (parser); in c_parser_expr_list()
5958 expr = c_parser_expr_no_commas (parser, NULL); in c_parser_expr_list()
5991 c_parser_objc_class_definition (c_parser *parser, tree prefix_attrs) in c_parser_objc_class_definition() argument
5996 if (c_parser_next_token_is_keyword (parser, RID_AT_INTERFACE)) in c_parser_objc_class_definition()
5998 else if (c_parser_next_token_is_keyword (parser, RID_AT_IMPLEMENTATION)) in c_parser_objc_class_definition()
6011 c_parser_consume_token (parser); in c_parser_objc_class_definition()
6012 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_class_definition()
6017 c_parser_consume_token (parser); in c_parser_objc_class_definition()
6019 if (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN)) in c_parser_objc_class_definition()
6021 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_class_definition()
6023 c_parser_error (parser, "expected identifier"); in c_parser_objc_class_definition()
6024 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_objc_class_definition()
6027 id2 = c_parser_peek_token (parser)->value; in c_parser_objc_class_definition()
6028 c_parser_consume_token (parser); in c_parser_objc_class_definition()
6031 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_class_definition()
6044 if (c_parser_next_token_is (parser, CPP_LESS)) in c_parser_objc_class_definition()
6045 proto = c_parser_objc_protocol_refs (parser); in c_parser_objc_class_definition()
6052 c_parser_objc_interfacedecllist (parser); in c_parser_objc_class_definition()
6053 c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); in c_parser_objc_class_definition()
6057 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_objc_class_definition()
6059 c_parser_consume_token (parser); in c_parser_objc_class_definition()
6060 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_class_definition()
6062 c_parser_error (parser, "expected identifier"); in c_parser_objc_class_definition()
6065 superclass = c_parser_peek_token (parser)->value; in c_parser_objc_class_definition()
6066 c_parser_consume_token (parser); in c_parser_objc_class_definition()
6073 if (c_parser_next_token_is (parser, CPP_LESS)) in c_parser_objc_class_definition()
6074 proto = c_parser_objc_protocol_refs (parser); in c_parser_objc_class_definition()
6080 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_objc_class_definition()
6081 c_parser_objc_class_instance_variables (parser); in c_parser_objc_class_definition()
6086 c_parser_objc_interfacedecllist (parser); in c_parser_objc_class_definition()
6087 c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); in c_parser_objc_class_definition()
6099 c_parser_objc_eq_identifier (c_parser *parser) in c_parser_objc_eq_identifier() argument
6102 if (c_parser_next_token_is_not (parser, CPP_EQ)) in c_parser_objc_eq_identifier()
6104 c_parser_error (parser, "expected %<=%>"); in c_parser_objc_eq_identifier()
6108 c_parser_consume_token (parser); in c_parser_objc_eq_identifier()
6109 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_eq_identifier()
6111 c_parser_error (parser, "expected identifier"); in c_parser_objc_eq_identifier()
6114 id = c_parser_peek_token (parser)->value; in c_parser_objc_eq_identifier()
6115 c_parser_consume_token (parser); in c_parser_objc_eq_identifier()
6122 c_parser_objc_property_attribute (c_parser *parser) in c_parser_objc_property_attribute() argument
6125 if (c_parser_peek_token (parser)->type != CPP_KEYWORD) in c_parser_objc_property_attribute()
6127 c_parser_error (parser, "expected a property attribute"); in c_parser_objc_property_attribute()
6128 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6131 switch (c_parser_peek_token (parser)->keyword) in c_parser_objc_property_attribute()
6134 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6138 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6139 id = c_parser_objc_eq_identifier (parser); in c_parser_objc_property_attribute()
6144 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6145 id = c_parser_objc_eq_identifier (parser); in c_parser_objc_property_attribute()
6149 if (c_parser_next_token_is (parser, CPP_COLON)) in c_parser_objc_property_attribute()
6150 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6154 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6159 c_parser_error (parser, "expected a property attribute"); in c_parser_objc_property_attribute()
6160 c_parser_consume_token (parser); in c_parser_objc_property_attribute()
6165 c_parser_objc_property_attrlist (c_parser *parser) in c_parser_objc_property_attrlist() argument
6167 while (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN) in c_parser_objc_property_attrlist()
6168 && c_parser_next_token_is_not (parser, CPP_EOF)) in c_parser_objc_property_attrlist()
6170 c_parser_objc_property_attribute (parser); in c_parser_objc_property_attrlist()
6172 if (c_parser_next_token_is_not (parser, CPP_COMMA) in c_parser_objc_property_attrlist()
6173 && c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN) in c_parser_objc_property_attrlist()
6174 && c_parser_next_token_is_not (parser, CPP_EOF)) in c_parser_objc_property_attrlist()
6177 if (c_parser_next_token_is (parser, CPP_COMMA) in c_parser_objc_property_attrlist()
6178 || c_parser_next_token_is (parser, CPP_NAME) /* error */) in c_parser_objc_property_attrlist()
6179 c_parser_consume_token (parser); in c_parser_objc_property_attrlist()
6184 c_parser_objc_property_attr_decl (c_parser *parser) in c_parser_objc_property_attr_decl() argument
6186 if (!c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_objc_property_attr_decl()
6188 c_parser_consume_token (parser); in c_parser_objc_property_attr_decl()
6189 c_parser_objc_property_attrlist (parser); in c_parser_objc_property_attr_decl()
6190 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_property_attr_decl()
6194 c_parser_component_decl (c_parser *parser) in c_parser_component_decl() argument
6196 tree decl = c_parser_struct_declaration (parser); in c_parser_component_decl()
6201 c_parser_objc_property_declaration (c_parser *parser) in c_parser_objc_property_declaration() argument
6204 c_parser_require_keyword (parser, RID_AT_PROPERTY, "expected %<@property%>"); in c_parser_objc_property_declaration()
6207 c_parser_objc_property_attr_decl (parser); in c_parser_objc_property_declaration()
6209 prop = c_parser_component_decl (parser); in c_parser_objc_property_declaration()
6216 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_property_declaration()
6243 c_parser_objc_class_instance_variables (c_parser *parser) in c_parser_objc_class_instance_variables() argument
6245 gcc_assert (c_parser_next_token_is (parser, CPP_OPEN_BRACE)); in c_parser_objc_class_instance_variables()
6246 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6247 while (c_parser_next_token_is_not (parser, CPP_EOF)) in c_parser_objc_class_instance_variables()
6251 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_objc_class_instance_variables()
6255 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6259 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_objc_class_instance_variables()
6261 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6265 if (c_parser_next_token_is_keyword (parser, RID_AT_PRIVATE)) in c_parser_objc_class_instance_variables()
6267 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6271 else if (c_parser_next_token_is_keyword (parser, RID_AT_PROTECTED)) in c_parser_objc_class_instance_variables()
6273 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6277 else if (c_parser_next_token_is_keyword (parser, RID_AT_PUBLIC)) in c_parser_objc_class_instance_variables()
6279 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6284 else if (c_parser_next_token_is_keyword (parser, RID_AT_PACKAGE)) in c_parser_objc_class_instance_variables()
6286 c_parser_consume_token (parser); in c_parser_objc_class_instance_variables()
6291 else if (c_parser_next_token_is (parser, CPP_PRAGMA)) in c_parser_objc_class_instance_variables()
6293 c_parser_pragma (parser, pragma_external); in c_parser_objc_class_instance_variables()
6298 decls = c_parser_struct_declaration (parser); in c_parser_objc_class_instance_variables()
6306 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_class_instance_variables()
6317 c_parser_objc_class_declaration (c_parser *parser) in c_parser_objc_class_declaration() argument
6320 gcc_assert (c_parser_next_token_is_keyword (parser, RID_AT_CLASS)); in c_parser_objc_class_declaration()
6321 c_parser_consume_token (parser); in c_parser_objc_class_declaration()
6327 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_class_declaration()
6329 c_parser_error (parser, "expected identifier"); in c_parser_objc_class_declaration()
6332 id = c_parser_peek_token (parser)->value; in c_parser_objc_class_declaration()
6334 c_parser_consume_token (parser); in c_parser_objc_class_declaration()
6335 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_objc_class_declaration()
6336 c_parser_consume_token (parser); in c_parser_objc_class_declaration()
6340 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_class_declaration()
6351 c_parser_objc_alias_declaration (c_parser *parser) in c_parser_objc_alias_declaration() argument
6354 gcc_assert (c_parser_next_token_is_keyword (parser, RID_AT_ALIAS)); in c_parser_objc_alias_declaration()
6355 c_parser_consume_token (parser); in c_parser_objc_alias_declaration()
6356 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_alias_declaration()
6358 c_parser_error (parser, "expected identifier"); in c_parser_objc_alias_declaration()
6359 c_parser_skip_until_found (parser, CPP_SEMICOLON, NULL); in c_parser_objc_alias_declaration()
6362 id1 = c_parser_peek_token (parser)->value; in c_parser_objc_alias_declaration()
6363 c_parser_consume_token (parser); in c_parser_objc_alias_declaration()
6364 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_alias_declaration()
6366 c_parser_error (parser, "expected identifier"); in c_parser_objc_alias_declaration()
6367 c_parser_skip_until_found (parser, CPP_SEMICOLON, NULL); in c_parser_objc_alias_declaration()
6370 id2 = c_parser_peek_token (parser)->value; in c_parser_objc_alias_declaration()
6371 c_parser_consume_token (parser); in c_parser_objc_alias_declaration()
6372 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_alias_declaration()
6389 c_parser_objc_protocol_definition (c_parser *parser, tree attributes) in c_parser_objc_protocol_definition() argument
6391 gcc_assert (c_parser_next_token_is_keyword (parser, RID_AT_PROTOCOL)); in c_parser_objc_protocol_definition()
6392 c_parser_consume_token (parser); in c_parser_objc_protocol_definition()
6393 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_protocol_definition()
6395 c_parser_error (parser, "expected identifier"); in c_parser_objc_protocol_definition()
6398 if (c_parser_peek_2nd_token (parser)->type == CPP_COMMA in c_parser_objc_protocol_definition()
6399 || c_parser_peek_2nd_token (parser)->type == CPP_SEMICOLON) in c_parser_objc_protocol_definition()
6407 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_protocol_definition()
6409 c_parser_error (parser, "expected identifier"); in c_parser_objc_protocol_definition()
6412 id = c_parser_peek_token (parser)->value; in c_parser_objc_protocol_definition()
6414 c_parser_consume_token (parser); in c_parser_objc_protocol_definition()
6415 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_objc_protocol_definition()
6416 c_parser_consume_token (parser); in c_parser_objc_protocol_definition()
6420 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_protocol_definition()
6426 tree id = c_parser_peek_token (parser)->value; in c_parser_objc_protocol_definition()
6428 c_parser_consume_token (parser); in c_parser_objc_protocol_definition()
6429 if (c_parser_next_token_is (parser, CPP_LESS)) in c_parser_objc_protocol_definition()
6430 proto = c_parser_objc_protocol_refs (parser); in c_parser_objc_protocol_definition()
6435 c_parser_objc_interfacedecllist (parser); in c_parser_objc_protocol_definition()
6436 c_parser_require_keyword (parser, RID_AT_END, "expected %<@end%>"); in c_parser_objc_protocol_definition()
6450 c_parser_objc_method_type (c_parser *parser) in c_parser_objc_method_type() argument
6452 switch (c_parser_peek_token (parser)->type) in c_parser_objc_method_type()
6455 c_parser_consume_token (parser); in c_parser_objc_method_type()
6458 c_parser_consume_token (parser); in c_parser_objc_method_type()
6472 c_parser_objc_method_definition (c_parser *parser) in c_parser_objc_method_definition() argument
6474 enum tree_code type = c_parser_objc_method_type (parser); in c_parser_objc_method_definition()
6478 decl = c_parser_objc_method_decl (parser); in c_parser_objc_method_definition()
6479 if (c_parser_next_token_is (parser, CPP_SEMICOLON)) in c_parser_objc_method_definition()
6481 c_parser_consume_token (parser); in c_parser_objc_method_definition()
6485 if (!c_parser_next_token_is (parser, CPP_OPEN_BRACE)) in c_parser_objc_method_definition()
6487 c_parser_error (parser, "expected %<{%>"); in c_parser_objc_method_definition()
6495 add_stmt (c_parser_compound_statement (parser)); in c_parser_objc_method_definition()
6529 c_parser_objc_interfacedecllist (c_parser *parser) in c_parser_objc_interfacedecllist() argument
6535 token = c_parser_peek_token (parser); in c_parser_objc_interfacedecllist()
6539 c_parser_objc_property_declaration (parser); in c_parser_objc_interfacedecllist()
6546 c_parser_objc_methodproto (parser); in c_parser_objc_interfacedecllist()
6552 switch (c_parser_peek_token (parser)->type) in c_parser_objc_interfacedecllist()
6557 c_parser_consume_token (parser); in c_parser_objc_interfacedecllist()
6563 c_parser_pragma (parser, pragma_external); in c_parser_objc_interfacedecllist()
6568 if (c_parser_next_token_is_keyword (parser, RID_AT_END)) in c_parser_objc_interfacedecllist()
6571 c_parser_declaration_or_fndef (parser, false, true, false, true, NULL); in c_parser_objc_interfacedecllist()
6584 c_parser_objc_methodproto (c_parser *parser) in c_parser_objc_methodproto() argument
6590 if (c_parser_next_token_is_keyword (parser, RID_AT_REQUIRED)) in c_parser_objc_methodproto()
6593 c_parser_consume_token (parser); in c_parser_objc_methodproto()
6596 if (c_parser_next_token_is_keyword (parser, RID_AT_OPTIONAL)) in c_parser_objc_methodproto()
6599 c_parser_consume_token (parser); in c_parser_objc_methodproto()
6604 type = c_parser_objc_method_type (parser); in c_parser_objc_methodproto()
6608 decl = c_parser_objc_method_decl (parser); in c_parser_objc_methodproto()
6615 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_objc_methodproto()
6649 c_parser_objc_method_decl (c_parser *parser) in c_parser_objc_method_decl() argument
6656 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_objc_method_decl()
6658 c_parser_consume_token (parser); in c_parser_objc_method_decl()
6659 type = c_parser_objc_type_name (parser); in c_parser_objc_method_decl()
6660 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_method_decl()
6662 sel = c_parser_objc_selector (parser); in c_parser_objc_method_decl()
6666 if (!sel || c_parser_next_token_is (parser, CPP_COLON)) in c_parser_objc_method_decl()
6675 if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_objc_method_decl()
6677 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_objc_method_decl()
6679 c_parser_consume_token (parser); in c_parser_objc_method_decl()
6680 atype = c_parser_objc_type_name (parser); in c_parser_objc_method_decl()
6681 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_objc_method_decl()
6685 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_objc_method_decl()
6686 attr = c_parser_attributes (parser); in c_parser_objc_method_decl()
6688 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_method_decl()
6690 c_parser_error (parser, "expected identifier"); in c_parser_objc_method_decl()
6693 id = c_parser_peek_token (parser)->value; in c_parser_objc_method_decl()
6694 c_parser_consume_token (parser); in c_parser_objc_method_decl()
6698 tsel = c_parser_objc_selector (parser); in c_parser_objc_method_decl()
6699 if (!tsel && c_parser_next_token_is_not (parser, CPP_COLON)) in c_parser_objc_method_decl()
6703 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_objc_method_decl()
6704 objc_method_attributes = c_parser_attributes (parser); in c_parser_objc_method_decl()
6710 while (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_objc_method_decl()
6713 c_parser_consume_token (parser); in c_parser_objc_method_decl()
6714 if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_objc_method_decl()
6717 c_parser_consume_token (parser); in c_parser_objc_method_decl()
6721 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_objc_method_decl()
6722 objc_method_attributes = c_parser_attributes (parser); in c_parser_objc_method_decl()
6726 parm = c_parser_parameter_declaration (parser, NULL_TREE); in c_parser_objc_method_decl()
6738 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_objc_method_decl()
6739 objc_method_attributes = c_parser_attributes (parser); in c_parser_objc_method_decl()
6745 c_parser_error (parser, "objective-c method declaration is expected"); in c_parser_objc_method_decl()
6767 c_parser_objc_type_name (c_parser *parser) in c_parser_objc_type_name() argument
6774 c_token *token = c_parser_peek_token (parser); in c_parser_objc_type_name()
6785 c_parser_consume_token (parser); in c_parser_objc_type_name()
6790 if (c_parser_next_token_starts_typename (parser)) in c_parser_objc_type_name()
6791 typename = c_parser_type_name (parser); in c_parser_objc_type_name()
6804 c_parser_objc_protocol_refs (c_parser *parser) in c_parser_objc_protocol_refs() argument
6807 gcc_assert (c_parser_next_token_is (parser, CPP_LESS)); in c_parser_objc_protocol_refs()
6808 c_parser_consume_token (parser); in c_parser_objc_protocol_refs()
6814 if (c_parser_next_token_is_not (parser, CPP_NAME)) in c_parser_objc_protocol_refs()
6816 c_parser_error (parser, "expected identifier"); in c_parser_objc_protocol_refs()
6819 id = c_parser_peek_token (parser)->value; in c_parser_objc_protocol_refs()
6821 c_parser_consume_token (parser); in c_parser_objc_protocol_refs()
6822 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_objc_protocol_refs()
6823 c_parser_consume_token (parser); in c_parser_objc_protocol_refs()
6827 c_parser_require (parser, CPP_GREATER, "expected %<>%>"); in c_parser_objc_protocol_refs()
6843 c_parser_objc_try_catch_statement (c_parser *parser) in c_parser_objc_try_catch_statement() argument
6847 gcc_assert (c_parser_next_token_is_keyword (parser, RID_AT_TRY)); in c_parser_objc_try_catch_statement()
6848 c_parser_consume_token (parser); in c_parser_objc_try_catch_statement()
6849 loc = c_parser_peek_token (parser)->location; in c_parser_objc_try_catch_statement()
6850 stmt = c_parser_compound_statement (parser); in c_parser_objc_try_catch_statement()
6852 while (c_parser_next_token_is_keyword (parser, RID_AT_CATCH)) in c_parser_objc_try_catch_statement()
6855 c_parser_consume_token (parser); in c_parser_objc_try_catch_statement()
6856 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_objc_try_catch_statement()
6859 if (c_parser_next_token_is (parser, CPP_ELLIPSIS)) in c_parser_objc_try_catch_statement()
6862 c_parser_consume_token (parser); in c_parser_objc_try_catch_statement()
6863 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_try_catch_statement()
6868 parm = c_parser_parameter_declaration (parser, NULL_TREE); in c_parser_objc_try_catch_statement()
6871 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL); in c_parser_objc_try_catch_statement()
6874 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_try_catch_statement()
6878 if (c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) in c_parser_objc_try_catch_statement()
6879 c_parser_compound_statement_nostart (parser); in c_parser_objc_try_catch_statement()
6882 if (c_parser_next_token_is_keyword (parser, RID_AT_FINALLY)) in c_parser_objc_try_catch_statement()
6886 c_parser_consume_token (parser); in c_parser_objc_try_catch_statement()
6887 finloc = c_parser_peek_token (parser)->location; in c_parser_objc_try_catch_statement()
6888 finstmt = c_parser_compound_statement (parser); in c_parser_objc_try_catch_statement()
6901 c_parser_objc_synch_compound_statement (c_parser *parser) in c_parser_objc_synch_compound_statement() argument
6904 if (!c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) in c_parser_objc_synch_compound_statement()
6907 c_parser_compound_statement_nostart (parser); in c_parser_objc_synch_compound_statement()
6921 c_parser_objc_synchronized_statement (c_parser *parser) in c_parser_objc_synchronized_statement() argument
6925 gcc_assert (c_parser_next_token_is_keyword (parser, RID_AT_SYNCHRONIZED)); in c_parser_objc_synchronized_statement()
6926 c_parser_consume_token (parser); in c_parser_objc_synchronized_statement()
6927 loc = c_parser_peek_token (parser)->location; in c_parser_objc_synchronized_statement()
6928 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_objc_synchronized_statement()
6930 expr = c_parser_expression (parser).value; in c_parser_objc_synchronized_statement()
6931 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_objc_synchronized_statement()
6936 stmt = c_parser_objc_synch_compound_statement (parser); in c_parser_objc_synchronized_statement()
6955 c_parser_objc_selector (c_parser *parser) in c_parser_objc_selector() argument
6957 c_token *token = c_parser_peek_token (parser); in c_parser_objc_selector()
6961 c_parser_consume_token (parser); in c_parser_objc_selector()
7007 c_parser_consume_token (parser); in c_parser_objc_selector()
7030 c_parser_objc_selector_arg (c_parser *parser) in c_parser_objc_selector_arg() argument
7032 tree sel = c_parser_objc_selector (parser); in c_parser_objc_selector_arg()
7034 if (sel && c_parser_next_token_is_not (parser, CPP_COLON)) in c_parser_objc_selector_arg()
7038 if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_objc_selector_arg()
7041 sel = c_parser_objc_selector (parser); in c_parser_objc_selector_arg()
7042 if (!sel && c_parser_next_token_is_not (parser, CPP_COLON)) in c_parser_objc_selector_arg()
7057 c_parser_objc_receiver (c_parser *parser) in c_parser_objc_receiver() argument
7059 if (c_parser_peek_token (parser)->type == CPP_NAME in c_parser_objc_receiver()
7060 && (c_parser_peek_token (parser)->id_kind == C_ID_TYPENAME in c_parser_objc_receiver()
7061 || c_parser_peek_token (parser)->id_kind == C_ID_CLASSNAME)) in c_parser_objc_receiver()
7063 tree id = c_parser_peek_token (parser)->value; in c_parser_objc_receiver()
7064 c_parser_consume_token (parser); in c_parser_objc_receiver()
7067 return c_parser_expression (parser).value; in c_parser_objc_receiver()
7086 c_parser_objc_message_args (c_parser *parser) in c_parser_objc_message_args() argument
7088 tree sel = c_parser_objc_selector (parser); in c_parser_objc_message_args()
7090 if (sel && c_parser_next_token_is_not (parser, CPP_COLON)) in c_parser_objc_message_args()
7095 if (!c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_objc_message_args()
7097 keywordexpr = c_parser_objc_keywordexpr (parser); in c_parser_objc_message_args()
7099 sel = c_parser_objc_selector (parser); in c_parser_objc_message_args()
7100 if (!sel && c_parser_next_token_is_not (parser, CPP_COLON)) in c_parser_objc_message_args()
7113 c_parser_objc_keywordexpr (c_parser *parser) in c_parser_objc_keywordexpr() argument
7115 tree list = c_parser_expr_list (parser, true); in c_parser_objc_keywordexpr()
7136 c_parser_pragma (c_parser *parser, enum pragma_context context) in c_parser_pragma() argument
7140 id = c_parser_peek_token (parser)->pragma_kind; in c_parser_pragma()
7149 c_parser_error (parser, "%<#pragma omp barrier%> may only be " in c_parser_pragma()
7153 c_parser_omp_barrier (parser); in c_parser_pragma()
7160 c_parser_error (parser, "%<#pragma omp flush%> may only be " in c_parser_pragma()
7164 c_parser_omp_flush (parser); in c_parser_pragma()
7168 c_parser_omp_threadprivate (parser); in c_parser_pragma()
7174 c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL); in c_parser_pragma()
7178 c_parser_error (parser, "%<#pragma GCC pch_preprocess%> must be first"); in c_parser_pragma()
7179 c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL); in c_parser_pragma()
7188 c_parser_error (parser, "expected declaration specifiers"); in c_parser_pragma()
7189 c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL); in c_parser_pragma()
7192 c_parser_omp_construct (parser); in c_parser_pragma()
7198 c_parser_consume_pragma (parser); in c_parser_pragma()
7204 parser->error = true; in c_parser_pragma()
7205 c_parser_skip_to_pragma_eol (parser); in c_parser_pragma()
7232 c_parser_pragma_pch_preprocess (c_parser *parser) in c_parser_pragma_pch_preprocess() argument
7236 c_parser_consume_pragma (parser); in c_parser_pragma_pch_preprocess()
7237 if (c_parser_next_token_is (parser, CPP_STRING)) in c_parser_pragma_pch_preprocess()
7239 name = c_parser_peek_token (parser)->value; in c_parser_pragma_pch_preprocess()
7240 c_parser_consume_token (parser); in c_parser_pragma_pch_preprocess()
7243 c_parser_error (parser, "expected string literal"); in c_parser_pragma_pch_preprocess()
7244 c_parser_skip_to_pragma_eol (parser); in c_parser_pragma_pch_preprocess()
7258 c_parser_omp_clause_name (c_parser *parser) in c_parser_omp_clause_name() argument
7262 if (c_parser_next_token_is_keyword (parser, RID_IF)) in c_parser_omp_clause_name()
7264 else if (c_parser_next_token_is_keyword (parser, RID_DEFAULT)) in c_parser_omp_clause_name()
7266 else if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_omp_clause_name()
7268 const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value); in c_parser_omp_clause_name()
7314 c_parser_consume_token (parser); in c_parser_omp_clause_name()
7346 c_parser_omp_variable_list (c_parser *parser, enum omp_clause_code kind, in c_parser_omp_variable_list() argument
7349 if (c_parser_next_token_is_not (parser, CPP_NAME) in c_parser_omp_variable_list()
7350 || c_parser_peek_token (parser)->id_kind != C_ID_ID) in c_parser_omp_variable_list()
7351 c_parser_error (parser, "expected identifier"); in c_parser_omp_variable_list()
7353 while (c_parser_next_token_is (parser, CPP_NAME) in c_parser_omp_variable_list()
7354 && c_parser_peek_token (parser)->id_kind == C_ID_ID) in c_parser_omp_variable_list()
7356 tree t = lookup_name (c_parser_peek_token (parser)->value); in c_parser_omp_variable_list()
7359 undeclared_variable (c_parser_peek_token (parser)->value, in c_parser_omp_variable_list()
7360 c_parser_peek_token (parser)->location); in c_parser_omp_variable_list()
7373 c_parser_consume_token (parser); in c_parser_omp_variable_list()
7375 if (c_parser_next_token_is_not (parser, CPP_COMMA)) in c_parser_omp_variable_list()
7378 c_parser_consume_token (parser); in c_parser_omp_variable_list()
7388 c_parser_omp_var_list_parens (c_parser *parser, enum tree_code kind, tree list) in c_parser_omp_var_list_parens() argument
7390 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_var_list_parens()
7392 list = c_parser_omp_variable_list (parser, kind, list); in c_parser_omp_var_list_parens()
7393 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_var_list_parens()
7402 c_parser_omp_clause_copyin (c_parser *parser, tree list) in c_parser_omp_clause_copyin() argument
7404 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_COPYIN, list); in c_parser_omp_clause_copyin()
7411 c_parser_omp_clause_copyprivate (c_parser *parser, tree list) in c_parser_omp_clause_copyprivate() argument
7413 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_COPYPRIVATE, list); in c_parser_omp_clause_copyprivate()
7420 c_parser_omp_clause_default (c_parser *parser, tree list) in c_parser_omp_clause_default() argument
7425 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_clause_default()
7427 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_omp_clause_default()
7429 const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value); in c_parser_omp_clause_default()
7449 c_parser_consume_token (parser); in c_parser_omp_clause_default()
7454 c_parser_error (parser, "expected %<none%> or %<shared%>"); in c_parser_omp_clause_default()
7456 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_clause_default()
7473 c_parser_omp_clause_firstprivate (c_parser *parser, tree list) in c_parser_omp_clause_firstprivate() argument
7475 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_FIRSTPRIVATE, list); in c_parser_omp_clause_firstprivate()
7482 c_parser_omp_clause_if (c_parser *parser, tree list) in c_parser_omp_clause_if() argument
7484 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_omp_clause_if()
7486 tree t = c_parser_paren_condition (parser); in c_parser_omp_clause_if()
7497 c_parser_error (parser, "expected %<(%>"); in c_parser_omp_clause_if()
7506 c_parser_omp_clause_lastprivate (c_parser *parser, tree list) in c_parser_omp_clause_lastprivate() argument
7508 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_LASTPRIVATE, list); in c_parser_omp_clause_lastprivate()
7515 c_parser_omp_clause_nowait (c_parser *parser ATTRIBUTE_UNUSED, tree list) in c_parser_omp_clause_nowait()
7530 c_parser_omp_clause_num_threads (c_parser *parser, tree list) in c_parser_omp_clause_num_threads() argument
7532 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_clause_num_threads()
7534 tree c, t = c_parser_expression (parser).value; in c_parser_omp_clause_num_threads()
7536 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_clause_num_threads()
7540 c_parser_error (parser, "expected integer expression"); in c_parser_omp_clause_num_threads()
7568 c_parser_omp_clause_ordered (c_parser *parser ATTRIBUTE_UNUSED, tree list) in c_parser_omp_clause_ordered()
7583 c_parser_omp_clause_private (c_parser *parser, tree list) in c_parser_omp_clause_private() argument
7585 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_PRIVATE, list); in c_parser_omp_clause_private()
7595 c_parser_omp_clause_reduction (c_parser *parser, tree list) in c_parser_omp_clause_reduction() argument
7597 if (c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_clause_reduction()
7601 switch (c_parser_peek_token (parser)->type) in c_parser_omp_clause_reduction()
7628 c_parser_error (parser, in c_parser_omp_clause_reduction()
7631 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, 0); in c_parser_omp_clause_reduction()
7634 c_parser_consume_token (parser); in c_parser_omp_clause_reduction()
7635 if (c_parser_require (parser, CPP_COLON, "expected %<:%>")) in c_parser_omp_clause_reduction()
7639 nl = c_parser_omp_variable_list (parser, OMP_CLAUSE_REDUCTION, list); in c_parser_omp_clause_reduction()
7645 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_clause_reduction()
7659 c_parser_omp_clause_schedule (c_parser *parser, tree list) in c_parser_omp_clause_schedule() argument
7663 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_clause_schedule()
7668 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_omp_clause_schedule()
7670 tree kind = c_parser_peek_token (parser)->value; in c_parser_omp_clause_schedule()
7697 else if (c_parser_next_token_is_keyword (parser, RID_STATIC)) in c_parser_omp_clause_schedule()
7702 c_parser_consume_token (parser); in c_parser_omp_clause_schedule()
7703 if (c_parser_next_token_is (parser, CPP_COMMA)) in c_parser_omp_clause_schedule()
7705 c_parser_consume_token (parser); in c_parser_omp_clause_schedule()
7707 t = c_parser_expr_no_commas (parser, NULL).value; in c_parser_omp_clause_schedule()
7715 c_parser_error (parser, "expected integer expression"); in c_parser_omp_clause_schedule()
7717 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_clause_schedule()
7720 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, in c_parser_omp_clause_schedule()
7728 c_parser_error (parser, "invalid schedule kind"); in c_parser_omp_clause_schedule()
7729 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, 0); in c_parser_omp_clause_schedule()
7737 c_parser_omp_clause_shared (c_parser *parser, tree list) in c_parser_omp_clause_shared() argument
7739 return c_parser_omp_var_list_parens (parser, OMP_CLAUSE_SHARED, list); in c_parser_omp_clause_shared()
7747 c_parser_omp_all_clauses (c_parser *parser, unsigned int mask, in c_parser_omp_all_clauses() argument
7752 while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) in c_parser_omp_all_clauses()
7754 const pragma_omp_clause c_kind = c_parser_omp_clause_name (parser); in c_parser_omp_all_clauses()
7761 clauses = c_parser_omp_clause_copyin (parser, clauses); in c_parser_omp_all_clauses()
7765 clauses = c_parser_omp_clause_copyprivate (parser, clauses); in c_parser_omp_all_clauses()
7769 clauses = c_parser_omp_clause_default (parser, clauses); in c_parser_omp_all_clauses()
7773 clauses = c_parser_omp_clause_firstprivate (parser, clauses); in c_parser_omp_all_clauses()
7777 clauses = c_parser_omp_clause_if (parser, clauses); in c_parser_omp_all_clauses()
7781 clauses = c_parser_omp_clause_lastprivate (parser, clauses); in c_parser_omp_all_clauses()
7785 clauses = c_parser_omp_clause_nowait (parser, clauses); in c_parser_omp_all_clauses()
7789 clauses = c_parser_omp_clause_num_threads (parser, clauses); in c_parser_omp_all_clauses()
7793 clauses = c_parser_omp_clause_ordered (parser, clauses); in c_parser_omp_all_clauses()
7797 clauses = c_parser_omp_clause_private (parser, clauses); in c_parser_omp_all_clauses()
7801 clauses = c_parser_omp_clause_reduction (parser, clauses); in c_parser_omp_all_clauses()
7805 clauses = c_parser_omp_clause_schedule (parser, clauses); in c_parser_omp_all_clauses()
7809 clauses = c_parser_omp_clause_shared (parser, clauses); in c_parser_omp_all_clauses()
7813 c_parser_error (parser, "expected %<#pragma omp%> clause"); in c_parser_omp_all_clauses()
7817 if (((mask >> c_kind) & 1) == 0 && !parser->error) in c_parser_omp_all_clauses()
7827 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_all_clauses()
7841 c_parser_omp_structured_block (c_parser *parser) in c_parser_omp_structured_block() argument
7844 c_parser_statement (parser); in c_parser_omp_structured_block()
7860 c_parser_omp_atomic (c_parser *parser) in c_parser_omp_atomic() argument
7866 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_atomic()
7868 lhs = c_parser_unary_expression (parser).value; in c_parser_omp_atomic()
7873 c_parser_skip_to_end_of_block_or_statement (parser); in c_parser_omp_atomic()
7891 switch (c_parser_peek_token (parser)->type) in c_parser_omp_atomic()
7921 c_parser_error (parser, in c_parser_omp_atomic()
7926 c_parser_consume_token (parser); in c_parser_omp_atomic()
7927 rhs = c_parser_expression (parser).value; in c_parser_omp_atomic()
7933 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_omp_atomic()
7942 c_parser_omp_barrier (c_parser *parser) in c_parser_omp_barrier() argument
7944 c_parser_consume_pragma (parser); in c_parser_omp_barrier()
7945 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_barrier()
7956 c_parser_omp_critical (c_parser *parser) in c_parser_omp_critical() argument
7960 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_omp_critical()
7962 c_parser_consume_token (parser); in c_parser_omp_critical()
7963 if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_omp_critical()
7965 name = c_parser_peek_token (parser)->value; in c_parser_omp_critical()
7966 c_parser_consume_token (parser); in c_parser_omp_critical()
7967 c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_critical()
7970 c_parser_error (parser, "expected identifier"); in c_parser_omp_critical()
7972 else if (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) in c_parser_omp_critical()
7973 c_parser_error (parser, "expected %<(%> or end of line"); in c_parser_omp_critical()
7974 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_critical()
7976 stmt = c_parser_omp_structured_block (parser); in c_parser_omp_critical()
7987 c_parser_omp_flush (c_parser *parser) in c_parser_omp_flush() argument
7989 c_parser_consume_pragma (parser); in c_parser_omp_flush()
7990 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_omp_flush()
7991 c_parser_omp_var_list_parens (parser, 0, NULL); in c_parser_omp_flush()
7992 else if (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL)) in c_parser_omp_flush()
7993 c_parser_error (parser, "expected %<(%> or end of line"); in c_parser_omp_flush()
7994 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_flush()
8004 c_parser_omp_for_loop (c_parser *parser) in c_parser_omp_for_loop() argument
8009 if (!c_parser_next_token_is_keyword (parser, RID_FOR)) in c_parser_omp_for_loop()
8011 c_parser_error (parser, "for statement expected"); in c_parser_omp_for_loop()
8014 loc = c_parser_peek_token (parser)->location; in c_parser_omp_for_loop()
8015 c_parser_consume_token (parser); in c_parser_omp_for_loop()
8017 if (!c_parser_require (parser, CPP_OPEN_PAREN, "expected %<(%>")) in c_parser_omp_for_loop()
8021 if (c_parser_next_token_starts_declspecs (parser)) in c_parser_omp_for_loop()
8024 c_parser_declaration_or_fndef (parser, true, true, true, true, NULL); in c_parser_omp_for_loop()
8030 else if (c_parser_next_token_is (parser, CPP_NAME) in c_parser_omp_for_loop()
8031 && c_parser_peek_2nd_token (parser)->type == CPP_EQ) in c_parser_omp_for_loop()
8033 decl = c_parser_postfix_expression (parser).value; in c_parser_omp_for_loop()
8035 c_parser_require (parser, CPP_EQ, "expected %<=%>"); in c_parser_omp_for_loop()
8037 init = c_parser_expr_no_commas (parser, NULL).value; in c_parser_omp_for_loop()
8041 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_omp_for_loop()
8048 if (c_parser_next_token_is_not (parser, CPP_SEMICOLON)) in c_parser_omp_for_loop()
8050 cond = c_parser_expression_conv (parser).value; in c_parser_omp_for_loop()
8055 c_parser_skip_until_found (parser, CPP_SEMICOLON, "expected %<;%>"); in c_parser_omp_for_loop()
8059 if (c_parser_next_token_is_not (parser, CPP_CLOSE_PAREN)) in c_parser_omp_for_loop()
8060 incr = c_process_expr_stmt (c_parser_expression (parser).value); in c_parser_omp_for_loop()
8061 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_for_loop()
8070 add_stmt (c_parser_c99_block_statement (parser)); in c_parser_omp_for_loop()
8085 c_parser_error (parser, "expected iteration declaration or initialization"); in c_parser_omp_for_loop()
8086 c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); in c_parser_omp_for_loop()
8106 c_parser_omp_for (c_parser *parser) in c_parser_omp_for() argument
8110 clauses = c_parser_omp_all_clauses (parser, OMP_FOR_CLAUSE_MASK, in c_parser_omp_for()
8114 ret = c_parser_omp_for_loop (parser); in c_parser_omp_for()
8129 c_parser_omp_master (c_parser *parser) in c_parser_omp_master() argument
8131 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_master()
8132 return c_finish_omp_master (c_parser_omp_structured_block (parser)); in c_parser_omp_master()
8141 c_parser_omp_ordered (c_parser *parser) in c_parser_omp_ordered() argument
8143 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_ordered()
8144 return c_finish_omp_ordered (c_parser_omp_structured_block (parser)); in c_parser_omp_ordered()
8157 c_parser_omp_sections_scope (c_parser *parser) in c_parser_omp_sections_scope() argument
8163 if (!c_parser_require (parser, CPP_OPEN_BRACE, "expected %<{%>")) in c_parser_omp_sections_scope()
8166 parser->error = false; in c_parser_omp_sections_scope()
8172 loc = c_parser_peek_token (parser)->location; in c_parser_omp_sections_scope()
8173 if (c_parser_peek_token (parser)->pragma_kind != PRAGMA_OMP_SECTION) in c_parser_omp_sections_scope()
8179 c_parser_statement (parser); in c_parser_omp_sections_scope()
8181 if (c_parser_peek_token (parser)->pragma_kind == PRAGMA_OMP_SECTION) in c_parser_omp_sections_scope()
8183 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_omp_sections_scope()
8185 if (c_parser_next_token_is (parser, CPP_EOF)) in c_parser_omp_sections_scope()
8197 if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) in c_parser_omp_sections_scope()
8199 if (c_parser_next_token_is (parser, CPP_EOF)) in c_parser_omp_sections_scope()
8202 loc = c_parser_peek_token (parser)->location; in c_parser_omp_sections_scope()
8203 if (c_parser_peek_token (parser)->pragma_kind == PRAGMA_OMP_SECTION) in c_parser_omp_sections_scope()
8205 c_parser_consume_pragma (parser); in c_parser_omp_sections_scope()
8206 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_sections_scope()
8215 substmt = c_parser_omp_structured_block (parser); in c_parser_omp_sections_scope()
8220 c_parser_skip_until_found (parser, CPP_CLOSE_BRACE, in c_parser_omp_sections_scope()
8245 c_parser_omp_sections (c_parser *parser) in c_parser_omp_sections() argument
8249 clauses = c_parser_omp_all_clauses (parser, OMP_SECTIONS_CLAUSE_MASK, in c_parser_omp_sections()
8253 ret = c_parser_omp_sections_scope (parser); in c_parser_omp_sections()
8279 c_parser_omp_parallel (c_parser *parser) in c_parser_omp_parallel() argument
8286 if (c_parser_next_token_is_keyword (parser, RID_FOR)) in c_parser_omp_parallel()
8288 c_parser_consume_token (parser); in c_parser_omp_parallel()
8294 else if (c_parser_next_token_is (parser, CPP_NAME)) in c_parser_omp_parallel()
8296 const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value); in c_parser_omp_parallel()
8299 c_parser_consume_token (parser); in c_parser_omp_parallel()
8307 clauses = c_parser_omp_all_clauses (parser, mask, p_name); in c_parser_omp_parallel()
8313 c_parser_statement (parser); in c_parser_omp_parallel()
8320 stmt = c_parser_omp_for_loop (parser); in c_parser_omp_parallel()
8330 stmt = c_parser_omp_sections_scope (parser); in c_parser_omp_parallel()
8356 c_parser_omp_single (c_parser *parser) in c_parser_omp_single() argument
8362 = c_parser_omp_all_clauses (parser, OMP_SINGLE_CLAUSE_MASK, in c_parser_omp_single()
8364 OMP_SINGLE_BODY (stmt) = c_parser_omp_structured_block (parser); in c_parser_omp_single()
8373 c_parser_omp_construct (c_parser *parser) in c_parser_omp_construct() argument
8379 loc = c_parser_peek_token (parser)->location; in c_parser_omp_construct()
8380 p_kind = c_parser_peek_token (parser)->pragma_kind; in c_parser_omp_construct()
8381 c_parser_consume_pragma (parser); in c_parser_omp_construct()
8392 c_parser_omp_atomic (parser); in c_parser_omp_construct()
8395 stmt = c_parser_omp_critical (parser); in c_parser_omp_construct()
8398 stmt = c_parser_omp_for (parser); in c_parser_omp_construct()
8401 stmt = c_parser_omp_master (parser); in c_parser_omp_construct()
8404 stmt = c_parser_omp_ordered (parser); in c_parser_omp_construct()
8407 stmt = c_parser_omp_parallel (parser); in c_parser_omp_construct()
8410 stmt = c_parser_omp_sections (parser); in c_parser_omp_construct()
8413 stmt = c_parser_omp_single (parser); in c_parser_omp_construct()
8428 c_parser_omp_threadprivate (c_parser *parser) in c_parser_omp_threadprivate() argument
8432 c_parser_consume_pragma (parser); in c_parser_omp_threadprivate()
8433 vars = c_parser_omp_var_list_parens (parser, 0, NULL); in c_parser_omp_threadprivate()
8466 c_parser_skip_to_pragma_eol (parser); in c_parser_omp_threadprivate()
9169 c_parser_block_id (c_parser* parser) in c_parser_block_id() argument
9175 c_parser_declspecs (parser, specs, false, true, true); in c_parser_block_id()
9178 c_parser_error (parser, "expected specifier-qualifier-list"); in c_parser_block_id()
9183 declarator = c_parser_declarator (parser, specs->type_seen_p, in c_parser_block_id()
9203 c_parser_block_literal_expr (c_parser* parser) in c_parser_block_literal_expr() argument
9225 c_parser_consume_token (parser); /* eat '^' */ in c_parser_block_literal_expr()
9228 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_block_literal_expr()
9229 attributes = c_parser_attributes (parser); in c_parser_block_literal_expr()
9232 if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)) in c_parser_block_literal_expr()
9235 c_parser_consume_token (parser); in c_parser_block_literal_expr()
9238 args = c_parser_parms_declarator (parser, true, NULL_TREE); in c_parser_block_literal_expr()
9253 else if (c_parser_next_token_is_not (parser, CPP_OPEN_BRACE)) in c_parser_block_literal_expr()
9266 decl = c_parser_block_id (parser); in c_parser_block_literal_expr()
9335 if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE)) in c_parser_block_literal_expr()
9336 attributes = c_parser_attributes (parser); in c_parser_block_literal_expr()
9343 if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) { in c_parser_block_literal_expr()
9350 c_parser_consume_token (parser); /* Consure '{'. */ in c_parser_block_literal_expr()
9352 c_parser_compound_statement_nostart (parser); in c_parser_block_literal_expr()
9361 expr = c_parser_cast_expression (parser, NULL); in c_parser_block_literal_expr()