/* * Automatically generated from the files: * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/cpp/../common/parse/psyntax.sid * and * /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/producers/cpp/../common/parse/psyntax.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 "tok_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 "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 "printf.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 (IDENTIFIER) SID_LIST_ID; /* * DECLARE FUNCTIONS * * The function declarations are included at this point so that the * type definitions are in scope. */ #include "psyntax.h" extern void parse_tok_type(TYPE *); extern void parse_mem_type(TYPE *); extern void parse_operator(IDENTIFIER *); /* * 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 variable analysis off #ifndef OLD_PRODUCER #pragma TenDRA unreachable code allow #endif #endif /* BEGINNING OF STATIC VARIABLES */ int XI0; /* BEGINNING OF FUNCTION DEFINITIONS */ void XR407 (SID_LIST_ID *XO406) { SID_LIST_ID XI406; if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER XI379; SID_LIST_ID XI409; XR403 (&XI379); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; XR836 (&XI409); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; default: { { (XI409) = NULL_list (IDENTIFIER); } } break; case 358: RESTORE_LEXER; goto XL1; } } { CONS_id ((XI379), (XI409), (XI406)); } } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO406 = XI406; } void XR509 (unsigned *XO381) { unsigned XI381; switch (CURRENT_TERMINAL) { case lex_off: { ADVANCE_LEXER; { (XI381) = (unsigned) OPTION_OFF; } } break; case lex_on: { ADVANCE_LEXER; { (XI381) = (unsigned) OPTION_ON; } } break; case lex_warning: { ADVANCE_LEXER; { (XI381) = (unsigned) OPTION_WARN; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO381 = XI381; } void XR736 (unsigned *XO449) { unsigned XI449; if ((CURRENT_TERMINAL) == 358) { return; } { unsigned XI839; XR735 (&XI839); XR841 (&XI839, &XI449); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO449 = XI449; } void XR553 (IDENTIFIER *XO379) { IDENTIFIER XI379; if ((CURRENT_TERMINAL) == 358) { return; } { switch (CURRENT_TERMINAL) { case lex_keyword: break; default: goto XL1; } ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO379 = XI379; } void XR460 (void) { if ((CURRENT_TERMINAL) == 358) { return; } { TOKEN XI404; int XI401; IDENTIFIER XI413; IDENTIFIER XI448; switch (CURRENT_TERMINAL) { case lex_token: break; default: goto XL1; } ADVANCE_LEXER; XR400 (&XI404); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { if (t != lex_tag_Hcap && !predict_operator ()) { crt_lex_token = lex_identifier; } } } { { { (XI0) = predict_operator (); } if (!XI0) goto XL3; { (XI413) = DEREF_id (hashid_id (KEYWORD (lex_zzzz))); parse_operator (&(XI413)); } { (XI401) = 0; } goto XL2; } /*UNREACHED*/ XL3:; switch (CURRENT_TERMINAL) { case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: case lex_tag_Hcap: { XR402 (&XI401); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI413 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI413 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI413 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI413 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } } break; default: goto XL1; } XL2:; } { { switch (CURRENT_TERMINAL) { case lex_hash_H1: break; default: goto XL1; } ADVANCE_LEXER; } } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_minus: { ADVANCE_LEXER; { HASHID nm = lookup_anon (); (XI448) = DEREF_id (hashid_id (nm)); crt_id_qualifier = qual_none; qual_namespace = NULL_nspace; } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: { { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI448 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI448 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI448 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI448 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } } break; default: { XI448 = XI413; } break; } } { IGNORE make_token_decl ((XI404), (XI401), (XI413), (XI448)); } } return; XL1:; SAVE_LEXER (358); return; } void XR783 (IDENTIFIER XI781, IDENTIFIER *XO782) { IDENTIFIER XI782; XL2_783:; switch (CURRENT_TERMINAL) { case lex_dot: { IDENTIFIER XI476; IDENTIFIER XI379; ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI476 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI476 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI476 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI476 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } { (XI379) = find_mem_token ((XI781), (XI476)); } XI781 = XI379; goto XL2_783; } /*UNREACHED*/ default: { XI782 = XI781; } break; case 358: return; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO782 = XI782; } void XR785 (int *XI712) { switch (CURRENT_TERMINAL) { case lex_as: { int XI381; ADVANCE_LEXER; XR743 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_error_sev ((*XI712), (XI381)); } } break; case lex_allow: case lex_disallow: case lex_off: case lex_on: case lex_warning: { int XI381; XR513 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_error_sev ((*XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR786 (void) { switch (CURRENT_TERMINAL) { case lex_name: { IDENTIFIER XI379; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_environment: break; default: goto XL1; } ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } { begin_option ((XI379)); } } break; default: { IDENTIFIER XI379; { (XI379) = NULL_id; crt_id_qualifier = qual_none; qual_namespace = NULL_nspace; } { begin_option ((XI379)); } } break; case 358: return; } return; XL1:; SAVE_LEXER (358); return; } void XR787 (void) { switch (CURRENT_TERMINAL) { case lex_end: { ADVANCE_LEXER; { IGNORE end_decl_block (NULL_id, 1); } } break; case lex_identifier: case lex_type_Hname: case lex_namespace_Hname: case lex_statement_Hname: { IDENTIFIER XI379; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } switch (CURRENT_TERMINAL) { case lex_begin: break; default: goto XL1; } ADVANCE_LEXER; { begin_decl_block ((XI379)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR720 (unsigned *XO381, unsigned *XO477) { unsigned XI381; unsigned XI477; switch (CURRENT_TERMINAL) { case lex_disallow: { ADVANCE_LEXER; { (XI381) = (unsigned) OPTION_ON; } { (XI477) = (unsigned) OPTION_ON; } } break; case lex_open_Hround: case lex_allow: case lex_warning: { unsigned XI413; unsigned XI448; { switch (CURRENT_TERMINAL) { case lex_open_Hround: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_ignore: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto XL1; } ADVANCE_LEXER; { (XI413) = (unsigned) OPTION_ON; } } break; default: { { (XI413) = (unsigned) OPTION_OFF; } } break; } } { switch (CURRENT_TERMINAL) { case lex_allow: { ADVANCE_LEXER; { (XI448) = (unsigned) OPTION_OFF; } } break; case lex_warning: { ADVANCE_LEXER; { (XI448) = (unsigned) OPTION_WARN; } } break; default: goto XL1; } } XI381 = XI448; XI477 = XI413; } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO381 = XI381; *XO477 = XI477; } void XR788 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_decl: { ADVANCE_LEXER; { (XI712) = OPT_decl_cond; } } break; case lex_lvalue: { ADVANCE_LEXER; { (XI712) = OPT_cond_lvalue; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR789 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_bitfield: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_int: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_type: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_bitf_type; } } break; case lex_comma: { ADVANCE_LEXER; { (XI712) = OPT_comma_extra; } } break; case lex_macro: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_definition: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_macro_redef; } } break; case lex_semicolon: { ADVANCE_LEXER; XR842 (&XI712); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; case lex_type: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_definition: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_type_redef; } } break; case lex_ellipsis: case lex_ellipsis_Hexp: { { switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; } break; case lex_ellipsis_Hexp: { ADVANCE_LEXER; } break; default: goto XL1; } } { (XI712) = OPT_ellipsis_extra; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR790 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_as: { ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; } break; case lex_ellipsis_Hexp: { ADVANCE_LEXER; } break; default: goto XL1; } } { (XI712) = OPT_ellipsis_ident; } } break; case lex_ellipsis: case lex_ellipsis_Hexp: { { switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; } break; case lex_ellipsis_Hexp: { ADVANCE_LEXER; } break; default: goto XL1; } } { (XI712) = OPT_ellipsis_ident; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR791 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_int: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_type: break; default: goto XL1; } ADVANCE_LEXER; XR716 (&XI712); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; case lex_token: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_definition: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_token_undef; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR792 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_interface: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_decl: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_interf_incompat; } } break; case lex_linkage: { ADVANCE_LEXER; { (XI712) = OPT_link_incompat; } } break; case lex_member: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_decl: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_member_incompat; } } break; case lex_promoted: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_function: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_argument: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_incompat; } } break; case lex_type: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_qualifier: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_type_qual_incompat; } } break; case lex_void: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_return: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_ret_void; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR793 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_directive: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_after: break; default: goto XL1; } ADVANCE_LEXER; { { switch (CURRENT_TERMINAL) { case lex_hash_H1: break; default: goto XL1; } ADVANCE_LEXER; } } { (XI712) = OPT_ppdir_indent_dir; } } break; case lex_hash_H1: { { { switch (CURRENT_TERMINAL) { case lex_hash_H1: break; default: goto XL1; } ADVANCE_LEXER; } } switch (CURRENT_TERMINAL) { case lex_directive: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_ppdir_indent; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR794 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_directive: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_div: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_nline: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_after: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_ident: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_ppdir_id; } } break; case lex_external: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_decl: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_decl_none; } } break; case lex_ident: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_after: break; default: goto XL1; } ADVANCE_LEXER; { { switch (CURRENT_TERMINAL) { case lex_hash_H1: break; default: goto XL1; } ADVANCE_LEXER; } } { (XI712) = OPT_hash_ident; } } break; case lex_nline: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_after: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_file: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_end: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_eof_nline; } } break; case lex_token: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_definition: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_token_undef; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR412 (SID_LIST_ID XI410, SID_LIST_ID *XO406) { SID_LIST_ID XI406; if ((CURRENT_TERMINAL) == 358) { return; } { IDENTIFIER XI413; SID_LIST_ID XI409; XR411 (XI410, &XI413); { switch (CURRENT_TERMINAL) { case lex_comma: { ADVANCE_LEXER; XR837 (&XI410, &XI409); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; default: { { (XI409) = NULL_list (IDENTIFIER); } } break; case 358: RESTORE_LEXER; goto XL1; } } { CONS_id ((XI413), (XI409), (XI406)); } } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO406 = XI406; } void XR795 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_open_Hround: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_weak: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_close_Hround: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_weak; } } break; default: { { (XI712) = OPT_func_proto; } } break; case 358: return; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR796 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_directive: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_unknown; } } break; case lex_escape: { ADVANCE_LEXER; { (XI712) = OPT_escape_unknown; } } break; case lex_pragma: { ADVANCE_LEXER; { (XI712) = OPT_pragma_unknown; } } break; case lex_struct: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_div: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_union: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_decl_struct_anon; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR719 (int *XO712, int *XO718) { int XI712; int XI718; switch (CURRENT_TERMINAL) { case lex_assert: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_assert; (XI718) = OPT_ppdir_assert_ignore; } } break; case lex_file: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_file; (XI718) = OPT_ppdir_file_ignore; } } break; case lex_ident: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_ident; (XI718) = OPT_ppdir_ident_ignore; } } break; case lex_import: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_import; (XI718) = OPT_ppdir_import_ignore; } } break; case lex_include_Hnext: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_import; (XI718) = OPT_ppdir_import_ignore; } } break; case lex_unassert: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_unassert; (XI718) = OPT_ppdir_unassert_ignore; } } break; case lex_warning: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_warning; (XI718) = OPT_ppdir_warning_ignore; } } break; case lex_weak: { ADVANCE_LEXER; { (XI712) = OPT_ppdir_weak; (XI718) = OPT_ppdir_weak_ignore; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; *XO718 = XI718; } void XR797 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_initialization: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_init_aggregate; } } break; case lex_struct: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_div: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_union: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_complete_struct; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR725 (unsigned *XO477) { unsigned XI477; switch (CURRENT_TERMINAL) { case lex_external: { ADVANCE_LEXER; { (XI477) = (unsigned) OPTION_OFF; } } break; case lex_internal: { ADVANCE_LEXER; { (XI477) = (unsigned) OPTION_ON; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO477 = XI477; } void XR798 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_export: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_template: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_templ_export; } } break; case lex_function: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_decl: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_impl; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR799 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_operator: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_int_operator; } } break; case lex_overflow: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_int_overflow; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR800 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_analysis: { ADVANCE_LEXER; { (XI712) = OPT_variable; } } break; case lex_hiding: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_decl_hide; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR801 (void) { switch (CURRENT_TERMINAL) { case lex_overload: { unsigned XI477; unsigned XI381; int XI712; int XI718; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_resolution: break; default: goto XL1; } ADVANCE_LEXER; XR729 (&XI477); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI712) = OPT_overload_dep; } { (XI718) = OPT_overload_strict; } { set_option ((XI712), (XI381)); } { set_option ((XI718), (XI477)); } } break; case lex_decl: case lex_lvalue: { int XI712; unsigned XI381; XR788 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR802 (void) { switch (CURRENT_TERMINAL) { case lex_as: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_macro: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_argument: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_macro_arg_dir; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_assert: case lex_file: case lex_ident: case lex_import: case lex_include_Hnext: case lex_unassert: case lex_warning: case lex_weak: { int XI712; int XI718; unsigned XI381; unsigned XI477; XR719 (&XI712, &XI718); XR720 (&XI381, &XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { set_option ((XI718), (XI477)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR803 (void) { switch (CURRENT_TERMINAL) { case lex_function: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_linkage: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_linkage; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_linkage: { EXP XI381; DECL_SPEC XI413; ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_string_Hexp: { { XI381 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; case lex_wstring_Hexp: { { XI381 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; default: goto XL1; } } { (XI413) = find_linkage ((XI381)); } { set_link_opt ((XI413)); } } break; case lex_volatile: case lex_volatile_Ht: { int XI712; unsigned XI381; { switch (CURRENT_TERMINAL) { case lex_volatile: { ADVANCE_LEXER; } break; case lex_volatile_Ht: { ADVANCE_LEXER; } break; default: goto XL1; } } { (XI712) = OPT_decl_volatile; } { (XI381) = (unsigned) OPTION_ON; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR804 (void) { switch (CURRENT_TERMINAL) { case lex_conditional: { int XI712; unsigned XI381; ADVANCE_LEXER; { (XI712) = OPT_const_cond; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_linkage: { unsigned XI381; int XI712; ADVANCE_LEXER; XR725 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI712) = OPT_const_internal; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR713 (int *XO712) { int XI712; switch (CURRENT_TERMINAL) { case lex_open_Hround: { ADVANCE_LEXER; XR845 (&XI712); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; default: { { (XI712) = OPT_conv; } } break; case 358: return; } goto XL0; XL1:; SAVE_LEXER (358); return; XL0:; *XO712 = XI712; } void XR805 (void) { switch (CURRENT_TERMINAL) { case lex_file: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_includes: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_include_full; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_struct: case lex_initialization: { int XI712; unsigned XI381; XR797 (&XI712); XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void parse_preproc (int *XO401) { int XI401; if ((CURRENT_TERMINAL) == 358) { return; } { XR775 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_ignore_token; } } goto XL0; XL1:; { { (XI401) = lex_hash_Hpragma; } } XL0:; *XO401 = XI401; } void XR806 (void) { switch (CURRENT_TERMINAL) { case lex_int: case lex_token: { int XI712; unsigned XI381; XR791 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_export: case lex_function: { int XI712; unsigned XI381; XR798 (&XI712); XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void XR807 (void) { switch (CURRENT_TERMINAL) { case lex_external: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_linkage: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_decl_unify; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_incompatible: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_string: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_lit: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_concat_string; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } void parse_tendra (int *XO401) { int XI401; switch (CURRENT_TERMINAL) { case lex_accept: { ADVANCE_LEXER; XR818 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_ambiguous: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_overload: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_resolution: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_overload_ambig; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_argument: { TYPE XI826; ADVANCE_LEXER; { rescan_pragma (lex_as); RESCAN_LEXER; } { (XI826) = type_error; parse_tok_type (&(XI826)); object_type ((XI826), null_tag); } switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; XR815 (&XI826); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_assignment: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_bool: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_bool_assign; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_begin: { ADVANCE_LEXER; XR786 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_bitfield: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_overflow: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_bitf_overflow; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_block: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_function: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_static: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_func_block; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_bottom: { IDENTIFIER XI379; TYPE XI827; ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { crt_templ_qualifier = 0; } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } { (XI827) = type_bottom; } { typedef_special ((XI379), (XI827)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_catch: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_all: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_wall; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_character: { ADVANCE_LEXER; XR819 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_compatible: { ADVANCE_LEXER; XR820 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_complete: { ADVANCE_LEXER; XR805 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_compute: { IDENTIFIER XI379; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_promote: break; default: goto XL1; } ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } { compute_promote_type ((XI379)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_conditional: { ADVANCE_LEXER; XR801 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_const: { ADVANCE_LEXER; XR804 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_conversion: { ADVANCE_LEXER; XR822 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_decl: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_block: break; default: goto XL1; } ADVANCE_LEXER; XR787 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_define: { int XI477; ADVANCE_LEXER; { (XI477) = lex_define; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { if (t != lex_tag_Hcap && !predict_operator ()) { crt_lex_token = lex_identifier; } } } XR482 (&XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_directive: { ADVANCE_LEXER; XR802 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_directory: { IDENTIFIER XI770; IDENTIFIER XI379; ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI770 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI770 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI770 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI770 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } switch (CURRENT_TERMINAL) { case lex_use: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_environment: break; default: goto XL1; } ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } { directory_option ((XI770), (XI379)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_discard: { ADVANCE_LEXER; XR830 (&XI401); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; case lex_dollar: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_ident: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_dollar_ident; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_end: { ADVANCE_LEXER; { end_option (1); } { (XI401) = lex_hash_Hpragma; } } break; case lex_enum: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_switch: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_enum_switch; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_escape: { EXP XI413; EXP XI448; ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_char_Hexp: { { XI413 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; case lex_wchar_Hexp: { { XI413 = crt_token->pp_data.exp; } ADVANCE_LEXER; } break; default: goto XL1; } } XR757 (&XI448); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_escape ((XI413), (XI448)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_exhaustive: { ADVANCE_LEXER; { (XI401) = lex_exhaustive; } } break; case lex_explicit: { unsigned XI449; unsigned XI381; int XI712; int XI718; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_cast: break; default: goto XL1; } ADVANCE_LEXER; XR745 (&XI449); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI712) = OPT_cast_explicit; } { (XI718) = OPT_VAL_cast_explicit; } { set_option ((XI712), (XI381)); } { set_value ((XI718), NULL_exp, (unsigned long) (XI449)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_external: { ADVANCE_LEXER; XR803 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_extra: { int XI712; unsigned XI381; ADVANCE_LEXER; XR789 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_fall: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_into: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_case: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_case_fall; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_for: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_initialization: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_block: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_for_scope; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_forward: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_enum: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_decl: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_enum_decl; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_function: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_pointer: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_pointer: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_conv_ptr_func; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_ident: { int XI712; unsigned XI381; ADVANCE_LEXER; XR790 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_ignore: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_struct: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_div: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_union: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_div: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_enum: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_tag: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_type_tag_ignore; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_implicit: { ADVANCE_LEXER; XR806 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_includes: { int XI712; EXP XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_depth: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_VAL_include_depth; } { { switch (CURRENT_TERMINAL) { case lex_integer_Hexp: { XI381 = crt_token->pp_data.exp; } break; default: goto XL1; } ADVANCE_LEXER; } } { set_value ((XI712), (XI381), (unsigned long) 0); } { (XI401) = lex_hash_Hpragma; } } break; case lex_incompatible: { int XI712; unsigned XI381; ADVANCE_LEXER; XR792 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_incomplete: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_type: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_object: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_type: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_type_obj_incompl; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_indented: { int XI712; unsigned XI381; ADVANCE_LEXER; XR793 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_initialization: { ADVANCE_LEXER; XR821 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_inline: { unsigned XI381; int XI712; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_linkage: break; default: goto XL1; } ADVANCE_LEXER; XR725 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI712) = OPT_inline_internal; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_integer: { ADVANCE_LEXER; XR823 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_interface: { int XI477; ADVANCE_LEXER; { (XI477) = crt_interface; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { if (t != lex_tag_Hcap && !predict_operator ()) { crt_lex_token = lex_identifier; } } } XR482 (&XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_linkage: { unsigned XI381; unsigned XI477; int XI712; int XI718; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_resolution: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_colon: break; default: goto XL1; } ADVANCE_LEXER; XR726 (&XI381, &XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI712) = OPT_link_resolve; } { (XI718) = OPT_link_internal; } { set_option ((XI712), (XI381)); } { set_option ((XI718), (XI477)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_longlong: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_type: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_longlong; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_nested: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_comment: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_nest_comment; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_no: { int XI712; unsigned XI381; ADVANCE_LEXER; XR794 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_no_Hdef: { int XI477; ADVANCE_LEXER; { (XI477) = lex_no_Hdef; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { if (t != lex_tag_Hcap && !predict_operator ()) { crt_lex_token = lex_identifier; } } } XR482 (&XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_operator: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_precedence: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_paren; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_option: { ADVANCE_LEXER; XR813 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_overload: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_resolution: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_overload_res; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_pointer: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_operator: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_ptr_operator; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_postpone: { int XI413; ADVANCE_LEXER; { rescan_pragma (lex_unknown); RESCAN_LEXER; } { (XI413) = lex_postpone; } XR499 (XI413); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_preserve: { ADVANCE_LEXER; XR814 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_promoted: { TYPE XI828; TYPE XI452; ADVANCE_LEXER; { rescan_pragma (lex_unknown); RESCAN_LEXER; } { (XI828) = type_error; parse_tok_type (&(XI828)); object_type ((XI828), null_tag); } switch (CURRENT_TERMINAL) { case lex_colon: break; default: goto XL1; } ADVANCE_LEXER; { (XI452) = type_error; parse_tok_type (&(XI452)); object_type ((XI452), null_tag); } { set_promote_type ((XI828), (XI452), ntype_ellipsis); } { (XI401) = lex_hash_Hpragma; } } break; case lex_prototype: { int XI712; unsigned XI381; ADVANCE_LEXER; XR795 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_reject: { int XI477; ADVANCE_LEXER; { (XI477) = lex_ignore; } { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { if (t != lex_tag_Hcap && !predict_operator ()) { crt_lex_token = lex_identifier; } } } XR482 (&XI477); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_rvalue: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_token: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_as: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_const: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_token_const; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_semicolon: { ADVANCE_LEXER; { (XI401) = lex_hash_Hpragma; } } break; case lex_set: { ADVANCE_LEXER; XR831 (&XI401); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; case lex_suspend: { ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_static: break; default: goto XL1; } ADVANCE_LEXER; { rescan_pragma (lex_unknown); RESCAN_LEXER; } XR501 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_text: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_after: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_directive: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_ppdir_text; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_this: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_lvalue: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_this_lvalue; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_throw: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_analysis: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_throw_bad; } XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_type: { IDENTIFIER XI379; TYPE XI829; ADVANCE_LEXER; { int t = crt_lex_token; if (t >= FIRST_KEYWORD && t <= LAST_KEYWORD) { crt_lex_token = lex_identifier; } } { crt_templ_qualifier = 0; } { switch (CURRENT_TERMINAL) { case lex_identifier: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_namespace_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_statement_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; case lex_type_Hname: { { XI379 = crt_token->pp_data.id.use; } ADVANCE_LEXER; } break; default: goto XL1; } } switch (CURRENT_TERMINAL) { case lex_for: break; default: goto XL1; } ADVANCE_LEXER; { switch (CURRENT_TERMINAL) { case lex_bottom: { ADVANCE_LEXER; { (XI829) = type_bottom; } } break; case lex_ptrdiff_Ht: { ADVANCE_LEXER; { (XI829) = type_ptrdiff_t; } } break; case lex_size_Ht: { ADVANCE_LEXER; { (XI829) = type_size_t; } } break; case lex_wchar_Ht: { ADVANCE_LEXER; { (XI829) = type_wchar_t; } } break; case lex_ellipsis: case lex_ellipsis_Hexp: { { switch (CURRENT_TERMINAL) { case lex_ellipsis: { ADVANCE_LEXER; } break; case lex_ellipsis_Hexp: { ADVANCE_LEXER; } break; default: goto XL1; } } XR862 (&XI829); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } } break; default: goto XL1; } } { typedef_special ((XI379), (XI829)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_un_Hknown: { int XI712; unsigned XI381; ADVANCE_LEXER; XR796 (&XI712); XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_undef: { ADVANCE_LEXER; XR824 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_unify: { ADVANCE_LEXER; XR807 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_unmatched: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_quote: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_unmatched; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_unpostpone: { int XI413; ADVANCE_LEXER; { rescan_pragma (lex_unknown); RESCAN_LEXER; } { (XI413) = lex_unpostpone; } XR499 (XI413); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_unreachable: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_code: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_reached; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_use: { ADVANCE_LEXER; XR810 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_variable: { ADVANCE_LEXER; XR808 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_weak: { ADVANCE_LEXER; XR809 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_writeable: { int XI712; unsigned XI381; ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_string: break; default: goto XL1; } ADVANCE_LEXER; switch (CURRENT_TERMINAL) { case lex_lit: break; default: goto XL1; } ADVANCE_LEXER; { (XI712) = OPT_const_string; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_error: { int XI712; XR761 (&XI712); XR785 (&XI712); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_keyword: { IDENTIFIER XI379; int XI825; XR553 (&XI379); switch (CURRENT_TERMINAL) { case lex_for: break; case 358: RESTORE_LEXER; goto XL1; default: goto XL1; } ADVANCE_LEXER; XR554 (&XI825); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { define_keyword ((XI379), (XI825)); } { (XI401) = lex_hash_Hpragma; } } break; case lex_member: { XR486 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case lex_token: { XR460 (); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { (XI401) = lex_hash_Hpragma; } } break; case 358: return; default: goto XL1; } goto XL0; XL1:; { { /* Syntax errors */ ERROR err = ERR_lex_parse (crt_token); report (crt_loc, err); have_syntax_error = 1; } { (XI401) = lex_hash_Hpragma; } } XL0:; *XO401 = XI401; } void XR808 (void) { switch (CURRENT_TERMINAL) { case lex_initialization: { int XI712; unsigned XI381; ADVANCE_LEXER; { (XI712) = OPT_init_dynamic; } XR510 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case lex_analysis: case lex_hiding: { int XI712; unsigned XI381; XR800 (&XI712); XR509 (&XI381); if ((CURRENT_TERMINAL) == 358) { RESTORE_LEXER; goto XL1; } { set_option ((XI712), (XI381)); } } break; case 358: return; default: goto XL1; } return; XL1:; SAVE_LEXER (358); return; } /* END OF FILE */