/* * Automatically generated from the files: * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/c/syntax/syntax.sid * and * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/c/syntax/syntax.act * by: * /mnt/gmirror/ports/lang/TenDRA/work/tendra/obj/utilities/sid/sid */ /* BEGINNING OF HEADER */ #define __SID_SPLIT /* * Crown Copyright (c) 1997, 1998 * * This TenDRA(r) Computer Program is subject to Copyright * owned by the United Kingdom Secretary of State for Defence * acting through the Defence Evaluation and Research Agency * (DERA). It is made available to Recipients with a * royalty-free licence for its use, reproduction, transfer * to other parties and amendment for any purpose not excluding * product development provided that any such use et cetera * shall be deemed to be acceptance of the following conditions:- * * (1) Its Recipients shall ensure that this Notice is * reproduced upon any copies or amended versions of it; * * (2) Any amended version of it shall be clearly marked to * show both the nature of and the organisation responsible * for the relevant amendment or amendments; * * (3) Its onward transfer from a recipient to another * party shall be deemed to be that party's acceptance of * these conditions; * * (4) DERA gives no warranty or assurance as to its * quality or suitability for any purpose and DERA accepts * no liability whatsoever in relation to any use to which * it may be put. */ #include "config.h" #include "producer.h" #include "c_types.h" #include "exp_ops.h" #include "hashid_ops.h" #include "id_ops.h" #include "type_ops.h" #include "error.h" #include "catalog.h" #include "option.h" #include "access.h" #include "allocate.h" #include "assign.h" #include "basetype.h" #include "cast.h" #include "chktype.h" #include "class.h" #include "constant.h" #include "construct.h" #include "convert.h" #include "declare.h" #include "derive.h" #include "dump.h" #include "exception.h" #include "expression.h" #include "function.h" #include "hash.h" #include "identifier.h" #include "initialise.h" #include "inttype.h" #include "label.h" #include "lex.h" #include "literal.h" #include "member.h" #include "namespace.h" #include "parse.h" #include "pragma.h" #include "predict.h" #include "preproc.h" #include "redeclare.h" #include "rewrite.h" #include "statement.h" #include "symbols.h" #include "template.h" #include "tokdef.h" #include "token.h" #include "typeid.h" #include "variable.h" /* * COMPOUND TYPE ALIASES * * These are the aliases for the compound types used in the parser. */ typedef LIST (EXP) SID_LIST_EXP; /* * FUNCTION DECLARATIONS * * The function declarations are included at this point so that the * type definitions are in scope. */ #include "syntax.h" /* * COMPILATION MODE * * The output of sid is automatically generated. Hence it is not * necessarily appropriate to apply the same level of checking to this * as to the rest of the program. These pragmas describe the relaxations * allowed for the sid output. */ #if FS_TENDRA #pragma TenDRA begin #pragma TenDRA const conditional allow #pragma TenDRA unreachable code allow #pragma TenDRA variable analysis off #endif void ZR846 (OFFSET ZI452, TYPE ZI573, OFFSET *ZO857, TYPE *ZO858) { OFFSET ZI857; TYPE ZI858; if ((CURRENT_TERMINAL) == 358) { return; } ZL2_846:; { OFFSET ZI420; TYPE ZI399; ZR845 (ZI452, ZI573, &ZI420, &ZI399); { switch (CURRENT_TERMINAL) { case lex_dot: case lex_open_Hsquare_H1: { ZI452 = ZI420; ZI573 = ZI399; goto ZL2_846; } /*UNREACHED*/ default: { ZI857 = ZI420; ZI858 = ZI399; } break; case 358: RESTORE_LEXER; goto ZL1; } } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO857 = ZI857; *ZO858 = ZI858; } void ZR927 (EXP ZI925, EXP *ZO926) { EXP ZI926; ZL2_927:; switch (CURRENT_TERMINAL) { case lex_greater: case lex_greater_Heq: case lex_less: case lex_less_Heq: { int ZI464; EXP ZI452; EXP ZI408; { (ZI464) = crt_lex_token; } { switch (CURRENT_TERMINAL) { case lex_greater: { ADVANCE_LEXER; } break; case lex_greater_Heq: { ADVANCE_LEXER; } break; case lex_less: { ADVANCE_LEXER; } break; case lex_less_Heq: { ADVANCE_LEXER; } break; default: goto ZL1; } } ZR486 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* op will be in its primary form */ (ZI408) = make_relation_exp ((ZI464), (ZI925), (ZI452)); } ZI925 = ZI408; goto ZL2_927; } /*UNREACHED*/ default: { ZI926 = ZI925; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO926 = ZI926; } void ZR815 (EXP *ZO883) { EXP ZI883; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI471; EXP ZI424; switch (CURRENT_TERMINAL) { case lex_hash_Hif: { ZI471 = crt_token->pp_data.exp; } break; default: goto ZL1; } ADVANCE_LEXER; { EXP c = crt_hash_cond; crt_hash_cond = make_if_cond ((ZI471), c); (ZI424) = c; } { target_decl (lex_if, (ZI471)); } ZR814 (); ZR884 (ZI424, &ZI883); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO883 = ZI883; } void ZR665 (TYPE *ZO399) { TYPE ZI399; if ((CURRENT_TERMINAL) == 358) { return; } { switch (CURRENT_TERMINAL) { case lex_enum: break; default: goto ZL1; } ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_statement_Hname: { IDENTIFIER ZI403; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } ZR1065 (&ZI403, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_open_Hbrace_H1: { IDENTIFIER ZI403; IDENTIFIER ZI424; IDENTIFIER ZI680; { HASHID nm = lookup_anon (); (ZI403) = DEREF_id (hashid_id (nm)); } { (ZI424) = begin_enum_defn ((ZI403), NULL_type); no_type_defns++; } { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR691 (&ZI424); { if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI680) = end_enum_defn ((ZI424)); } { MAKE_type_pre (cv_none, btype_alias, qual_none, (ZI399)); COPY_id (type_name ((ZI399)), (ZI680)); have_type_specifier = 1; } } break; default: goto ZL1; } } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; } void ZR752 (TYPE *ZO399, IDENTIFIER *ZO403) { TYPE ZI399; IDENTIFIER ZI403; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_statement_Hname: case lex_open_Hround: { ZR761 (&ZI399, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { TYPE ZI424; TYPE ZI427; ZR741 (&ZI424); ZR752 (&ZI427, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = (IS_NULL_type ((ZI427)) ? (ZI424): inject_pre_type ((ZI427), (ZI424), 0)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; *ZO403 = ZI403; } void ZR1056 (TYPE *ZO868, IDENTIFIER *ZO869) { TYPE ZI868; IDENTIFIER ZI869; if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER ZI1057; TYPE ZI1058; TYPE ZI399; IDENTIFIER ZI403; { /* Resolve parameter declarators from type names */ (ZI0) = predict_param (); } if (!ZI0) goto ZL2; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI1057 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI1057 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI1057 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { (ZI1058) = NULL_type; } { IDENTIFIER pid = underlying_id ((ZI1057)); DEREF_loc (id_loc (pid), decl_loc); } ZR870 (ZI1058, ZI1057, &ZI399, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_open_Hround: { TYPE ZI399; IDENTIFIER ZI403; ADVANCE_LEXER; ZR1056 (&ZI399, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_weak: { IDENTIFIER ZI1055; int ZI757; TYPE ZI1061; IDENTIFIER ZI1062; TYPE ZI399; IDENTIFIER ZI403; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_open_Hround: break; default: goto ZL1; } ADVANCE_LEXER; { (ZI1055) = NULL_id; } { func_type_defn (0); begin_param ((ZI1055)); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR760 (&ZI757); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1061) = make_func_type (NULL_type, ((ZI757) | FUNC_WEAK), cv_c, empty_type_set); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; { end_param (); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 1; } { HASHID nm = lookup_anon (); (ZI1062) = DEREF_id (hashid_id (nm)); } { IDENTIFIER pid = underlying_id ((ZI1062)); DEREF_loc (id_loc (pid), decl_loc); } ZR870 (ZI1061, ZI1062, &ZI399, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_open_Hsquare_H1: { EXP ZI408; TYPE ZI1059; IDENTIFIER ZI1060; TYPE ZI399; IDENTIFIER ZI403; { { switch (CURRENT_TERMINAL) { case lex_open_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR759 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { NAT n = make_array_dim ((ZI408)); MAKE_type_array (cv_none, NULL_type, n, (ZI1059)); } { { switch (CURRENT_TERMINAL) { case lex_close_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { HASHID nm = lookup_anon (); (ZI1060) = DEREF_id (hashid_id (nm)); } { IDENTIFIER pid = underlying_id ((ZI1060)); DEREF_loc (id_loc (pid), decl_loc); } ZR870 (ZI1059, ZI1060, &ZI399, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { TYPE ZI424; TYPE ZI427; IDENTIFIER ZI403; TYPE ZI399; ZR741 (&ZI424); ZR774 (&ZI427, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = (IS_NULL_type ((ZI427)) ? (ZI424): inject_pre_type ((ZI427), (ZI424), 0)); } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_type_Hname: case lex_complex_Htype: case lex_close_Hround: case lex_ellipsis: case lex_auto: case lex_char: case lex_const: case lex_double: case lex_enum: case lex_extern: case lex_float: case lex_int: case lex_long: case lex_register: case lex_short: case lex_signed: case lex_static: case lex_struct: case lex_typedef: case lex_union: case lex_unsigned: case lex_void: case lex_volatile: case lex_restrict: case lex_bool: case lex_inline: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { IDENTIFIER ZI1054; TYPE ZI573; TYPE ZI399; IDENTIFIER ZI403; { (ZI1054) = NULL_id; } { func_type_defn (0); begin_param ((ZI1054)); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR765 (&ZI573); switch (CURRENT_TERMINAL) { case lex_close_Hround: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; ZI399 = ZI573; { end_param (); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 1; } { HASHID nm = lookup_anon (); (ZI403) = DEREF_id (hashid_id (nm)); } { IDENTIFIER pid = underlying_id ((ZI403)); DEREF_loc (id_loc (pid), decl_loc); } ZR870 (ZI399, ZI403, &ZI868, &ZI869); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO868 = ZI868; *ZO869 = ZI869; } void ZR486 (EXP *ZO930) { EXP ZI930; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI408; ZR483 (&ZI408); ZR931 (ZI408, &ZI930); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO930 = ZI930; } void ZR605 (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI420; EXP ZI452; ZR621 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI452) = bind_temporary ((ZI420)); } { MAKE_exp_location (type_void, crt_loc, (ZI452), (ZI408)); } switch (CURRENT_TERMINAL) { case lex_semicolon: break; default: goto ZL1; } ADVANCE_LEXER; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR686 (IDENTIFIER ZI408) { if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER ZI403; EXP ZI471; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { IDENTIFIER pid = underlying_id ((ZI403)); DEREF_loc (id_loc (pid), decl_loc); } { switch (CURRENT_TERMINAL) { case lex_assign: { ADVANCE_LEXER; ZR522 (&ZI471); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI471) = NULL_exp; } } break; } } { IGNORE make_enumerator ((ZI408), (ZI403), (ZI471)); } } return; ZL1:; SAVE_LEXER (358); return; } void ZR762 (TYPE ZI424, TYPE *ZO399, IDENTIFIER *ZO403) { TYPE ZI399; IDENTIFIER ZI403; if ((CURRENT_TERMINAL) == 358) { return; } { TYPE ZI427; ZR752 (&ZI427, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = (IS_NULL_type ((ZI427)) ? (ZI424): inject_pre_type ((ZI427), (ZI424), 1)); } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; *ZO403 = ZI403; } void ZR802 (IDENTIFIER ZI552, EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_assign: { ADVANCE_LEXER; ZR798 (ZI552, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI408) = NULL_exp; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void parse_file (TYPE ZI399, DECL_SPEC ZI611) { if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI947; TYPE ZI948; CV_SPEC ZI949; DECL_SPEC ZI950; BASE_TYPE ZI951; TYPE ZI952; CV_SPEC ZI953; DECL_SPEC ZI954; EXP ZI408; { /* Resolve declaration-specifiers from other declarators */ (ZI0) = predict_dspec (0); } if (!ZI0) goto ZL2; ZR723 (&ZI947, &ZI948, &ZI949, &ZI950); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* A type-name can be a declarator-id */ if (have_type_specifier && crt_lex_token == lex_type_Hname) { crt_lex_token = lex_identifier; } } ZR734 (&ZI947, &ZI948, &ZI949, &ZI950, &ZI951, &ZI952, &ZI953, &ZI954); ZR955 (&ZI951, &ZI952, &ZI953, &ZI954, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { external_declaration ((ZI408), 1); } ZR813 (); switch (CURRENT_TERMINAL) { case lex_eof: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_eof: { ADVANCE_LEXER; } break; case lex_semicolon: { ADVANCE_LEXER; { report (crt_loc, ERR_dcl_dcl_semicolon ()); } ZR813 (); switch (CURRENT_TERMINAL) { case lex_eof: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; } break; case lex_asm: { EXP ZI408; ZR629 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { external_declaration ((ZI408), 1); } ZR813 (); switch (CURRENT_TERMINAL) { case lex_eof: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; } break; case lex_hash_Hif: case lex_hash_Hpragma: { ZR816 (); ZR813 (); switch (CURRENT_TERMINAL) { case lex_eof: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; } break; case lex_identifier: case lex_type_Hname: case lex_statement_Hname: case lex_open_Hround: case lex_star: { BASE_TYPE ZI666; TYPE ZI697; CV_SPEC ZI637; DECL_SPEC ZI726; TYPE ZI956; DECL_SPEC ZI957; TYPE ZI573; IDENTIFIER ZI403; EXP ZI408; { (ZI666) = btype_none; } { (ZI697) = NULL_type; } { (ZI637) = cv_none; } { (ZI726) = dspec_none; } { /* Complete a declaration specifier and a type */ (ZI957) = complete_dspec ((ZI726), (ZI666), (ZI697), (ZI637)); (ZI956) = complete_pre_type ((ZI666), (ZI697), (ZI637), 0); have_type_specifier = 0; } ZR762 (ZI956, &ZI573, &ZI403); ZR829 (&ZI666, &ZI956, &ZI957, &ZI573, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = NULL_exp; } { external_declaration ((ZI408), 1); } ZR813 (); switch (CURRENT_TERMINAL) { case lex_eof: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; } break; default: goto ZL1; } return; ZL1:; { { /* Unrecoverable syntax errors */ ERROR err = ERR_lex_parse (crt_token); err = concat_error (err, ERR_lex_abort ()); report (crt_loc, err); have_syntax_error = 1; } } ZL0:; } void ZR931 (EXP ZI929, EXP *ZO930) { EXP ZI930; ZL2_931:; switch (CURRENT_TERMINAL) { case lex_lshift: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR483 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_shift_exp (lex_lshift, (ZI929), (ZI452)); } ZI929 = ZI408; goto ZL2_931; } /*UNREACHED*/ case lex_rshift: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR483 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_shift_exp (lex_rshift, (ZI929), (ZI452)); } ZI929 = ZI408; goto ZL2_931; } /*UNREACHED*/ default: { ZI930 = ZI929; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO930 = ZI930; } void parse_offset (OFFSET ZI452, TYPE ZI573, OFFSET *ZO420, TYPE *ZO399) { OFFSET ZI420; TYPE ZI399; if ((CURRENT_TERMINAL) == 358) { return; } { OFFSET ZI471; TYPE ZI847; ZR844 (ZI452, ZI573, &ZI471, &ZI847); { switch (CURRENT_TERMINAL) { case lex_dot: case lex_open_Hsquare_H1: { ZR846 (ZI471, ZI847, &ZI420, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { ZI420 = ZI471; ZI399 = ZI847; } break; case 358: RESTORE_LEXER; goto ZL1; } } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } ZI420 = ZI452; ZI399 = ZI573; } ZL0:; *ZO420 = ZI420; *ZO399 = ZI399; } void parse_nat (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { ZR522 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI408) = NULL_exp; } } ZL0:; *ZO408 = ZI408; } void ZR520 (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { ZR423 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void parse_param (TYPE ZI573, int ZI424, IDENTIFIER *ZO552) { IDENTIFIER ZI552; if ((CURRENT_TERMINAL) == 358) { return; } { ZR780 (&ZI552); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI552) = NULL_id; } } ZL0:; *ZO552 = ZI552; } void ZR695 (BASE_TYPE *ZO666, TYPE *ZO399, CV_SPEC *ZO637) { BASE_TYPE ZI666; TYPE ZI399; CV_SPEC ZI637; if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI696; TYPE ZI697; CV_SPEC ZI698; ZR694 (&ZI696, &ZI697, &ZI698); { switch (CURRENT_TERMINAL) { case lex_type_Hname: case lex_complex_Htype: case lex_char: case lex_const: case lex_double: case lex_enum: case lex_float: case lex_int: case lex_long: case lex_short: case lex_signed: case lex_struct: case lex_union: case lex_unsigned: case lex_void: case lex_volatile: case lex_restrict: case lex_bool: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { BASE_TYPE ZI700; TYPE ZI701; CV_SPEC ZI702; ZR695 (&ZI700, &ZI701, &ZI702); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if ((ZI696) & (ZI700)) { (ZI666) = join_pre_types ((ZI696), (ZI700)); } else { (ZI666) = ((ZI696) | (ZI700)); } } { /* Join two partial types */ if (IS_NULL_type ((ZI697))) { (ZI399) = (ZI701); } else if (IS_NULL_type ((ZI701))) { (ZI399) = (ZI697); } else { report (crt_loc, ERR_dcl_type_simple_many ((ZI697), (ZI701))); (ZI399) = (ZI701); } } { CV_SPEC c = ((ZI698) & (ZI702)); if (c) report (crt_loc, ERR_dcl_type_cv_dup (c)); (ZI637) = ((ZI698) | (ZI702)); } } break; default: { ZI666 = ZI696; ZI399 = ZI697; ZI637 = ZI698; } break; case 358: RESTORE_LEXER; goto ZL1; } } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO666 = ZI666; *ZO399 = ZI399; *ZO637 = ZI637; } void ZR935 (EXP ZI933, EXP *ZO934) { EXP ZI934; ZL2_935:; switch (CURRENT_TERMINAL) { case lex_minus: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR480 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_minus_exp ((ZI933), (ZI452)); } ZI933 = ZI408; goto ZL2_935; } /*UNREACHED*/ case lex_plus: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR480 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_plus_exp ((ZI933), (ZI452)); } ZI933 = ZI408; goto ZL2_935; } /*UNREACHED*/ default: { ZI934 = ZI933; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO934 = ZI934; } void parse_func (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { ZR557 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI408) = NULL_exp; } } ZL0:; *ZO408 = ZI408; } void ZR763 (TYPE *ZO399) { TYPE ZI399; switch (CURRENT_TERMINAL) { case lex_open_Hround: case lex_open_Hsquare_H1: case lex_weak: { ZR769 (&ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { TYPE ZI1067; ZR741 (&ZI1067); ZR1069 (&ZI1067, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; } void ZR1065 (IDENTIFIER *ZI403, TYPE *ZO399) { TYPE ZI399; switch (CURRENT_TERMINAL) { default: { BASE_TYPE ZI677; { (ZI677) = btype_enum; } { MAKE_type_pre (cv_none, (ZI677), qual_none, (ZI399)); COPY_id (type_name ((ZI399)), (*ZI403)); if (have_type_declaration == TYPE_DECL_NONE) { have_type_declaration = TYPE_DECL_ELABORATE; } have_type_specifier = 1; } } break; case lex_open_Hbrace_H1: { IDENTIFIER ZI424; IDENTIFIER ZI680; { (ZI424) = begin_enum_defn ((*ZI403), NULL_type); no_type_defns++; } { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR691 (&ZI424); { if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI680) = end_enum_defn ((ZI424)); } { MAKE_type_pre (cv_none, btype_alias, qual_none, (ZI399)); COPY_id (type_name ((ZI399)), (ZI680)); have_type_specifier = 1; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; } void ZR716 (DECL_SPEC *ZO611) { DECL_SPEC ZI611; switch (CURRENT_TERMINAL) { case lex_auto: { ADVANCE_LEXER; { (ZI611) = dspec_auto; } } break; case lex_extern: { ADVANCE_LEXER; { (ZI611) = dspec_extern; } } break; case lex_register: { ADVANCE_LEXER; { (ZI611) = dspec_register; } } break; case lex_static: { ADVANCE_LEXER; { (ZI611) = dspec_static; } } break; case lex_typedef: { ADVANCE_LEXER; { (ZI611) = dspec_typedef; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO611 = ZI611; } void ZR754 (void) { if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER ZI403; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { IDENTIFIER pid = underlying_id ((ZI403)); DEREF_loc (id_loc (pid), decl_loc); } { IGNORE weak_param_decl ((ZI403)); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR788 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } return; ZL1:; SAVE_LEXER (358); return; } void ZR939 (EXP ZI937, EXP *ZO938) { EXP ZI938; ZL2_939:; switch (CURRENT_TERMINAL) { case lex_div: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR463 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_mult_exp (lex_div, (ZI937), (ZI452)); } ZI937 = ZI408; goto ZL2_939; } /*UNREACHED*/ case lex_rem: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR463 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_rem_exp ((ZI937), (ZI452)); } ZI937 = ZI408; goto ZL2_939; } /*UNREACHED*/ case lex_star: { EXP ZI452; EXP ZI408; ADVANCE_LEXER; ZR463 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_mult_exp (lex_star, (ZI937), (ZI452)); } ZI937 = ZI408; goto ZL2_939; } /*UNREACHED*/ default: { ZI938 = ZI937; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO938 = ZI938; } void parse_id (IDENTIFIER *ZO403) { IDENTIFIER ZI403; if ((CURRENT_TERMINAL) == 358) { return; } { { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI403) = NULL_id; } } ZL0:; *ZO403 = ZI403; } void ZR463 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_alignof: { int ZI464; ADVANCE_LEXER; { (ZI464) = lex_alignof; } ZR465 (ZI464, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_complex_Hexp: { EXP ZI972; { IDENTIFIER id = crt_token->pp_data.tok.id; PPTOKEN *args = crt_token->pp_data.tok.args; ZI972 = parse_exp_token (id, args); RESCAN_LEXER; } ADVANCE_LEXER; ZR943 (ZI972, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_discard: { EXP ZI420; ADVANCE_LEXER; ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_cast_exp (type_void, (ZI420), 0); } } break; case lex_ellipsis_Hexp: { EXP ZI972; ADVANCE_LEXER; { (ZI972) = make_ellipsis_exp (); } ZR943 (ZI972, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_identifier: { IDENTIFIER ZI403; EXP ZI972; { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; { (ZI972) = make_id_exp ((ZI403)); } ZR943 (ZI972, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_minus_Hminus: { EXP ZI420; ADVANCE_LEXER; ZR462 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_prefix_exp (lex_minus_Hminus, (ZI420)); } } break; case lex_open_Hround: { ADVANCE_LEXER; ZR973 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_plus_Hplus: { EXP ZI420; ADVANCE_LEXER; ZR462 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_prefix_exp (lex_plus_Hplus, (ZI420)); } } break; case lex_sizeof: { int ZI464; ADVANCE_LEXER; { (ZI464) = lex_sizeof; } ZR465 (ZI464, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { EXP ZI420; ADVANCE_LEXER; ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_indir_exp ((ZI420)); } } break; case lex_and_H1: { EXP ZI420; { { switch (CURRENT_TERMINAL) { case lex_and_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_ref_exp ((ZI420), 0); } } break; case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: { EXP ZI972; ZR413 (&ZI972); ZR943 (ZI972, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_not_H1: { EXP ZI420; { { switch (CURRENT_TERMINAL) { case lex_not_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_not_exp ((ZI420)); } } break; case lex_compl_H1: case lex_minus: case lex_plus: case lex_abs: { int ZI464; EXP ZI420; { (ZI464) = crt_lex_token; } ZR473 (); ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_uminus_exp ((ZI464), (ZI420)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR668 (BASE_TYPE *ZO666, TYPE *ZO399) { BASE_TYPE ZI666; TYPE ZI399; switch (CURRENT_TERMINAL) { case lex_complex_Htype: { { IDENTIFIER id = crt_token->pp_data.tok.id; PPTOKEN *args = crt_token->pp_data.tok.args; ZI399 = parse_type_token (id, args); have_type_declaration = TYPE_DECL_NONE; have_type_specifier = 1; RESCAN_LEXER; } ADVANCE_LEXER; { (ZI666) = btype_none; } } break; case lex_type_Hname: { IDENTIFIER ZI403; { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; { MAKE_type_pre (cv_none, btype_alias, qual_none, (ZI399)); COPY_id (type_name ((ZI399)), (ZI403)); have_type_specifier = 1; } { (ZI666) = btype_none; } } break; case lex_char: case lex_double: case lex_float: case lex_int: case lex_long: case lex_short: case lex_signed: case lex_unsigned: case lex_void: case lex_bool: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { ZR667 (&ZI666); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = NULL_type; have_type_specifier = 1; } } break; case lex_struct: case lex_union: { ZR664 (&ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI666) = btype_none; } } break; case lex_enum: { ZR665 (&ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI666) = btype_none; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO666 = ZI666; *ZO399 = ZI399; } void ZR770 (TYPE ZI424, TYPE *ZO399) { TYPE ZI399; switch (CURRENT_TERMINAL) { case lex_open_Hround: case lex_open_Hsquare_H1: case lex_star: case lex_weak: { TYPE ZI427; ZR763 (&ZI427); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = (IS_NULL_type ((ZI427)) ? (ZI424): inject_pre_type ((ZI427), (ZI424), 1)); } } break; default: { ZI399 = ZI424; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; } void ZR1069 (TYPE *ZI1067, TYPE *ZO399) { TYPE ZI399; switch (CURRENT_TERMINAL) { case lex_open_Hround: case lex_open_Hsquare_H1: case lex_star: case lex_weak: { TYPE ZI427; ZR763 (&ZI427); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI399) = (IS_NULL_type ((ZI427)) ? (*ZI1067): inject_pre_type ((ZI427), (*ZI1067), 0)); } } break; default: { ZI399 = *ZI1067; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; } void ZR398 (void) { if ((CURRENT_TERMINAL) == 358) { return; } { switch (CURRENT_TERMINAL) { case lex_open_Hround: break; default: goto ZL1; } ADVANCE_LEXER; } return; ZL1:; { int ZI399; { (ZI399) = lex_open_Hround; } { /* Expected symbol */ int p = primary_form (crt_lex_token); if (p != (ZI399)) report (crt_loc, ERR_lex_expect ((ZI399))); } } } void ZR1070 (TYPE *ZO861) { TYPE ZI861; switch (CURRENT_TERMINAL) { case lex_open_Hround: case lex_open_Hsquare_H1: case lex_star: case lex_weak: { TYPE ZI399; ZR763 (&ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI399))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR862 (ZI399, &ZI861); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_type_Hname: case lex_complex_Htype: case lex_close_Hround: case lex_ellipsis: case lex_auto: case lex_char: case lex_const: case lex_double: case lex_enum: case lex_extern: case lex_float: case lex_int: case lex_long: case lex_register: case lex_short: case lex_signed: case lex_static: case lex_struct: case lex_typedef: case lex_union: case lex_unsigned: case lex_void: case lex_volatile: case lex_restrict: case lex_bool: case lex_inline: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { IDENTIFIER ZI403; TYPE ZI573; TYPE ZI399; { (ZI403) = NULL_id; } { func_type_defn (0); begin_param ((ZI403)); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR765 (&ZI573); switch (CURRENT_TERMINAL) { case lex_close_Hround: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; ZI399 = ZI573; { end_param (); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 1; } ZR862 (ZI399, &ZI861); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO861 = ZI861; } void ZR943 (EXP ZI941, EXP *ZO942) { EXP ZI942; ZL2_943:; switch (CURRENT_TERMINAL) { case lex_minus_Hminus: { EXP ZI408; ADVANCE_LEXER; { (ZI408) = make_postfix_exp (lex_minus_Hminus, (ZI941)); } ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ case lex_open_Hround: { SID_LIST_EXP ZI424; EXP ZI408; ADVANCE_LEXER; ZR428 (&ZI424); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_func_exp ((ZI941), (ZI424), 0); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ case lex_plus_Hplus: { EXP ZI408; ADVANCE_LEXER; { (ZI408) = make_postfix_exp (lex_plus_Hplus, (ZI941)); } ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ case lex_open_Hsquare_H1: { EXP ZI452; EXP ZI408; { { switch (CURRENT_TERMINAL) { case lex_open_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR418 (&ZI452); { if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { switch (CURRENT_TERMINAL) { case lex_close_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI408) = make_index_exp ((ZI941), (ZI452)); } ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ case lex_arrow: { EXP ZI452; TYPE ZI399; NAMESPACE ZI430; IDENTIFIER ZI403; EXP ZI408; { (ZI452) = begin_field_exp (lex_arrow, (ZI941), &(ZI399), &(ZI430)); } ADVANCE_LEXER; ZR431 (ZI430, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = end_field_exp (lex_arrow, (ZI452), (ZI399), (ZI430), (ZI403), 0); } { RESCAN_LEXER; } ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ case lex_dot: { EXP ZI452; TYPE ZI399; NAMESPACE ZI430; IDENTIFIER ZI403; EXP ZI408; { (ZI452) = begin_field_exp (lex_dot, (ZI941), &(ZI399), &(ZI430)); } ADVANCE_LEXER; ZR431 (ZI430, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = end_field_exp (lex_dot, (ZI452), (ZI399), (ZI430), (ZI403), 0); } { RESCAN_LEXER; } ZI941 = ZI408; goto ZL2_943; } /*UNREACHED*/ default: { ZI942 = ZI941; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO942 = ZI942; } void ZR688 (IDENTIFIER ZI408) { if ((CURRENT_TERMINAL) == 358) { return; } ZL2_688:; { ZR686 (ZI408); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; { /* Extra comma at the end of a list */ report (crt_loc, ERR_lex_extra_comma ()); } goto ZL2_688; } /*UNREACHED*/ case lex_identifier: case lex_type_Hname: case lex_statement_Hname: { goto ZL2_688; } /*UNREACHED*/ default: { { /* Extra comma at the end of a list */ report (crt_loc, ERR_lex_extra_comma ()); } } break; } } } break; case 358: RESTORE_LEXER; goto ZL1; default: break; } } } return; ZL1:; SAVE_LEXER (358); return; } void ZR691 (IDENTIFIER *ZI424) { switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_statement_Hname: { ZR688 (*ZI424); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: break; } return; ZL1:; SAVE_LEXER (358); return; } void ZR604 (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI696; TYPE ZI1093; CV_SPEC ZI698; DECL_SPEC ZI1094; BASE_TYPE ZI666; TYPE ZI697; CV_SPEC ZI637; DECL_SPEC ZI726; { /* Resolve declaration-specifiers from other declarators */ (ZI0) = predict_dspec (0); } if (!ZI0) goto ZL2; ZR723 (&ZI696, &ZI1093, &ZI698, &ZI1094); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* A type-name can be a declarator-id */ if (have_type_specifier && crt_lex_token == lex_type_Hname) { crt_lex_token = lex_identifier; } } ZR734 (&ZI696, &ZI1093, &ZI698, &ZI1094, &ZI666, &ZI697, &ZI637, &ZI726); ZR823 (&ZI666, &ZI697, &ZI637, &ZI726); switch (CURRENT_TERMINAL) { case lex_semicolon: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; { in_declaration--; (ZI408) = NULL_exp; } { report (crt_loc, ERR_stmt_for_decl ()); } { unreached_fall = 1; } goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_semicolon: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: case lex_set: case lex_unused: case lex_inset_Hstart: { ZR540 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR845 (OFFSET ZI452, TYPE ZI573, OFFSET *ZO420, TYPE *ZO399) { OFFSET ZI420; TYPE ZI399; switch (CURRENT_TERMINAL) { case lex_dot: { ADVANCE_LEXER; ZR844 (ZI452, ZI573, &ZI420, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_open_Hsquare_H1: { EXP ZI408; { { switch (CURRENT_TERMINAL) { case lex_open_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR522 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { OFFSET off = offset_index ((ZI573), (ZI408), &(ZI399)); (ZI420) = offset_add ((ZI452), off); } { { switch (CURRENT_TERMINAL) { case lex_close_Hsquare_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO420 = ZI420; *ZO399 = ZI399; } void ZR462 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_alignof: { int ZI464; ADVANCE_LEXER; { (ZI464) = lex_alignof; } ZR465 (ZI464, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_minus_Hminus: { EXP ZI420; ADVANCE_LEXER; ZR462 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_prefix_exp (lex_minus_Hminus, (ZI420)); } } break; case lex_plus_Hplus: { EXP ZI420; ADVANCE_LEXER; ZR462 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_prefix_exp (lex_plus_Hplus, (ZI420)); } } break; case lex_sizeof: { int ZI464; ADVANCE_LEXER; { (ZI464) = lex_sizeof; } ZR465 (ZI464, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { EXP ZI420; ADVANCE_LEXER; ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_indir_exp ((ZI420)); } } break; case lex_and_H1: { EXP ZI420; { { switch (CURRENT_TERMINAL) { case lex_and_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_ref_exp ((ZI420), 0); } } break; case lex_not_H1: { EXP ZI420; { { switch (CURRENT_TERMINAL) { case lex_not_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_not_exp ((ZI420)); } } break; case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_open_Hround: case lex_ellipsis_Hexp: { ZR451 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_compl_H1: case lex_minus: case lex_plus: case lex_abs: { int ZI464; EXP ZI420; { (ZI464) = crt_lex_token; } ZR473 (); ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_uminus_exp ((ZI464), (ZI420)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR489 (EXP *ZO926) { EXP ZI926; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI408; ZR486 (&ZI408); ZR927 (ZI408, &ZI926); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO926 = ZI926; } void ZR607 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: case lex_set: case lex_unused: case lex_inset_Hstart: { EXP ZI420; EXP ZI452; ZR418 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI452) = make_exp_stmt ((ZI420)); } { (ZI408) = bind_temporary ((ZI452)); } } break; default: { { (ZI408) = NULL_exp; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR497 (EXP *ZO914) { EXP ZI914; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI408; ZR495 (&ZI408); ZR915 (ZI408, &ZI914); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO914 = ZI914; } void parse_exp (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { ZR423 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI408) = NULL_exp; } } ZL0:; *ZO408 = ZI408; } void ZR694 (BASE_TYPE *ZO666, TYPE *ZO399, CV_SPEC *ZO637) { BASE_TYPE ZI666; TYPE ZI399; CV_SPEC ZI637; switch (CURRENT_TERMINAL) { case lex_const: case lex_volatile: case lex_restrict: { ZR638 (&ZI637); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI666) = btype_none; } { (ZI399) = NULL_type; } } break; case lex_type_Hname: case lex_complex_Htype: case lex_char: case lex_double: case lex_enum: case lex_float: case lex_int: case lex_long: case lex_short: case lex_signed: case lex_struct: case lex_union: case lex_unsigned: case lex_void: case lex_bool: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { ZR668 (&ZI666, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI637) = cv_none; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO666 = ZI666; *ZO399 = ZI399; *ZO637 = ZI637; } void ZR823 (BASE_TYPE *ZI666, TYPE *ZI697, CV_SPEC *ZI637, DECL_SPEC *ZI726) { switch (CURRENT_TERMINAL) { default: { { IGNORE empty_decl ((*ZI726), NULL_type, (*ZI666), (*ZI697), (*ZI637), last_lex_token, 0); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; have_type_specifier = 0; } } break; case lex_identifier: case lex_type_Hname: case lex_statement_Hname: case lex_open_Hround: case lex_star: { TYPE ZI399; DECL_SPEC ZI611; { /* Complete a declaration specifier and a type */ (ZI611) = complete_dspec ((*ZI726), (*ZI666), (*ZI697), (*ZI637)); (ZI399) = complete_pre_type ((*ZI666), (*ZI697), (*ZI637), 0); have_type_specifier = 0; } ZR807 (ZI611, *ZI666, ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; } return; ZL1:; SAVE_LEXER (358); return; } void parse_stmt (EXP *ZO408) { EXP ZI408; if ((CURRENT_TERMINAL) == 358) { return; } { ZR532 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (ZI408) = NULL_exp; } } ZL0:; *ZO408 = ZI408; } void ZR835 (TYPE ZI424, BASE_TYPE ZI427) { if ((CURRENT_TERMINAL) == 358) { return; } ZL2_835:; { ZR834 (ZI424, ZI427); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; goto ZL2_835; } /*UNREACHED*/ case 358: RESTORE_LEXER; goto ZL1; default: break; } } } return; ZL1:; SAVE_LEXER (358); return; } void ZR1081 (int *ZI464, int *ZI466, int *ZI467, EXP *ZO471) { EXP ZI471; if ((CURRENT_TERMINAL) == 358) { return; } { TYPE ZI399; int ZI470; EXP ZI420; { /* Resolve type-ids from expressions */ (ZI0) = predict_typeid (1); } if (!ZI0) goto ZL2; ZR448 (&ZI399, &ZI470); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI420) = NULL_exp; } { (ZI471) = make_sizeof_exp ((ZI399), (ZI420), (ZI470), (*ZI464)); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: case lex_set: case lex_unused: case lex_inset_Hstart: { EXP ZI1080; EXP ZI408; EXP ZI420; int ZI469; int ZI470; TYPE ZI399; { IGNORE incr_value (OPT_VAL_paren_depth); } ZR418 (&ZI1080); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_paren_exp ((ZI1080)); decr_value (OPT_VAL_paren_depth); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR943 (ZI408, &ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI469) = no_side_effects - (*ZI466); } { (ZI470) = no_type_defns - (*ZI467); } { (ZI399) = typeof_exp (&(ZI420), (ZI469), (*ZI464)); } { (ZI471) = make_sizeof_exp ((ZI399), (ZI420), (ZI470), (*ZI464)); } } break; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO471 = ZI471; } void ZR448 (TYPE *ZO399, int *ZO476) { TYPE ZI399; int ZI476; if ((CURRENT_TERMINAL) == 358) { return; } { int ZI466; BASE_TYPE ZI666; TYPE ZI424; CV_SPEC ZI637; TYPE ZI427; { (ZI466) = no_type_defns; } ZR695 (&ZI666, &ZI424, &ZI637); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI427) = complete_pre_type ((ZI666), (ZI424), (ZI637), 1); have_type_specifier = 0; } ZR770 (ZI427, &ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI476) = no_type_defns - (ZI466); } { object_type ((ZI399), null_tag); } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO399 = ZI399; *ZO476 = ZI476; } void ZR514 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_set: { EXP ZI420; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_open_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR418 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_set_exp ((ZI420)); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; } break; case lex_unused: { EXP ZI420; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_open_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR418 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_unused_exp ((ZI420)); } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR1082 (IDENTIFIER *ZI552, SID_LIST_EXP *ZO427) { SID_LIST_EXP ZI427; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hbrace_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: { ZR799 (*ZI552, &ZI427); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI427) = NULL_list (EXP); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO427 = ZI427; } void ZR955 (BASE_TYPE *ZI951, TYPE *ZI952, CV_SPEC *ZI953, DECL_SPEC *ZI954, EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_semicolon: { { IGNORE empty_decl ((*ZI954), NULL_type, (*ZI951), (*ZI952), (*ZI953), last_lex_token, 0); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; have_type_specifier = 0; } ADVANCE_LEXER; { (ZI408) = NULL_exp; } } break; case lex_identifier: case lex_type_Hname: case lex_statement_Hname: case lex_open_Hround: case lex_star: { TYPE ZI399; DECL_SPEC ZI611; TYPE ZI573; IDENTIFIER ZI403; { /* Complete a declaration specifier and a type */ (ZI611) = complete_dspec ((*ZI954), (*ZI951), (*ZI952), (*ZI953)); (ZI399) = complete_pre_type ((*ZI951), (*ZI952), (*ZI953), 0); have_type_specifier = 0; } ZR762 (ZI399, &ZI573, &ZI403); ZR829 (ZI951, &ZI399, &ZI611, &ZI573, &ZI403); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = NULL_exp; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR814 (void) { if ((CURRENT_TERMINAL) == 358) { return; } { DECL_SPEC ZI611; TYPE ZI399; { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI611) = dspec_none; } { (ZI399) = NULL_type; } ZR813 (); { if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } } return; ZL1:; SAVE_LEXER (358); return; } void ZR829 (BASE_TYPE *ZI666, TYPE *ZI399, DECL_SPEC *ZI611, TYPE *ZI573, IDENTIFIER *ZI403) { if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER ZI552; int ZI452; EXP ZI420; { (ZI0) = function_params ((*ZI573)); } if (!ZI0) goto ZL2; { (ZI552) = make_func_decl ((*ZI611), (*ZI573), (*ZI403), 1); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } { (ZI452) = in_class_defn; in_class_defn = 0; in_function_defn++; really_in_function_defn++; begin_function ((ZI552)); } ZR557 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { IGNORE end_function ((ZI552), (ZI420)); in_class_defn = (ZI452); in_function_defn--; really_in_function_defn--; } { RESCAN_LEXER; } goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_assign: case lex_comma: case lex_semicolon: { IDENTIFIER ZI552; EXP ZI420; { if (in_weak_param) { (ZI552) = make_param_decl ((*ZI611), (*ZI573), (*ZI403), CONTEXT_WEAK_PARAM); } else if (type_tag ((*ZI573)) == type_func_tag) { check_weak_func ((*ZI573), 0); (ZI552) = make_func_decl ((*ZI611), (*ZI573), (*ZI403), 0); } else { int def = predict_obj_defn (); (ZI552) = make_object_decl ((*ZI611), (*ZI573), (*ZI403), def); } if (IS_id_type_alias ((ZI552))) { BASE_TYPE bs = DEREF_btype (id_type_alias_rep ((ZI552))); bs |= (*ZI666); COPY_btype (id_type_alias_rep ((ZI552)), bs); } have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR802 (ZI552, &ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { int def = init_object ((ZI552), (ZI420)); if (do_dump) dump_declare ((ZI552), &decl_loc, def); } { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; ZR807 (*ZI611, *ZI666, *ZI399); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: break; } } switch (CURRENT_TERMINAL) { case lex_semicolon: break; default: goto ZL1; } ADVANCE_LEXER; } break; default: goto ZL1; } return; ZL1:; SAVE_LEXER (358); return; ZL0:; } void ZR1085 (EXP *ZI1083, EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: case lex_set: case lex_unused: case lex_inset_Hstart: { SID_LIST_EXP ZI427; SID_LIST_EXP ZI424; ZR519 (&ZI427); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CONS_exp ((*ZI1083), (ZI427), (ZI424)); } { (ZI408) = make_comma_exp ((ZI424)); } } break; default: { ZI408 = *ZI1083; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR425 (SID_LIST_EXP *ZO424) { SID_LIST_EXP ZI424; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI408; SID_LIST_EXP ZI427; ZR423 (&ZI408); ZR630 (&ZI427); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CONS_exp ((ZI408), (ZI427), (ZI424)); } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO424 = ZI424; } void ZR960 (EXP *ZI958, EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_question: { EXP ZI420; EXP ZI452; ADVANCE_LEXER; ZR418 (&ZI420); switch (CURRENT_TERMINAL) { case lex_colon: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; ZR507 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_cond_exp ((*ZI958), (ZI420), (ZI452)); } } break; default: { ZI408 = *ZI958; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR423 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_alignof: { int ZI1016; EXP ZI1017; ADVANCE_LEXER; { (ZI1016) = lex_alignof; } ZR465 (ZI1016, &ZI1017); ZR1015 (&ZI1017, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_complex_Hexp: { EXP ZI1028; EXP ZI1029; { IDENTIFIER id = crt_token->pp_data.tok.id; PPTOKEN *args = crt_token->pp_data.tok.args; ZI1028 = parse_exp_token (id, args); RESCAN_LEXER; } ADVANCE_LEXER; ZR943 (ZI1028, &ZI1029); ZR1015 (&ZI1029, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_discard: { EXP ZI420; EXP ZI971; EXP ZI970; EXP ZI969; EXP ZI968; EXP ZI967; EXP ZI966; EXP ZI965; EXP ZI964; EXP ZI963; EXP ZI962; EXP ZI961; EXP ZI958; ADVANCE_LEXER; ZR463 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI971) = make_cast_exp (type_void, (ZI420), 0); } ZR939 (ZI971, &ZI970); ZR935 (ZI970, &ZI969); ZR931 (ZI969, &ZI968); ZR927 (ZI968, &ZI967); ZR923 (ZI967, &ZI966); ZR919 (ZI966, &ZI965); ZR915 (ZI965, &ZI964); ZR911 (ZI964, &ZI963); ZR907 (ZI963, &ZI962); ZR903 (ZI962, &ZI961); ZR899 (ZI961, &ZI958); ZR960 (&ZI958, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_ellipsis_Hexp: { EXP ZI1025; EXP ZI1026; ADVANCE_LEXER; { (ZI1025) = make_ellipsis_exp (); } ZR943 (ZI1025, &ZI1026); ZR1015 (&ZI1026, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_identifier: { IDENTIFIER ZI403; EXP ZI1022; EXP ZI1023; { ZI403 = crt_token->pp_data.id.use; } ADVANCE_LEXER; { (ZI1022) = make_id_exp ((ZI403)); } ZR943 (ZI1022, &ZI1023); ZR1015 (&ZI1023, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_minus_Hminus: { EXP ZI997; EXP ZI998; ADVANCE_LEXER; ZR462 (&ZI997); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI998) = make_prefix_exp (lex_minus_Hminus, (ZI997)); } ZR1015 (&ZI998, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_open_Hround: { ADVANCE_LEXER; ZR993 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_plus_Hplus: { EXP ZI994; EXP ZI995; ADVANCE_LEXER; ZR462 (&ZI994); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI995) = make_prefix_exp (lex_plus_Hplus, (ZI994)); } ZR1015 (&ZI995, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_sizeof: { int ZI1013; EXP ZI1014; ADVANCE_LEXER; { (ZI1013) = lex_sizeof; } ZR465 (ZI1013, &ZI1014); ZR1015 (&ZI1014, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_star: { EXP ZI1000; EXP ZI1001; ADVANCE_LEXER; ZR463 (&ZI1000); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1001) = make_indir_exp ((ZI1000)); } ZR1015 (&ZI1001, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_and_H1: { EXP ZI1003; EXP ZI1004; { { switch (CURRENT_TERMINAL) { case lex_and_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI1003); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1004) = make_ref_exp ((ZI1003), 0); } ZR1015 (&ZI1004, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: { EXP ZI1019; EXP ZI1020; ZR413 (&ZI1019); ZR943 (ZI1019, &ZI1020); ZR1015 (&ZI1020, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_not_H1: { EXP ZI1006; EXP ZI1007; { { switch (CURRENT_TERMINAL) { case lex_not_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR463 (&ZI1006); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1007) = make_not_exp ((ZI1006)); } ZR1015 (&ZI1007, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_compl_H1: case lex_minus: case lex_plus: case lex_abs: { int ZI1009; EXP ZI1010; EXP ZI1011; { (ZI1009) = crt_lex_token; } ZR473 (); ZR463 (&ZI1010); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1011) = make_uminus_exp ((ZI1009), (ZI1010)); } ZR1015 (&ZI1011, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR1088 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_set: { EXP ZI1102; EXP ZI1103; ADVANCE_LEXER; ZR418 (&ZI1102); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1103) = make_set_exp ((ZI1102)); } ZR1104 (&ZI1103, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_unused: { EXP ZI1099; EXP ZI1100; ADVANCE_LEXER; ZR418 (&ZI1099); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI1100) = make_unused_exp ((ZI1099)); } ZR1104 (&ZI1100, &ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR707 (BASE_TYPE *ZI696, TYPE *ZI697, CV_SPEC *ZI698, BASE_TYPE *ZO666, TYPE *ZO399, CV_SPEC *ZO637) { BASE_TYPE ZI666; TYPE ZI399; CV_SPEC ZI637; if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI1042; TYPE ZI1043; CV_SPEC ZI1044; BASE_TYPE ZI700; TYPE ZI701; CV_SPEC ZI702; { /* Resolve type-specifiers from other declarators */ (ZI0) = predict_tspec (0); } if (!ZI0) goto ZL2; ZR694 (&ZI1042, &ZI1043, &ZI1044); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* A type-name can be a declarator-id */ if (have_type_specifier && crt_lex_token == lex_type_Hname) { crt_lex_token = lex_identifier; } } ZR707 (&ZI1042, &ZI1043, &ZI1044, &ZI700, &ZI701, &ZI702); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if ((*ZI696) & (ZI700)) { (ZI666) = join_pre_types ((*ZI696), (ZI700)); } else { (ZI666) = ((*ZI696) | (ZI700)); } } { /* Join two partial types */ if (IS_NULL_type ((*ZI697))) { (ZI399) = (ZI701); } else if (IS_NULL_type ((ZI701))) { (ZI399) = (*ZI697); } else { report (crt_loc, ERR_dcl_type_simple_many ((*ZI697), (ZI701))); (ZI399) = (ZI701); } } { CV_SPEC c = ((*ZI698) & (ZI702)); if (c) report (crt_loc, ERR_dcl_type_cv_dup (c)); (ZI637) = ((*ZI698) | (ZI702)); } goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { default: { ZI666 = *ZI696; ZI399 = *ZI697; ZI637 = *ZI698; } break; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO666 = ZI666; *ZO399 = ZI399; *ZO637 = ZI637; } void ZR428 (SID_LIST_EXP *ZO424) { SID_LIST_EXP ZI424; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_char_Hexp: case lex_wchar_Hexp: case lex_string_Hexp: case lex_wstring_Hexp: case lex_integer_Hexp: case lex_floating_Hexp: case lex_complex_Hexp: case lex_and_H1: case lex_compl_H1: case lex_minus: case lex_minus_Hminus: case lex_not_H1: case lex_open_Hround: case lex_plus: case lex_plus_Hplus: case lex_star: case lex_abs: case lex_sizeof: case lex_alignof: case lex_discard: case lex_ellipsis_Hexp: { ZR425 (&ZI424); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI424) = NULL_list (EXP); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO424 = ZI424; } void ZR1089 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_case: { EXP ZI471; EXP ZI420; EXP ZI452; ADVANCE_LEXER; ZR522 (&ZI471); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI420) = begin_case_stmt ((ZI471), 0); } { unreached_fall = 0; } switch (CURRENT_TERMINAL) { case lex_colon: break; default: goto ZL1; } ADVANCE_LEXER; ZR532 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = end_case_stmt ((ZI420), (ZI452)); } } break; case lex_default: { EXP ZI420; EXP ZI452; ADVANCE_LEXER; { (ZI420) = begin_default_stmt (0); } { unreached_fall = 0; } switch (CURRENT_TERMINAL) { case lex_colon: break; default: goto ZL1; } ADVANCE_LEXER; ZR532 (&ZI452); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = end_default_stmt ((ZI420), (ZI452)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } void ZR503 (EXP *ZO902) { EXP ZI902; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI408; ZR501 (&ZI408); ZR903 (ZI408, &ZI902); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO902 = ZI902; } void ZR620 (EXP *ZO408) { EXP ZI408; switch (CURRENT_TERMINAL) { case lex_break: { int ZI541; ADVANCE_LEXER; { (ZI541) = unreached_code; if ((ZI541)) { if (!unreached_last) { report (crt_loc, ERR_stmt_stmt_unreach ()); unreached_last = 1; } } else { unreached_last = 0; } } { (ZI408) = make_break_stmt (); } { unreached_fall = 1; } ZR400 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_continue: { int ZI541; ADVANCE_LEXER; { (ZI541) = unreached_code; if ((ZI541)) { if (!unreached_last) { report (crt_loc, ERR_stmt_stmt_unreach ()); unreached_last = 1; } } else { unreached_last = 0; } } { (ZI408) = make_continue_stmt (); } { unreached_fall = 1; } ZR400 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_goto: { int ZI541; ADVANCE_LEXER; { (ZI541) = unreached_code; if ((ZI541)) { if (!unreached_last) { report (crt_loc, ERR_stmt_stmt_unreach ()); unreached_last = 1; } } else { unreached_last = 0; } } ZR619 (&ZI408); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { unreached_fall = 1; } ZR400 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_return: { int ZI541; EXP ZI420; ADVANCE_LEXER; { (ZI541) = unreached_code; if ((ZI541)) { if (!unreached_last) { report (crt_loc, ERR_stmt_stmt_unreach ()); unreached_last = 1; } } else { unreached_last = 0; } } ZR621 (&ZI420); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI408) = make_return_stmt ((ZI420), lex_return); } { unreached_fall = 1; } ZR400 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO408 = ZI408; } /* END OF FILE */