/* * Automatically generated from the files: * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/cpp/syntax/syntax.sid * and * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/cpp/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 "ctype_ops.h" #include "exp_ops.h" #include "hashid_ops.h" #include "id_ops.h" #include "nspace_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; typedef LIST (TYPE) SID_LIST_TYPE; /* * 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 parse_mem_type (TYPE *ZO418) { TYPE ZI418; if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI515; TYPE ZI501; CV_SPEC ZI788; TYPE ZI484; ZR878 (&ZI515, &ZI501, &ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI484) = complete_pre_type ((ZI515), (ZI501), (ZI788), 1); have_type_specifier = 0; } { switch (CURRENT_TERMINAL) { case lex_rem: { QUALIFIER ZI459; int ZI460; EXP ZI562; ADVANCE_LEXER; { (ZI459) = crt_id_qualifier; (ZI460) = crt_templ_qualifier; } ZR655 (&ZI562); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI418) = make_bitfield_type ((ZI484), (ZI515), (ZI562), 0); } { crt_id_qualifier = (ZI459); crt_templ_qualifier = (ZI460); } } break; default: { ZR960 (ZI484, &ZI418); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; } } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO418 = ZI418; } void parse_operator (IDENTIFIER *ZO423) { IDENTIFIER ZI423; if ((CURRENT_TERMINAL) == 358) { return; } { QUALIFIER ZI459; int ZI460; int ZI461; IDENTIFIER ZI464; switch (CURRENT_TERMINAL) { case lex_operator: break; default: goto ZL1; } ADVANCE_LEXER; { (ZI459) = crt_id_qualifier; (ZI460) = crt_templ_qualifier; } { (ZI461) = have_type_declaration; have_type_declaration = TYPE_DECL_NONE; } { { TYPE ZI1323; BASE_TYPE ZI879; TYPE ZI880; CV_SPEC ZI881; BASE_TYPE ZI515; TYPE ZI501; CV_SPEC ZI788; TYPE ZI578; TYPE ZI484; TYPE ZI418; int ZI463; { /* Resolve type-specifiers from other declarators */ (ZI0) = predict_tspec (0); } if (!ZI0) goto ZL3; { (ZI1323) = NULL_type; } ZR877 (ZI1323, &ZI879, &ZI880, &ZI881); ZR890 (&ZI879, &ZI880, &ZI881, &ZI515, &ZI501, &ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI578) = complete_pre_type ((ZI515), (ZI501), (ZI788), 1); have_type_specifier = 0; } ZR992 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI418) = (IS_NULL_type ((ZI484)) ? (ZI578): inject_pre_type ((ZI484), (ZI578), 1)); } { int td = have_type_declaration; (ZI463) = 0; if (td != TYPE_DECL_NONE) { if (td == TYPE_DECL_ELABORATE && found_elaborate_type) { /* This is allowed */ /* EMPTY */ } else { (ZI463) = 1; } } have_type_declaration = (ZI461); } { HASHID nm = lookup_conv ((ZI418)); if ((ZI463)) report (crt_loc, ERR_class_conv_fct_typedef (nm)); (ZI464) = DEREF_id (hashid_id (nm)); set_hashid_loc ((ZI464), underlying_op); } goto ZL2; } /*UNREACHED*/ ZL3:; switch (CURRENT_TERMINAL) { case lex_and_H1: case lex_and_Heq_H1: case lex_arrow: case lex_assign: case lex_colon: case lex_comma: case lex_compl_H1: case lex_div: case lex_div_Heq: case lex_dot: case lex_eq: case lex_greater: case lex_greater_Heq: case lex_less: case lex_less_Heq: case lex_logical_Hand_H1: case lex_logical_Hor_H1: case lex_lshift: case lex_lshift_Heq: case lex_minus: case lex_minus_Heq: case lex_minus_Hminus: case lex_not_H1: case lex_not_Heq_H1: case lex_open_Hround: case lex_open_Hsquare_H1: case lex_or_H1: case lex_or_Heq_H1: case lex_plus: case lex_plus_Heq: case lex_plus_Hplus: case lex_question: case lex_rem: case lex_rem_Heq: case lex_rshift: case lex_rshift_Heq: case lex_star: case lex_star_Heq: case lex_xor_H1: case lex_xor_Heq_H1: case lex_arrow_Hstar: case lex_colon_Hcolon: case lex_dot_Hstar: case lex_abs: case lex_max: case lex_min: case lex_sizeof: case lex_delete: case lex_new: case lex_typeid: case lex_alignof: case lex_vtable: { int ZI454; ZR455 (&ZI454); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { have_type_declaration = (ZI461); } { /* op will be in its primary form */ HASHID nm = lookup_op ((ZI454)); (ZI464) = DEREF_id (hashid_id (nm)); set_hashid_loc ((ZI464), underlying_op); } } break; default: goto ZL1; } ZL2:; } { crt_id_qualifier = (ZI459); crt_templ_qualifier = (ZI460); } ZI423 = ZI464; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO423 = ZI423; } void ZR1088 (EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_assign: { ADVANCE_LEXER; ZR655 (&ZI435); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI435) = NULL_exp; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR630 (EXP *ZO1204) { EXP ZI1204; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI435; ZR628 (&ZI435); ZR1205 (ZI435, &ZI1204); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1204 = ZI1204; } void ZR874 (IDENTIFIER *ZO423) { IDENTIFIER ZI423; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_colon_Hcolon: { NAMESPACE ZI429; IDENTIFIER ZI825; ZR432 (&ZI429); ZR512 (&ZI825); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI423) = check_id ((ZI429), (ZI825), 0); last_namespace = (ZI429); } } break; default: { { HASHID nm = lookup_anon (); (ZI423) = DEREF_id (hashid_id (nm)); crt_id_qualifier = qual_none; qual_namespace = NULL_nspace; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO423 = ZI423; } void ZR755 (EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_case: { EXP ZI562; ADVANCE_LEXER; ZR655 (&ZI562); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { report (crt_loc, ERR_stmt_goto_case (lex_case)); (ZI435) = begin_case_stmt ((ZI562), 1); } } break; case lex_default: { ADVANCE_LEXER; { report (crt_loc, ERR_stmt_goto_case (lex_default)); (ZI435) = begin_default_stmt (1); } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: { IDENTIFIER ZI423; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { crt_id_qualifier = qual_none; crt_templ_qualifier = 0; qual_namespace = NULL_nspace; } { (ZI435) = make_goto_stmt ((ZI423)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR813 (BASE_TYPE *ZO515, TYPE *ZO418) { BASE_TYPE ZI515; TYPE ZI418; switch (CURRENT_TERMINAL) { case lex_complex_Htype: { { IDENTIFIER id = crt_token->pp_data.tok.id; PPTOKEN *args = crt_token->pp_data.tok.args; ZI418 = parse_type_token (id, args); have_type_declaration = TYPE_DECL_NONE; have_type_specifier = 1; RESCAN_LEXER; } ADVANCE_LEXER; { (ZI515) = btype_none; } } break; case lex_nested_Hname: case lex_full_Hname: case lex_colon_Hcolon: { IDENTIFIER ZI423; ZR477 (&ZI423); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { MAKE_type_pre (cv_none, btype_alias, crt_id_qualifier, (ZI418)); COPY_id (type_name ((ZI418)), (ZI423)); have_type_specifier = 1; } { (ZI515) = 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: { ZR513 (&ZI515); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI418) = NULL_type; have_type_specifier = 1; } } break; case lex_type_Hname: case lex_template_Htype: { IDENTIFIER ZI423; ZR476 (&ZI423); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { MAKE_type_pre (cv_none, btype_alias, crt_id_qualifier, (ZI418)); COPY_id (type_name ((ZI418)), (ZI423)); have_type_specifier = 1; } { (ZI515) = btype_none; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO515 = ZI515; *ZO418 = ZI418; } void ZR652 (SID_LIST_EXP *ZO501) { SID_LIST_EXP ZI501; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: 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_complex_Htype: 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_colon_Hcolon: case lex_abs: case lex_char: case lex_double: case lex_float: case lex_int: case lex_long: case lex_short: case lex_signed: case lex_sizeof: case lex_unsigned: case lex_void: case lex_bool: case lex_const_Hcast: case lex_delete: case lex_dynamic_Hcast: case lex_false: case lex_new: case lex_operator: case lex_reinterpret_Hcast: case lex_static_Hcast: case lex_this: case lex_throw: case lex_true: case lex_typeid: case lex_wchar_Ht: case lex_alignof: case lex_bottom: case lex_discard: case lex_ellipsis_Hexp: case lex_ptrdiff_Ht: case lex_size_Ht: case lex_vtable: { EXP ZI497; ZR500 (&ZI497); ZR1295 (&ZI497, &ZI501); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_set: case lex_unused: { EXP ZI497; SID_LIST_EXP ZI484; ZR647 (&ZI497); ZR652 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CONS_exp ((ZI497), (ZI484), (ZI501)); } } break; case lex_inset_Hstart: { EXP ZI497; SID_LIST_EXP ZI484; ZR648 (&ZI497); ZR652 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CONS_exp ((ZI497), (ZI484), (ZI501)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO501 = ZI501; } void ZR980 (int *ZO950) { int ZI950; ZL2_980:; switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; { (ZI950) = 1; } } break; case lex_type_Hname: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_complex_Htype: case lex_colon_Hcolon: 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_class: case lex_explicit: case lex_friend: case lex_inline: case lex_mutable: case lex_typename: case lex_virtual: case lex_wchar_Ht: case lex_bottom: case lex_overload: case lex_ptrdiff_Ht: case lex_size_Ht: { TYPE ZI578; int ZI501; IDENTIFIER ZI463; { (ZI578) = NULL_type; } { (ZI501) = CONTEXT_PARAMETER; } ZR976 (ZI578, ZI501, &ZI463); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; goto ZL2_980; } /*UNREACHED*/ case lex_ellipsis: { ADVANCE_LEXER; { (ZI950) = 1; } } break; default: { { (ZI950) = 0; } } break; case 358: RESTORE_LEXER; goto ZL1; } } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO950 = ZI950; } void ZR1257 (TYPE *ZI418, BASE_TYPE *ZI515, TYPE *ZI880, CV_SPEC *ZI881, DECL_SPEC *ZI916) { switch (CURRENT_TERMINAL) { case lex_semicolon: { { IGNORE empty_decl ((*ZI916), (*ZI418), (*ZI515), (*ZI880), (*ZI881), last_lex_token, 0); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; have_type_specifier = 0; } { if (crt_access_list.pending) { IGNORE report_access (crt_func_id); } } ADVANCE_LEXER; } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_star: case lex_colon_Hcolon: case lex_operator: { TYPE ZI884; DECL_SPEC ZI1078; TYPE ZI1079; ACCESS_LIST ZI674; TYPE ZI578; IDENTIFIER ZI423; int ZI562; IDENTIFIER ZI463; { /* Complete a declaration specifier and a type */ (ZI1078) = complete_dspec ((*ZI916), (*ZI515), (*ZI880), (*ZI881)); (ZI884) = complete_pre_type ((*ZI515), (*ZI880), (*ZI881), 0); have_type_specifier = 0; } { (ZI1079) = (IS_NULL_type ((*ZI418)) ? (ZI884): inject_pre_type ((*ZI418), (ZI884), 1)); } { save_access (&(ZI674)); } { crt_templ_qualifier = 0; } ZR955 (ZI1079, &ZI578, &ZI423, &ZI562); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (type_tag ((ZI578)) == type_func_tag) { /* Look ahead for function definitions */ int def = predict_func_defn (); if (def & !have_func_declarator) adjust_param ((ZI578)); (ZI463) = make_func_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = def; } else { int def = predict_obj_defn (); (ZI463) = make_object_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = 0; } if (IS_id_type_alias ((ZI463))) { BASE_TYPE bs = DEREF_btype (id_type_alias_rep ((ZI463))); bs |= (*ZI515); COPY_btype (id_type_alias_rep ((ZI463)), bs); } have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } { IGNORE clear_access ((ZI463), &(ZI674)); } { if (crt_access_list.pending) { IGNORE report_access ((ZI463)); } } ZR1080 (ZI515, &ZI1078, &ZI1079, &ZI674, &ZI562, &ZI463); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } return; ZL1:; SAVE_LEXER (358); return; } void ZR441 (EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_false: case lex_true: { ZR440 (&ZI435); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_char_Hexp: case lex_wchar_Hexp: { { switch (CURRENT_TERMINAL) { case lex_char_Hexp: { { ZI435 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; case lex_wchar_Hexp: { { ZI435 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; default: goto ZL1; } } } break; case lex_floating_Hexp: { { { switch (CURRENT_TERMINAL) { case lex_floating_Hexp: { ZI435 = crt_token->pp_data.exp; } break; default: goto ZL1; } ADVANCE_LEXER; } } } break; case lex_integer_Hexp: { { { switch (CURRENT_TERMINAL) { case lex_integer_Hexp: { ZI435 = crt_token->pp_data.exp; } break; default: goto ZL1; } ADVANCE_LEXER; } } } break; case lex_string_Hexp: case lex_wstring_Hexp: { { switch (CURRENT_TERMINAL) { case lex_string_Hexp: { { ZI435 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; case lex_wstring_Hexp: { { ZI435 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; default: goto ZL1; } } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR944 (SID_LIST_TYPE *ZO501) { SID_LIST_TYPE ZI501; switch (CURRENT_TERMINAL) { case lex_throw: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_open_Hround: break; default: goto ZL1; } ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; { report (crt_loc, ERR_except_spec_ellipsis ()); (ZI501) = univ_type_set; } } break; case lex_type_Hname: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_complex_Htype: case lex_colon_Hcolon: 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_class: case lex_typename: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { ZR1109 (&ZI501); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI501) = NULL_list (TYPE); } } break; } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; } break; default: { { (ZI501) = empty_type_set; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO501 = ZI501; } void parse_decl (TYPE ZI418, DECL_SPEC ZI693) { if ((CURRENT_TERMINAL) == 358) { return; } { BASE_TYPE ZI1253; TYPE ZI1254; CV_SPEC ZI1255; DECL_SPEC ZI1256; BASE_TYPE ZI515; TYPE ZI880; CV_SPEC ZI881; DECL_SPEC ZI914; DECL_SPEC ZI916; { /* Resolve declaration-specifiers from other declarators */ (ZI0) = predict_dspec (0); } if (!ZI0) goto ZL2; ZR911 (ZI418, &ZI1253, &ZI1254, &ZI1255, &ZI1256); ZR922 (&ZI418, &ZI1253, &ZI1254, &ZI1255, &ZI1256, &ZI515, &ZI880, &ZI881, &ZI914); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* Combine two declaration specifiers */ DECL_SPEC d = (((ZI693) & (ZI914)) & dspec_duplicate); if (d) report (crt_loc, ERR_dcl_spec_dup (d)); (ZI916) = ((ZI693) | (ZI914)); } ZR1257 (&ZI418, &ZI515, &ZI880, &ZI881, &ZI916); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } goto ZL0; } /*UNREACHED*/ ZL2:; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_star: case lex_colon_Hcolon: case lex_operator: { BASE_TYPE ZI515; TYPE ZI880; CV_SPEC ZI881; DECL_SPEC ZI914; DECL_SPEC ZI916; TYPE ZI884; DECL_SPEC ZI1078; TYPE ZI1079; ACCESS_LIST ZI674; TYPE ZI578; IDENTIFIER ZI423; int ZI562; IDENTIFIER ZI463; { (ZI515) = btype_none; } { (ZI880) = NULL_type; } { (ZI881) = cv_none; } { (ZI914) = dspec_none; } { /* Combine two declaration specifiers */ DECL_SPEC d = (((ZI693) & (ZI914)) & dspec_duplicate); if (d) report (crt_loc, ERR_dcl_spec_dup (d)); (ZI916) = ((ZI693) | (ZI914)); } { /* Complete a declaration specifier and a type */ (ZI1078) = complete_dspec ((ZI916), (ZI515), (ZI880), (ZI881)); (ZI884) = complete_pre_type ((ZI515), (ZI880), (ZI881), 0); have_type_specifier = 0; } { (ZI1079) = (IS_NULL_type ((ZI418)) ? (ZI884): inject_pre_type ((ZI418), (ZI884), 1)); } { save_access (&(ZI674)); } { crt_templ_qualifier = 0; } ZR955 (ZI1079, &ZI578, &ZI423, &ZI562); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (type_tag ((ZI578)) == type_func_tag) { /* Look ahead for function definitions */ int def = predict_func_defn (); if (def & !have_func_declarator) adjust_param ((ZI578)); (ZI463) = make_func_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = def; } else { int def = predict_obj_defn (); (ZI463) = make_object_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = 0; } if (IS_id_type_alias ((ZI463))) { BASE_TYPE bs = DEREF_btype (id_type_alias_rep ((ZI463))); bs |= (ZI515); COPY_btype (id_type_alias_rep ((ZI463)), bs); } have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } { IGNORE clear_access ((ZI463), &(ZI674)); } { if (crt_access_list.pending) { IGNORE report_access ((ZI463)); } } ZR1080 (&ZI515, &ZI1078, &ZI1079, &ZI674, &ZI562, &ZI463); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: goto ZL1; } return; ZL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } } ZL0:; } void ZR1259 (TYPE *ZI418, DECL_SPEC *ZI693, BASE_TYPE *ZI515, TYPE *ZI880, CV_SPEC *ZI1258, EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_semicolon: { { IGNORE empty_decl ((*ZI693), (*ZI418), (*ZI515), (*ZI880), (*ZI1258), last_lex_token, 0); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; have_type_specifier = 0; } ADVANCE_LEXER; { (ZI435) = NULL_exp; } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_star: case lex_colon_Hcolon: case lex_operator: { DECL_SPEC ZI914; DECL_SPEC ZI916; TYPE ZI884; DECL_SPEC ZI1078; TYPE ZI1079; ACCESS_LIST ZI674; TYPE ZI578; IDENTIFIER ZI423; int ZI562; IDENTIFIER ZI463; { (ZI914) = dspec_none; } { /* Combine two declaration specifiers */ DECL_SPEC d = (((*ZI693) & (ZI914)) & dspec_duplicate); if (d) report (crt_loc, ERR_dcl_spec_dup (d)); (ZI916) = ((*ZI693) | (ZI914)); } { /* Complete a declaration specifier and a type */ (ZI1078) = complete_dspec ((ZI916), (*ZI515), (*ZI880), (*ZI1258)); (ZI884) = complete_pre_type ((*ZI515), (*ZI880), (*ZI1258), 0); have_type_specifier = 0; } { (ZI1079) = (IS_NULL_type ((*ZI418)) ? (ZI884): inject_pre_type ((*ZI418), (ZI884), 1)); } { save_access (&(ZI674)); } { crt_templ_qualifier = 0; } ZR955 (ZI1079, &ZI578, &ZI423, &ZI562); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (type_tag ((ZI578)) == type_func_tag) { /* Look ahead for function definitions */ int def = predict_func_defn (); if (def & !have_func_declarator) adjust_param ((ZI578)); (ZI463) = make_func_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = def; } else { int def = predict_obj_defn (); (ZI463) = make_object_decl ((ZI1078), (ZI578), (ZI423), def); is_function_next = 0; } if (IS_id_type_alias ((ZI463))) { BASE_TYPE bs = DEREF_btype (id_type_alias_rep ((ZI463))); bs |= (*ZI515); COPY_btype (id_type_alias_rep ((ZI463)), bs); } have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } { IGNORE clear_access ((ZI463), &(ZI674)); } { if (crt_access_list.pending) { IGNORE report_access ((ZI463)); } } ZR1080 (ZI515, &ZI1078, &ZI1079, &ZI674, &ZI562, &ZI463); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = NULL_exp; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR1387 (TYPE *ZI1385, TYPE *ZO418) { TYPE ZI418; switch (CURRENT_TERMINAL) { case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_open_Hsquare_H1: case lex_star: case lex_weak: { TYPE ZI484; ZR956 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI418) = (IS_NULL_type ((ZI484)) ? (*ZI1385): inject_pre_type ((ZI484), (*ZI1385), 0)); } } break; default: { ZI418 = *ZI1385; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO418 = ZI418; } void ZR1260 (void) { switch (CURRENT_TERMINAL) { case lex_hash_Hif: case lex_hash_Hpragma: { ZR1035 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (crt_access_list.pending) { IGNORE report_access (crt_func_id); } } } break; case lex_asm: case lex_namespace: case lex_using: { EXP ZI435; ZR1082 (&ZI435); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { external_declaration ((ZI435), 1); } } break; case 358: return; default: goto ZL1; } return; ZL1:; SAVE_LEXER (358); return; } void ZR1006 (IDENTIFIER *ZI463, SID_LIST_EXP *ZO501) { SID_LIST_EXP ZI501; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: 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_complex_Htype: 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_colon_Hcolon: case lex_abs: case lex_char: case lex_double: case lex_float: case lex_int: case lex_long: case lex_short: case lex_signed: case lex_sizeof: case lex_unsigned: case lex_void: case lex_bool: case lex_const_Hcast: case lex_delete: case lex_dynamic_Hcast: case lex_false: case lex_new: case lex_operator: case lex_reinterpret_Hcast: case lex_static_Hcast: case lex_this: case lex_throw: case lex_true: case lex_typeid: case lex_wchar_Ht: case lex_alignof: case lex_bottom: case lex_discard: case lex_ellipsis_Hexp: case lex_ptrdiff_Ht: case lex_size_Ht: case lex_vtable: { ZR1004 (*ZI463, &ZI501); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI501) = NULL_list (EXP); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO501 = ZI501; } void ZR628 (EXP *ZO1208) { EXP ZI1208; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI435; ZR626 (&ZI435); ZR1209 (ZI435, &ZI1208); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1208 = ZI1208; } void ZR682 (EXP *ZO435) { EXP ZI435; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI562; EXP ZI497; { (ZI562) = begin_compound_stmt (1); } { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { COPY_int (exp_sequence_block ((ZI562)), 2); } ZR680 (ZI562, &ZI497); { if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI435) = end_compound_stmt ((ZI497)); } { RESCAN_LEXER; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR1388 (TYPE *ZO1143) { TYPE ZI1143; switch (CURRENT_TERMINAL) { case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_open_Hsquare_H1: case lex_star: case lex_weak: { TYPE ZI418; ZR956 (&ZI418); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { if (IS_NULL_type ((ZI418))) { report (crt_loc, ERR_dcl_meaning_paren ()); } } switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto ZL1; } ADVANCE_LEXER; ZR1144 (ZI418, &ZI1143); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_type_Hname: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_complex_Htype: case lex_close_Hround: case lex_ellipsis: case lex_colon_Hcolon: 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_class: case lex_explicit: case lex_friend: case lex_inline: case lex_mutable: case lex_typename: case lex_virtual: case lex_wchar_Ht: case lex_bottom: case lex_overload: case lex_ptrdiff_Ht: case lex_size_Ht: { IDENTIFIER ZI423; int ZI948; TYPE ZI418; { (ZI423) = NULL_id; crt_id_qualifier = qual_none; qual_namespace = NULL_nspace; } { (ZI948) = 0; } { func_type_defn (0); begin_param ((ZI423)); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 0; } ZR949 (ZI948, &ZI418); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { end_param (); have_type_declaration = TYPE_DECL_NONE; have_func_declarator = 1; } ZR1144 (ZI418, &ZI1143); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1143 = ZI1143; } void ZR422 (void) { if ((CURRENT_TERMINAL) == 358) { return; } { switch (CURRENT_TERMINAL) { case lex_semicolon: break; default: goto ZL1; } ADVANCE_LEXER; } return; ZL1:; { int ZI418; { (ZI418) = lex_semicolon; } { /* Expected symbol */ int p = primary_form (crt_lex_token); if (p != (ZI418)) report (crt_loc, ERR_lex_expect ((ZI418))); } } } void ZR634 (EXP *ZO1196) { EXP ZI1196; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI435; ZR632 (&ZI435); ZR1197 (ZI435, &ZI1196); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1196 = ZI1196; } void ZR655 (EXP *ZO435) { EXP ZI435; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI497; ZR636 (&ZI497); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = convert_reference ((ZI497), REF_NORMAL); (ZI435) = convert_lvalue ((ZI435)); } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR1120 (IDENTIFIER *ZO423) { IDENTIFIER ZI423; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: { IDENTIFIER ZI464; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI464 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { ZI464 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI464 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI464 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { (ZI423) = (ZI464); crt_id_qualifier = qual_none; last_namespace = crt_namespace; } } break; default: { { HASHID nm = lookup_anon (); (ZI423) = DEREF_id (hashid_id (nm)); crt_id_qualifier = qual_none; qual_namespace = NULL_nspace; } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO423 = ZI423; } void ZR1389 (SID_LIST_TYPE *ZO484) { SID_LIST_TYPE ZI484; switch (CURRENT_TERMINAL) { case lex_type_Hname: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_complex_Htype: case lex_colon_Hcolon: 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_class: case lex_typename: case lex_wchar_Ht: case lex_bottom: case lex_ptrdiff_Ht: case lex_size_Ht: { ZR1109 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { /* Extra comma at the end of a list */ report (crt_loc, ERR_lex_extra_comma ()); } { (ZI484) = NULL_list (TYPE); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO484 = ZI484; } void ZR1262 (void) { switch (CURRENT_TERMINAL) { case lex_typename: { NAMESPACE ZI429; IDENTIFIER ZI423; TYPE ZI418; ADVANCE_LEXER; { crt_templ_qualifier = 0; } ZR432 (&ZI429); ZR512 (&ZI423); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI418) = make_typename ((ZI429), (ZI423)); if (have_type_declaration == TYPE_DECL_NONE) { have_type_declaration = TYPE_DECL_ELABORATE; found_elaborate_type = 1; } have_type_specifier = 1; } { using_typename ((ZI418)); } ZR422 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_colon_Hcolon: case lex_operator: { IDENTIFIER ZI423; ZR947 (&ZI423); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { IGNORE using_identifier ((ZI423)); } ZR422 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case 358: return; default: goto ZL1; } return; ZL1:; SAVE_LEXER (358); return; } void ZR1263 (EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: { IDENTIFIER ZI1045; IDENTIFIER ZI423; { switch (CURRENT_TERMINAL) { case lex_identifier: { { ZI1045 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { ZI1045 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { ZI1045 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { ZI1045 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto ZL1; } } { (ZI423) = (ZI1045); crt_id_qualifier = qual_none; last_namespace = crt_namespace; } { IDENTIFIER pid = underlying_id ((ZI423)); DEREF_loc (id_loc (pid), decl_loc); } ZR1438 (&ZI423, &ZI435); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_open_Hbrace_H1: { DECL_SPEC ZI693; TYPE ZI418; { decl_loc = crt_loc; begin_namespace (NULL_id, 1); } { (ZI693) = dspec_none; } { (ZI418) = NULL_type; } { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR1032 (ZI418, ZI693); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { end_namespace (1); } { { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { RESCAN_LEXER; } { (ZI435) = NULL_exp; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR931 (TYPE *ZO501) { TYPE ZI501; switch (CURRENT_TERMINAL) { case lex_full_Hname_Hstar: { IDENTIFIER ZI423; CV_SPEC ZI788; { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; ZR793 (&ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CLASS_TYPE ct = find_class ((ZI423)); if (IS_NULL_ctype (ct)) { report (crt_loc, ERR_dcl_mptr_type ((ZI423))); MAKE_type_ptr ((ZI788), NULL_type, (ZI501)); } else { MAKE_type_ptr_mem ((ZI788), ct, NULL_type, (ZI501)); } } } break; case lex_nested_Hname_Hstar: { IDENTIFIER ZI423; CV_SPEC ZI788; { ZI423 = crt_token->pp_data.id.use; } ADVANCE_LEXER; ZR793 (&ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { CLASS_TYPE ct = find_class ((ZI423)); if (IS_NULL_ctype (ct)) { report (crt_loc, ERR_dcl_mptr_type ((ZI423))); MAKE_type_ptr ((ZI788), NULL_type, (ZI501)); } else { MAKE_type_ptr_mem ((ZI788), ct, NULL_type, (ZI501)); } } } break; case lex_star: { CV_SPEC ZI788; ADVANCE_LEXER; ZR793 (&ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { MAKE_type_ptr ((ZI788), NULL_type, (ZI501)); } } break; case lex_and_H1: { CV_SPEC ZI788; { { switch (CURRENT_TERMINAL) { case lex_and_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } ZR793 (&ZI788); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* Can't have const-volatile qualified references */ if ((ZI788)) report (crt_loc, ERR_dcl_ref_cv ((ZI788))); MAKE_type_ref (cv_none, NULL_type, (ZI501)); } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO501 = ZI501; } void ZR1264 (EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_namespace: { NAMESPACE ZI1052; IDENTIFIER ZI1053; IDENTIFIER ZI423; NAMESPACE ZI429; ADVANCE_LEXER; ZR432 (&ZI1052); ZR512 (&ZI1053); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI423) = check_id ((ZI1052), (ZI1053), 0); last_namespace = (ZI1052); } { (ZI429) = find_nspace_id ((ZI423)); } { using_namespace ((ZI429)); } ZR422 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = NULL_exp; } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_colon_Hcolon: case lex_operator: case lex_typename: { ZR1262 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = NULL_exp; } } break; case 358: return; default: goto ZL1; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR850 (void) { if ((CURRENT_TERMINAL) == 358) { return; } ZL2_850:; { ZR847 (); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; goto ZL2_850; } /*UNREACHED*/ case 358: RESTORE_LEXER; goto ZL1; default: break; } } } return; ZL1:; SAVE_LEXER (358); return; } void ZR1067 (TYPE ZI418, DECL_SPEC ZI693, EXP *ZO435) { EXP ZI435; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI562; DECL_SPEC ZI497; DECL_SPEC ZI460; DECL_SPEC ZI1068; DECL_SPEC ZI914; EXP ZI768; switch (CURRENT_TERMINAL) { case lex_extern: break; default: goto ZL1; } ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_string_Hexp: { { ZI562 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; case lex_wstring_Hexp: { { ZI562 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; default: goto ZL1; } } { (ZI497) = find_linkage ((ZI562)); } { (ZI460) = crt_linkage; crt_linkage = (ZI497); IGNORE incr_value (OPT_VAL_external_specs); } { (ZI1068) = (dspec_extern | dspec_c); } { /* Combine two declaration specifiers */ DECL_SPEC d = (((ZI693) & (ZI1068)) & dspec_duplicate); if (d) report (crt_loc, ERR_dcl_spec_dup (d)); (ZI914) = ((ZI693) | (ZI1068)); } { { BASE_TYPE ZI1253; TYPE ZI1254; CV_SPEC ZI1255; DECL_SPEC ZI1256; BASE_TYPE ZI515; TYPE ZI880; CV_SPEC ZI881; DECL_SPEC ZI1605; DECL_SPEC ZI916; { /* Resolve declaration-specifiers from other declarators */ (ZI0) = predict_dspec (0); } if (!ZI0) goto ZL4; ZR911 (ZI418, &ZI1253, &ZI1254, &ZI1255, &ZI1256); ZR922 (&ZI418, &ZI1253, &ZI1254, &ZI1255, &ZI1256, &ZI515, &ZI880, &ZI881, &ZI1605); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* Combine two declaration specifiers */ DECL_SPEC d = (((ZI914) & (ZI1605)) & dspec_duplicate); if (d) report (crt_loc, ERR_dcl_spec_dup (d)); (ZI916) = ((ZI914) | (ZI1605)); } ZR1257 (&ZI418, &ZI515, &ZI880, &ZI881, &ZI916); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI768) = NULL_exp; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } goto ZL3; } /*UNREACHED*/ ZL4:; switch (CURRENT_TERMINAL) { case lex_extern: { ZR1067 (ZI418, ZI914, &ZI768); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } } break; case lex_open_Hbrace_H1: { TYPE ZI884; DECL_SPEC ZI916; { { switch (CURRENT_TERMINAL) { case lex_open_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { if (!IS_NULL_type ((ZI418))) report (crt_loc, ERR_temp_decl_bad ()); UNUSED ((ZI914)); } { (ZI884) = NULL_type; } { (ZI916) = dspec_none; } ZR1032 (ZI884, ZI916); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } { { switch (CURRENT_TERMINAL) { case lex_close_Hbrace_H1: break; default: goto ZL1; } ADVANCE_LEXER; } } { (ZI768) = NULL_exp; } } break; case lex_export: case lex_template: { ZR1077 (ZI418, ZI914, &ZI768); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_destructor_Hname: case lex_template_Hid: case lex_template_Htype: case lex_nested_Hname: case lex_full_Hname: case lex_nested_Hname_Hstar: case lex_full_Hname_Hstar: case lex_and_H1: case lex_open_Hround: case lex_semicolon: case lex_star: case lex_colon_Hcolon: case lex_operator: { BASE_TYPE ZI515; TYPE ZI880; CV_SPEC ZI1258; { (ZI515) = btype_none; } { (ZI880) = NULL_type; } { (ZI1258) = cv_none; } ZR1259 (&ZI418, &ZI914, &ZI515, &ZI880, &ZI1258, &ZI768); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } } break; case lex_asm: case lex_namespace: case lex_using: { { if (!IS_NULL_type ((ZI418))) report (crt_loc, ERR_temp_decl_bad ()); UNUSED ((ZI914)); } ZR1082 (&ZI768); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { decr_value (OPT_VAL_external_specs); crt_linkage = (ZI460); } } break; default: goto ZL1; } ZL3:; } ZI435 = ZI768; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR503 (SID_LIST_EXP *ZO484) { SID_LIST_EXP ZI484; switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; ZR502 (&ZI484); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; default: { { (ZI484) = NULL_list (EXP); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO484 = ZI484; } void ZR621 (EXP *ZO1220) { EXP ZI1220; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI435; ZR618 (&ZI435); ZR1221 (ZI435, &ZI1220); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1220 = ZI1220; } void ZR1014 (DECL_SPEC ZI693, BASE_TYPE ZI515, TYPE ZI418, ACCESS_LIST ZI674) { if ((CURRENT_TERMINAL) == 358) { return; } ZL2_1014:; { ZR1013 (ZI693, ZI515, ZI418, ZI674); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; { crt_templ_qualifier = 0; } goto ZL2_1014; } /*UNREACHED*/ case 358: RESTORE_LEXER; goto ZL1; default: break; } } } return; ZL1:; SAVE_LEXER (358); return; } void ZR1267 (EXP *ZI1265, EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_question: { EXP ZI497; EXP ZI460; ADVANCE_LEXER; ZR495 (&ZI497); switch (CURRENT_TERMINAL) { case lex_colon: break; case 358: RESTORE_LEXER; goto ZL1; default: goto ZL1; } ADVANCE_LEXER; ZR500 (&ZI460); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = make_cond_exp ((*ZI1265), (ZI497), (ZI460)); } } break; default: { ZI435 = *ZI1265; } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } void ZR609 (EXP *ZO1236) { EXP ZI1236; if ((CURRENT_TERMINAL) == 358) { return; } { EXP ZI435; ZR605 (&ZI435); ZR1237 (ZI435, &ZI1236); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO1236 = ZI1236; } void ZR1269 (EXP *ZI1268, EXP *ZO435) { EXP ZI435; switch (CURRENT_TERMINAL) { case lex_assign: { EXP ZI460; ADVANCE_LEXER; ZR500 (&ZI460); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { (ZI435) = make_assign_exp ((*ZI1268), (ZI460), 0); } } break; default: { ZR1267 (ZI1268, &ZI435); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } } break; case lex_and_Heq_H1: case lex_div_Heq: case lex_lshift_Heq: case lex_minus_Heq: case lex_or_Heq_H1: case lex_plus_Heq: case lex_rem_Heq: case lex_rshift_Heq: case lex_star_Heq: case lex_xor_Heq_H1: { int ZI454; EXP ZI460; { (ZI454) = crt_lex_token; } ZR643 (); ZR500 (&ZI460); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto ZL1; } { /* op will be in its primary form */ (ZI435) = make_become_exp ((ZI454), (*ZI1268), (ZI460)); } } break; case 358: return; } goto ZL0; ZL1:; SAVE_LEXER (358); return; ZL0:; *ZO435 = ZI435; } /* BEGINNING OF TRAILER */ /* END OF FILE */