/*
 * 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 */


syntax highlighted by Code2HTML, v. 0.9.1