/* A MSTA parser generated from `/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y' */

#define YYMSTA 1 /* MSTA parser identification. */


#line 25 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"


#include "d_common.h"
#include "d_ir.h"
#include "d_yacc.h"

/* The value of following var is first program stmt
   (see member stmt_list in nodes).  The value may be NULL:
   it means empty program. */
IR_node_t first_program_stmt;

static IR_node_t merge_stmt_lists (IR_node_t list1, IR_node_t list2);
static IR_node_t uncycle_stmt_list (IR_node_t list);

static IR_node_t merge_access_lists (IR_node_t list1, IR_node_t list2);
static IR_node_t uncycle_access_list (IR_node_t list);

static IR_node_t merge_exception_lists (IR_node_t list1, IR_node_t list2);
static IR_node_t uncycle_exception_list (IR_node_t list);

/* The following vars are used by yacc analyzer. */

/* Pointer to block node which opens current scope. */
static IR_node_t current_scope;

/* This var is used as second attribute of nonterminal actual_parameters.
   Its value is source pos of corresponding left parenthesis. Its
   value is to be defined only at rule end because of nesting. */
static position_t actual_parameters_construction_pos;

/* This var is used as second attribute of nonterminal formal_parameters.
   Its value is flag of variable number parameters (usage of ...). */
static int formal_parameter_args_flag;

/* These vars are used as attributes of nonterminal `access'. */
static int public_flag, friend_flag;

static const char *full_file_name  (const char *extend_identifier);
static void add_lexema_to_file (int lexema_code);
static void finish_scanner_file (void);

static void start_block (void);
static void finish_block (void);
static int add_include_file (const char *name);



#line 55 "d_yacc.c"
typedef union {
#line 72 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"

    IR_node_t pointer;
    position_t pos;
    int flag;
    IR_node_mode_t node_mode;
   }  YYSTYPE;


#line 66 "d_yacc.c"
#define NUMBER 257
#define CHARACTER 258
#define STRING 259
#define IDENT 260
#define BREAK 261
#define CATCH 262
#define CHAR 263
#define CLASS 264
#define CONTINUE 265
#define ELSE 266
#define EXT 267
#define EXTERN 268
#define FINAL 269
#define FLOAT 270
#define FOR 271
#define FRIEND 272
#define FUNC 273
#define HIDE 274
#define HIDEBLOCK 275
#define IF 276
#define IN 277
#define INT 278
#define NEW 279
#define NIL 280
#define PUBLIC 281
#define PRIVATE 282
#define RETURN 283
#define TABLE 284
#define THREAD 285
#define THROW 286
#define TRY 287
#define TYPE 288
#define VAR 289
#define VECTOR 290
#define WAIT 291
#define SWAP 292
#define MULT_ASSIGN 293
#define DIV_ASSIGN 294
#define REM_ASSIGN 295
#define PLUS_ASSIGN 296
#define MINUS_ASSIGN 297
#define CONCAT_ASSIGN 298
#define LSHIFT_ASSIGN 299
#define RSHIFT_ASSIGN 300
#define ASHIFT_ASSIGN 301
#define AND_ASSIGN 302
#define XOR_ASSIGN 303
#define OR_ASSIGN 304
#define INCR 305
#define DECR 306
#define DOTS 307
#define INCLUDE 308
#define INCLUSION 309
#define END_OF_FILE 310
#define END_OF_INCLUDE_FILE 311
#define LOGICAL_OR 312
#define LOGICAL_AND 313
#define EQ 314
#define NE 315
#define IDENTITY 316
#define UNIDENTITY 317
#define LE 318
#define GE 319
#define LSHIFT 320
#define RSHIFT 321
#define ASHIFT 322

YYSTYPE  yylval;

int yychar;

int yydebug;

#ifndef  YYDEBUG
#define  YYDEBUG 0
#endif

/* Max code of all tokens. */
#define YYLAST_TOKEN_CODE 322

/* Undefined internal code for tokens. */
#define YYNO_TOKEN_INTERNAL_CODE 94

/* Code for token `error'. */
#define YYERRCODE 256

/* Token class of token `error'. */
#define YYERRCLASS 82

/* Base of empty action vector. */
#define YYNO_ACTION_BASE -95

/* An element of action check vector. */
#define YYNO_STATE 452

/* Final state of the parser. */
#define YYFINAL 451

/* An element of action vector and default action vector. */
#define YYNO_ACTION 0

/* An element of action vector (first pop-shift-action). */
#define YY1POP_SHIFT_ACTION 452

/* An element of action vector (first reduce). */
#define YY1REDUCE 452

/* Number of different reduce actions. */
#define YYNREDUCES 233

/* An element of action vector (the first look ahead table number). */
#define YY1LOOK_AHEAD_TABLE_VALUE 685

/* Base of the look ahead tables value.  The order number of the
   look ahead table is action look ahead table value + this value. */
#define YYLOOK_AHEAD_TABLE_BASE -233

/* Vector for translating external token codes to internal codes. */
static const unsigned short yytranslate[] = {
   93,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    79,    94,    80,    94,    78,    61,    94,
   83,    84,    76,    74,    89,    75,    91,    77,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    55,    90,
   66,    92,    67,    56,    73,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    85,    94,    86,    60,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    87,    59,    88,    81,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    94,    94,    94,    94,
   94,    94,    94,    94,    94,    94,    82,     0,     1,     2,
    3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
   13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
   23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
   33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
   43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
   53,    54,    57,    58,    62,    63,    64,    65,    68,    69,
   70,    71,    72};

/* Comb vector for actions. */
static const unsigned short yyaction[] = {
    0,     0,   408,   383,    38,    29,     0,   438,   377,    30,
    0,    18,    14,    20,     0,    28,    23,   375,     0,    52,
   27,     0,     0,     0,     0,    21,    22,    31,     0,   376,
   32,   622,     0,    12,     0,    33,     0,     0,     0,    47,
    0,     0,     0,     0,     0,     0,     0,     0,     0,    39,
   40,     0,    16,   684,   450,    78,    79,   315,   318,   319,
  320,   321,   322,   323,   324,   325,   326,   327,   328,   329,
   39,    40,   388,     0,   409,    78,    79,     0,     0,     0,
    0,     0,     7,    11,    54,   582,   439,    42,   620,   291,
   76,   582,    77,   451,    42,   290,    53,     0,     0,     0,
    0,    42,     7,     0,     0,   233,   180,   229,    46,   230,
  181,     0,   182,   232,   317,    65,    66,    71,    38,   291,
  233,   410,   229,     0,   230,   290,     0,    62,   232,   185,
  194,    78,    79,   108,   109,   110,   187,    63,     0,   192,
  188,   189,   165,     0,   186,     0,   184,     0,    38,    73,
  191,   193,   547,     0,   195,   428,   190,    65,    66,    71,
   38,     0,    78,    79,     0,   271,    76,    90,    77,    62,
  272,   167,     0,     0,     0,   162,     0,     0,     0,    63,
  105,   106,   107,   108,   109,   110,     0,     0,     0,    58,
   59,   220,     0,   180,    57,    61,    60,   181,    68,   182,
   69,   211,    70,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,   108,   109,   110,     0,
    0,    58,    59,    90,     0,     0,    57,    61,    60,   177,
   68,     0,    69,     0,    70,    65,    66,    71,    38,     0,
    0,     0,     0,     0,     0,     0,     0,    62,   102,   103,
  104,   105,   106,   107,   108,   109,   110,    63,    86,    87,
   88,    89,    91,    92,    93,    94,    95,    96,    97,    98,
   99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
  109,   110,    65,    66,    71,    38,   226,   431,     0,   291,
    0,     0,     0,     0,    62,   290,     0,     0,     0,    65,
   66,    71,    38,     0,    63,     0,     0,     0,     0,    58,
   59,    62,     0,     0,    57,    61,    60,     0,    68,     0,
   69,    63,    70,    65,    66,    71,    38,   291,   291,     0,
    0,     0,     0,   290,   290,    62,     0,    65,    66,    71,
   38,     0,     0,     0,     0,    63,     0,     0,     0,    62,
  106,   107,   108,   109,   110,     0,    58,    59,     0,    63,
    0,    57,    61,    60,     0,    68,     0,    69,   390,    70,
   78,    79,     0,    58,    59,     0,     0,     0,    57,    61,
   60,     0,    68,     0,    69,   223,    70,    65,    66,    71,
   38,     0,     0,     0,     0,     0,     0,    58,    59,    62,
    0,   180,    57,    61,    60,   181,    68,   182,    69,    63,
   70,    58,    59,     0,     0,     0,    57,    61,    60,     0,
   68,     0,    69,     0,    70,    65,    66,    71,    38,   105,
  106,   107,   108,   109,   110,     0,     0,    62,     0,     0,
  203,    65,    66,    71,    38,     0,     0,    63,     0,     0,
    0,     0,     0,    62,     0,     0,     0,    65,    66,    71,
   38,    58,    59,    63,     0,     0,    57,    61,    60,    62,
   68,     0,    69,     0,    70,     0,     0,     0,     0,    63,
   65,    66,    71,    38,    38,     0,     0,     0,     0,     0,
    0,     0,    62,   105,   106,   107,   108,   109,   110,    58,
   59,     0,    63,     0,    57,    61,    60,     0,    68,     0,
   69,   291,    70,     0,     0,    58,    59,   290,     0,     0,
   57,    61,    60,     0,    68,     0,    69,     0,    70,     0,
    0,    58,    59,     0,     0,     0,    57,    61,    60,     0,
   68,     0,    69,     0,    70,     0,    65,    66,    71,    38,
    0,     0,     0,     0,    58,    59,     0,     0,    62,    57,
   61,    60,     0,    68,     0,    69,     0,    70,    63,    65,
   66,    71,    38,     0,     0,   207,     0,     0,     0,     0,
    0,    62,     0,    65,    66,    71,    38,     0,     0,     0,
    0,    63,     0,     0,     0,    62,     0,    65,    66,    71,
   38,     0,     0,     0,     0,    63,     0,     0,     0,    62,
  102,   103,   104,   105,   106,   107,   108,   109,   110,    63,
   58,    59,   291,     0,     0,    57,    61,    60,   290,    68,
    0,    69,     0,    70,   102,   103,   104,   105,   106,   107,
  108,   109,   110,    58,    59,     0,     0,     0,    57,    61,
   60,     0,    68,     0,    69,     0,    70,    58,    59,     0,
    0,     0,    57,    61,    60,     0,    68,     0,    69,     0,
   70,    58,    59,     0,     0,   291,    57,    61,    60,     0,
   68,   290,    69,     0,    70,    65,    66,    71,    38,     0,
    0,     0,     0,     0,     0,     0,     0,    62,   102,   103,
  104,   105,   106,   107,   108,   109,   110,    63,    65,    66,
   71,    38,     0,     0,     0,     0,    78,    79,     0,     0,
   62,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   63,    98,    99,   100,   101,   102,   103,   104,   105,   106,
  107,   108,   109,   110,     0,    65,    66,    71,    38,   170,
  547,   171,     0,   172,     0,     0,     0,    62,     0,    58,
   59,     0,     0,     0,    57,    61,    60,    63,    68,     0,
   69,     0,    70,     0,     0,     0,     0,     0,     0,     0,
    0,     0,    58,    59,     0,     0,     0,    57,    61,    60,
    0,    68,     0,    69,     0,    70,    98,    99,   100,   101,
  102,   103,   104,   105,   106,   107,   108,   109,   110,    65,
   66,    71,    38,   196,   304,     0,     0,     0,     0,    58,
   59,    62,     0,     0,    57,    61,    60,     0,    68,     0,
   69,    63,    70,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,    65,    66,    71,    38,
    0,     0,     0,     0,     0,     0,     0,     0,    62,     0,
    0,    20,     0,     0,     0,     0,     0,     0,    63,    98,
   99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
  109,   110,     0,    58,    59,     0,     0,     0,    57,    61,
   60,     0,    68,     0,    69,     0,    70,    65,    66,    71,
   38,     0,     0,     0,     0,     0,     0,     0,     0,    62,
    0,     0,     0,     0,     0,     0,     0,     0,     0,    63,
   58,    59,     0,   240,     0,    57,    61,    60,     0,    68,
    0,    69,     0,    70,    94,    95,    96,    97,    98,    99,
  100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
  110,    65,    66,    71,    38,   356,   291,     0,     0,     0,
    0,     0,   290,    62,     0,   214,     0,     0,     0,     0,
    0,    58,    59,    63,     0,     0,    57,    61,    60,     0,
   68,     0,    69,     0,    70,    93,    94,    95,    96,    97,
   98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
  108,   109,   110,   175,   306,    65,    66,    71,    38,     0,
    0,     0,     0,     0,     0,     0,     0,    62,     0,     0,
    0,     0,     0,     0,     0,    58,    59,    63,     0,     0,
   57,    61,    60,     0,    68,     0,    69,     0,    70,    92,
   93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
  103,   104,   105,   106,   107,   108,   109,   110,     0,    65,
   66,    71,    38,     0,     0,     0,     0,     0,     0,     0,
    0,    62,     0,     0,     0,     0,     0,     0,     0,    58,
   59,    63,     0,     0,    57,    61,    60,     0,    68,     0,
   69,     0,    70,    91,    92,    93,    94,    95,    96,    97,
   98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
  108,   109,   110,    65,    66,    71,    38,    90,     0,     0,
    0,     0,     0,     0,     0,    62,     0,     0,     0,    65,
   66,    71,    38,    58,    59,    63,     0,     0,    57,    61,
   60,    62,    68,     0,    69,     0,    70,     0,     0,     0,
    0,    63,     0,     0,   199,     0,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,   657,     0,     0,    90,
    0,     0,     0,    65,    66,    71,    38,    58,    59,     0,
    0,     0,    57,    61,    60,    62,    68,     0,    69,     0,
   70,     0,     0,    58,    59,    63,     0,     0,    57,    61,
   60,     0,    68,     0,    69,     0,    70,    89,    91,    92,
   93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
  103,   104,   105,   106,   107,   108,   109,   110,    90,    65,
   66,    71,    38,   419,     0,     0,     0,     0,     0,     0,
    0,    62,   428,     0,     0,     0,     0,    58,    59,     0,
    0,    63,    57,    61,    60,     0,    68,     0,    69,     0,
   70,     7,     0,   159,    87,    88,    89,    91,    92,    93,
   94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
  104,   105,   106,   107,   108,   109,   110,    90,     0,   442,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,    58,    59,     0,     0,     0,    57,    61,
   60,    90,    68,     0,    69,     0,    70,     0,     0,     0,
    0,     0,     0,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,    90,    87,    88,    89,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,    87,    88,    89,    91,    92,    93,    94,    95,
   96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
  106,   107,   108,   109,   110,    65,    66,    71,    38,    90,
  183,   244,     0,     0,     0,     0,     0,    62,     0,    65,
   66,    71,    38,     0,     0,     0,     0,    63,     0,     0,
    0,    62,     0,    78,    79,     0,     0,     0,     0,     0,
    0,    63,     0,     0,     0,    87,    88,    89,    91,    92,
   93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
  103,   104,   105,   106,   107,   108,   109,   110,    76,   401,
   77,    90,     0,   198,     0,    65,    66,    71,    38,    58,
   59,     0,     0,     0,    57,    61,    60,    62,    68,     0,
   69,     0,    70,    58,    59,   352,     0,    63,    57,    61,
   60,   277,    68,   200,    69,     0,    70,    87,    88,    89,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
   90,    65,    66,    71,    38,   202,     0,     0,     0,     0,
    0,     0,     0,    62,     0,     0,     0,     0,     0,    58,
   59,     0,     0,    63,    57,    61,    60,     0,    68,   204,
   69,     0,    70,     0,     0,     0,    87,    88,    89,    91,
   92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
  102,   103,   104,   105,   106,   107,   108,   109,   110,    90,
    0,     0,     0,     0,   206,    65,    66,    71,    38,     0,
    0,     0,     0,     0,     0,    58,    59,    62,     0,     0,
   57,    61,    60,     0,    68,   208,    69,    63,    70,     0,
    0,     0,     0,    78,    79,    87,    88,    89,    91,    92,
   93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
  103,   104,   105,   106,   107,   108,   109,   110,    90,    65,
   66,    71,    38,   210,   180,   406,     0,     0,   181,     0,
  182,    62,     0,     0,     0,     0,     0,     0,     0,    58,
   59,    63,     0,     0,    57,    61,    60,     0,    68,     0,
   69,     0,    70,     0,    87,    88,    89,    91,    92,    93,
   94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
  104,   105,   106,   107,   108,   109,   110,    90,     0,   396,
    0,     0,   213,    65,    66,    71,    38,     0,     0,     0,
    0,     0,     0,    58,    59,    62,     0,     0,    57,    61,
   60,     0,    68,     0,    69,    63,    70,     0,     0,     0,
    0,     0,     0,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,    90,    65,    66,    71,
   38,   216,   657,     0,     0,     0,   217,     0,     0,    62,
    0,     0,     0,     0,     0,     0,     0,    58,    59,    63,
    0,     0,    57,    61,    60,     0,    68,     0,    69,     0,
   70,     0,    87,    88,    89,    91,    92,    93,    94,    95,
   96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
  106,   107,   108,   109,   110,    90,     0,     0,     0,     0,
  219,    65,    66,    71,    38,     0,     0,     0,     0,     0,
    0,    58,    59,    62,     0,     0,    57,    61,    60,     0,
   68,     0,    69,    63,    70,     0,     0,    78,    79,     0,
    0,    87,    88,    89,    91,    92,    93,    94,    95,    96,
   97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
  107,   108,   109,   110,    90,    65,    66,    71,    38,   222,
  170,     0,   171,     0,   172,     0,     0,    62,     0,     0,
    0,     0,     0,     0,     0,    58,    59,    63,     0,     0,
   57,    61,    60,     0,    68,     0,    69,     0,    70,     0,
   87,    88,    89,    91,    92,    93,    94,    95,    96,    97,
   98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
  108,   109,   110,    90,     0,     0,     0,     0,   225,    65,
   66,    71,    38,     0,   233,     0,   229,     0,   230,    58,
   59,    62,   232,     0,    57,    61,    60,     0,    68,     0,
   69,    63,    70,     0,     0,     0,   236,     0,   551,    87,
   88,    89,    91,    92,    93,    94,    95,    96,    97,    98,
   99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
  109,   110,    90,    65,    66,    71,    38,   228,     0,     0,
    0,     0,   246,     0,     0,    62,     0,     0,     0,     0,
    0,     0,     0,    58,    59,    63,     0,     0,    57,    61,
   60,     0,    68,     0,    69,     0,    70,     0,    87,    88,
   89,    91,    92,    93,    94,    95,    96,    97,    98,    99,
  100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
  110,    90,   291,    65,    66,    71,    38,     0,   290,     0,
    0,     0,     0,     0,     0,    62,     0,    58,    59,     0,
    0,     0,    57,    61,    60,    63,    68,     0,    69,     0,
   70,     0,     0,     0,     0,     0,     0,    87,    88,    89,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
   90,     0,     0,     0,     0,     0,     0,    65,    66,    71,
   38,     0,     0,     0,     0,     0,     0,    58,    59,    62,
    0,     0,    57,    61,    60,   249,    68,     0,    69,    63,
   70,     0,     0,     0,     0,     0,    87,    88,    89,    91,
   92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
  102,   103,   104,   105,   106,   107,   108,   109,   110,    90,
   42,    65,    66,    71,    38,     0,     0,     0,   251,     0,
    0,     0,     0,    62,     0,     0,     0,     0,     0,     0,
    0,    58,    59,    63,     0,     0,    57,    61,    60,   254,
   68,     0,    69,     0,    70,    87,    88,    89,    91,    92,
   93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
  103,   104,   105,   106,   107,   108,   109,   110,     0,     0,
  291,    65,    66,    71,    38,   256,   290,     0,     0,     0,
    0,     0,     0,    62,     0,    58,    59,     0,     0,     0,
   57,    61,    60,    63,    68,     0,    69,     0,    70,    65,
   66,    71,    38,     0,     0,     0,     0,     0,     0,     0,
    0,    62,     0,    65,    66,    71,    38,     0,     0,     0,
    0,    63,     0,     0,     0,    62,   430,    65,    66,    71,
   38,     0,     0,     0,     0,    63,     0,     0,     0,    62,
    0,    65,    66,    71,    38,    58,    59,     0,     0,    63,
   57,    61,    60,    62,    68,     0,    69,     0,    70,    65,
   66,    71,    38,    63,     0,     0,     0,     0,     0,     0,
    0,    62,     0,    58,    59,     0,     0,     0,    57,    61,
   60,    63,    68,     0,    69,     0,    70,    58,    59,     0,
    0,     0,    57,    61,    60,     0,    68,   291,    69,     0,
   70,    58,    59,   290,     0,     0,    57,    61,    60,     0,
   68,     0,    69,     0,    70,    58,    59,    90,     0,     0,
   57,    61,    60,     0,    68,     0,    69,     0,    70,    65,
   66,    71,    38,    58,    59,     0,     0,     0,    57,    61,
   60,    62,    68,   592,    69,     0,    70,     0,     0,   592,
    0,    63,     0,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,    65,    66,    71,    38,
    0,    90,     0,     0,     0,     0,     0,     0,    62,     0,
    0,     0,     0,     0,     0,     0,     0,     0,    63,     0,
    0,     0,     0,    58,    59,     0,     0,     0,    57,    61,
   60,     0,    68,     0,    69,     0,    70,    87,    88,    89,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
  416,   433,     0,     0,     0,   283,    78,    79,     0,     0,
   58,    59,     0,     0,     0,    57,    61,    60,   279,    68,
  386,    69,     0,    70,    38,    29,   233,     0,   229,    30,
  230,    18,    14,    20,   232,    28,    23,   180,     0,     0,
   27,   181,     0,   182,     0,    21,    22,    31,     0,     0,
   32,   622,     0,    12,     0,    33,     0,     0,     0,     0,
    0,     0,     0,     0,    65,    66,    71,    38,     0,    39,
   40,     0,    16,    38,    29,     0,    62,     0,    30,     0,
   18,    14,    20,     0,    28,    23,    63,     0,     0,    27,
    0,     0,     0,     0,    21,    22,    31,     0,     0,    32,
  622,     0,    12,    11,    33,   582,   363,     0,   620,     0,
    0,   582,    65,    66,    71,    38,     0,     0,    39,    40,
    0,    16,     0,     0,    62,    90,     0,     0,    20,     0,
    0,   291,     0,     0,    63,     0,   291,   290,    58,    59,
    0,     0,   290,    57,    61,    60,     0,    68,     0,    69,
    0,    70,    11,     0,   582,     0,     0,   620,     0,     0,
  582,    87,    88,    89,    91,    92,    93,    94,    95,    96,
   97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
  107,   108,   109,   110,    90,     0,    58,    59,     0,     0,
    0,    57,    61,    60,     0,    68,   672,    69,   394,    70,
  561,     0,   672,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   87,    88,    89,    91,    92,    93,    94,    95,    96,    97,
   98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
  108,   109,   110,    38,    29,     0,     0,     0,    30,     0,
   18,    14,    20,   441,    28,    23,     0,     0,     0,    27,
    0,     0,     0,     0,    21,    22,    31,     0,     0,    32,
  622,     0,    12,     0,    33,     0,     0,     0,     0,     0,
    0,     0,     0,    65,    66,    71,    38,     0,    39,    40,
    0,    16,    38,    29,     0,    62,     0,    30,     0,    18,
   14,    20,     0,    28,    23,    63,     0,     0,    27,     0,
    0,     0,     0,    21,    22,    31,     0,     0,    32,   622,
    0,    12,    11,    33,   582,     0,     0,   620,     0,     0,
  582,    65,    66,    71,    38,     0,     0,    39,    40,     0,
   16,     0,     0,    62,     0,     0,     0,     0,     0,     0,
    0,     0,     0,    63,     0,     0,     0,    58,    59,     0,
  398,     0,    57,    61,    60,   312,    68,     0,    69,     0,
   70,    11,     0,   582,     0,     0,   620,     0,     0,   582,
  315,   318,   319,   320,   321,   322,   323,   324,   325,   326,
  327,   328,   329,    39,    40,    65,    66,    71,    38,     0,
    0,     0,    90,     0,     0,    58,    59,    62,     0,     0,
   57,    61,    60,     0,    68,     0,    69,    63,    70,     0,
  349,   617,     0,     0,     0,     0,     0,     0,   233,     0,
  229,     0,   230,     0,     0,     0,   232,   317,    87,    88,
   89,    91,    92,    93,    94,    95,    96,    97,    98,    99,
  100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
  110,    90,     0,     0,     0,     0,     0,     0,   447,    58,
   59,     0,     0,     0,    57,    61,    60,     0,    68,   291,
   69,     0,    70,     0,     0,   290,     0,     0,     0,     0,
  402,     0,     0,     0,    20,     0,     0,    87,    88,    89,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
  382,    38,    29,     0,     0,   344,    30,     0,    18,    14,
   20,     0,    28,    23,    90,     0,     0,    27,     0,     0,
    0,     0,    21,    22,    31,     0,     0,    32,   622,     0,
   12,     0,    33,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,     0,   394,     0,    39,    40,     0,    16,
   87,    88,    89,    91,    92,    93,    94,    95,    96,    97,
   98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
  108,   109,   110,     0,     0,     0,     0,     0,     0,   363,
   11,     0,   582,     0,     0,   620,    38,    29,   582,     0,
    0,    30,     0,    18,    14,    20,     0,    28,    23,     0,
    0,     0,    27,     0,     0,     0,     0,    21,    22,    31,
    0,     0,    32,   622,     0,    12,     0,    33,     0,     0,
    0,     0,     0,     0,     0,     0,    65,    66,    71,    38,
    0,    39,    40,     0,    16,    38,    29,     0,    62,     0,
   30,     0,    18,    14,    20,     0,    28,    23,    63,     0,
    0,    27,     0,     0,     0,     0,    21,    22,    31,     0,
    0,    32,   622,     0,    12,    11,    33,   582,     0,     0,
  620,     0,     0,   582,     0,     0,     0,     0,     0,     0,
   39,    40,     0,    16,     0,     0,     0,    90,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   58,    59,     0,     0,     0,    57,    61,    60,   358,    68,
    0,    69,     0,    70,    11,     0,   582,     0,     0,   620,
    0,     0,   582,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,     0,    38,    29,     0,
    0,   366,    30,     0,    18,    14,    20,     0,    28,    23,
    0,     0,     0,    27,     0,     0,     0,     0,    21,    22,
   31,     0,     0,    32,   622,     0,    12,     0,    33,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,    39,    40,     0,    16,    38,    29,     0,     0,
    0,    30,     0,    18,    14,    20,     0,    28,    23,     0,
    0,     0,    27,     0,     0,     0,     0,    21,    22,    31,
    0,     0,    32,   622,     0,    12,    11,    33,   582,   407,
    0,   620,     0,     0,   582,     0,    65,    66,    71,    38,
    0,    39,    40,     0,    16,    38,    29,     0,    62,     0,
   30,     0,    18,    14,    20,     0,    28,    23,    63,     0,
    0,    27,     0,     0,     0,     0,    21,    22,    31,     0,
    0,    32,   622,     0,    12,    11,    33,   582,     0,     0,
  620,     0,     0,   582,     0,     0,     0,     0,     0,     0,
   39,    40,     0,    16,     0,     0,     0,    90,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
   58,    59,     0,     0,     0,    57,    61,    60,     0,    68,
    0,    69,     0,    70,    11,     0,   582,     0,     0,   620,
    0,     0,   582,    87,    88,    89,    91,    92,    93,    94,
   95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
  105,   106,   107,   108,   109,   110,     0,     0,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0};

/* Check vector for actions. */
static const unsigned short yyacheck[] = {
  452,   452,    16,    17,     6,     6,   452,    13,    19,     6,
  452,     6,     6,     6,   452,     6,     6,    19,   452,    50,
    6,   452,   452,   452,   452,     6,     6,     6,   452,    19,
    6,     6,   452,     6,   452,     6,   452,   452,   452,    36,
  452,   452,   452,   452,   452,   452,   452,   452,   452,     6,
    6,   452,     6,     4,     5,    11,    11,    25,    25,    25,
   25,    25,    25,    25,    25,    25,    25,    25,    25,    25,
   25,    25,   386,   452,    16,   236,   236,   452,   452,   452,
  452,   452,     4,     6,    52,     6,    13,    15,     6,    24,
   11,     6,    11,     1,    47,    24,    50,   452,   452,   452,
  452,    37,    45,   452,   452,    25,   236,    25,    45,    25,
  236,   452,   236,    25,    25,    54,    54,    54,    54,   335,
   64,   409,    64,   452,    64,   335,   452,    54,    64,    67,
   67,    73,    73,   118,   118,   118,    67,    54,   452,    67,
   67,    67,    81,   452,    67,   452,    67,   452,   333,    70,
   67,    67,    80,   452,    67,   425,    67,    68,    68,    68,
   68,   452,   306,   306,   452,    55,    73,    56,    73,    68,
   55,    69,   452,   452,   452,    82,   452,   452,   452,    68,
  126,   126,   126,   126,   126,   126,   452,   452,   452,    54,
   54,   187,   452,   306,    54,    54,    54,   306,    54,   306,
   54,   191,    54,    56,    56,    56,    56,    56,    56,    56,
   56,    56,    56,    56,    56,    56,    56,    56,    56,    56,
   56,    56,    56,    56,    56,    56,   120,   120,   120,   452,
  452,    68,    68,    85,   452,   452,    68,    68,    68,    68,
   68,   452,    68,   452,    68,    84,    84,    84,    84,   452,
  452,   452,   452,   452,   452,   452,   452,    84,   132,   132,
  132,   132,   132,   132,   132,   132,   132,    84,    85,    85,
   85,    85,    85,    85,    85,    85,    85,    85,    85,    85,
   85,    85,    85,    85,    85,    85,    85,    85,    85,    85,
   85,    85,    86,    86,    86,    86,   185,   430,   452,   446,
  452,   452,   452,   452,    86,   446,   452,   452,   452,   111,
  111,   111,   111,   452,    86,   452,   452,   452,   452,    84,
   84,   111,   452,   452,    84,    84,    84,   452,    84,   452,
   84,   111,    84,   113,   113,   113,   113,   288,   331,   452,
  452,   452,   452,   288,   331,   113,   452,   115,   115,   115,
  115,   452,   452,   452,   452,   113,   452,   452,   452,   115,
  122,   122,   122,   122,   122,   452,    86,    86,   452,   115,
  452,    86,    86,    86,   452,    86,   452,    86,   389,    86,
  177,   177,   452,   111,   111,   452,   452,   452,   111,   111,
  111,   452,   111,   452,   111,   186,   111,   117,   117,   117,
  117,   452,   452,   452,   452,   452,   452,   113,   113,   117,
  452,   177,   113,   113,   113,   177,   113,   177,   113,   117,
  113,   115,   115,   452,   452,   452,   115,   115,   115,   452,
  115,   452,   115,   452,   115,   119,   119,   119,   119,   128,
  128,   128,   128,   128,   128,   452,   452,   119,   452,   452,
  193,   121,   121,   121,   121,   452,   452,   119,   452,   452,
  452,   452,   452,   121,   452,   452,   452,   123,   123,   123,
  123,   117,   117,   121,   452,   452,   117,   117,   117,   123,
  117,   452,   117,   452,   117,   452,   452,   452,   452,   123,
  125,   125,   125,   125,   370,   452,   452,   452,   452,   452,
  452,   452,   125,   124,   124,   124,   124,   124,   124,   119,
  119,   452,   125,   452,   119,   119,   119,   452,   119,   452,
  119,   411,   119,   452,   452,   121,   121,   411,   452,   452,
  121,   121,   121,   452,   121,   452,   121,   452,   121,   452,
  452,   123,   123,   452,   452,   452,   123,   123,   123,   452,
  123,   452,   123,   452,   123,   452,   127,   127,   127,   127,
  452,   452,   452,   452,   125,   125,   452,   452,   127,   125,
  125,   125,   452,   125,   452,   125,   452,   125,   127,   129,
  129,   129,   129,   452,   452,   192,   452,   452,   452,   452,
  452,   129,   452,   131,   131,   131,   131,   452,   452,   452,
  452,   129,   452,   452,   452,   131,   452,   133,   133,   133,
  133,   452,   452,   452,   452,   131,   452,   452,   452,   133,
  134,   134,   134,   134,   134,   134,   134,   134,   134,   133,
  127,   127,   339,   452,   452,   127,   127,   127,   339,   127,
  452,   127,   452,   127,   130,   130,   130,   130,   130,   130,
  130,   130,   130,   129,   129,   452,   452,   452,   129,   129,
  129,   452,   129,   452,   129,   452,   129,   131,   131,   452,
  452,   452,   131,   131,   131,   452,   131,   452,   131,   452,
  131,   133,   133,   452,   452,   440,   133,   133,   133,   452,
  133,   440,   133,   452,   133,   135,   135,   135,   135,   452,
  452,   452,   452,   452,   452,   452,   452,   135,   136,   136,
  136,   136,   136,   136,   136,   136,   136,   135,   137,   137,
  137,   137,   452,   452,   452,   452,   167,   167,   452,   452,
  137,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  137,   138,   138,   138,   138,   138,   138,   138,   138,   138,
  138,   138,   138,   138,   452,   139,   139,   139,   139,   167,
  173,   167,   452,   167,   452,   452,   452,   139,   452,   135,
  135,   452,   452,   452,   135,   135,   135,   139,   135,   452,
  135,   452,   135,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   137,   137,   452,   452,   452,   137,   137,   137,
  452,   137,   452,   137,   452,   137,   140,   140,   140,   140,
  140,   140,   140,   140,   140,   140,   140,   140,   140,   141,
  141,   141,   141,   195,   303,   452,   452,   452,   452,   139,
  139,   141,   452,   452,   139,   139,   139,   452,   139,   452,
  139,   141,   139,   142,   142,   142,   142,   142,   142,   142,
  142,   142,   142,   142,   142,   142,   143,   143,   143,   143,
  452,   452,   452,   452,   452,   452,   452,   452,   143,   452,
  452,   403,   452,   452,   452,   452,   452,   452,   143,   144,
  144,   144,   144,   144,   144,   144,   144,   144,   144,   144,
  144,   144,   452,   141,   141,   452,   452,   452,   141,   141,
  141,   452,   141,   452,   141,   452,   141,   145,   145,   145,
  145,   452,   452,   452,   452,   452,   452,   452,   452,   145,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   145,
  143,   143,   452,   237,   452,   143,   143,   143,   452,   143,
  452,   143,   452,   143,   146,   146,   146,   146,   146,   146,
  146,   146,   146,   146,   146,   146,   146,   146,   146,   146,
  146,   147,   147,   147,   147,   355,   432,   452,   452,   452,
  452,   452,   432,   147,   452,   190,   452,   452,   452,   452,
  452,   145,   145,   147,   452,   452,   145,   145,   145,   452,
  145,   452,   145,   452,   145,   148,   148,   148,   148,   148,
  148,   148,   148,   148,   148,   148,   148,   148,   148,   148,
  148,   148,   148,   174,   304,   149,   149,   149,   149,   452,
  452,   452,   452,   452,   452,   452,   452,   149,   452,   452,
  452,   452,   452,   452,   452,   147,   147,   149,   452,   452,
  147,   147,   147,   452,   147,   452,   147,   452,   147,   150,
  150,   150,   150,   150,   150,   150,   150,   150,   150,   150,
  150,   150,   150,   150,   150,   150,   150,   150,   452,   151,
  151,   151,   151,   452,   452,   452,   452,   452,   452,   452,
  452,   151,   452,   452,   452,   452,   452,   452,   452,   149,
  149,   151,   452,   452,   149,   149,   149,   452,   149,   452,
  149,   452,   149,   152,   152,   152,   152,   152,   152,   152,
  152,   152,   152,   152,   152,   152,   152,   152,   152,   152,
  152,   152,   152,   153,   153,   153,   153,   154,   452,   452,
  452,   452,   452,   452,   452,   153,   452,   452,   452,   155,
  155,   155,   155,   151,   151,   153,   452,   452,   151,   151,
  151,   155,   151,   452,   151,   452,   151,   452,   452,   452,
  452,   155,   452,   452,   194,   452,   154,   154,   154,   154,
  154,   154,   154,   154,   154,   154,   154,   154,   154,   154,
  154,   154,   154,   154,   154,   154,   413,   452,   452,   156,
  452,   452,   452,   157,   157,   157,   157,   153,   153,   452,
  452,   452,   153,   153,   153,   157,   153,   452,   153,   452,
  153,   452,   452,   155,   155,   157,   452,   452,   155,   155,
  155,   452,   155,   452,   155,   452,   155,   156,   156,   156,
  156,   156,   156,   156,   156,   156,   156,   156,   156,   156,
  156,   156,   156,   156,   156,   156,   156,   156,   158,   159,
  159,   159,   159,   418,   452,   452,   452,   452,   452,   452,
  452,   159,   434,   452,   452,   452,   452,   157,   157,   452,
  452,   159,   157,   157,   157,   452,   157,   452,   157,   452,
  157,   418,   452,   158,   158,   158,   158,   158,   158,   158,
  158,   158,   158,   158,   158,   158,   158,   158,   158,   158,
  158,   158,   158,   158,   158,   158,   158,   160,   452,   441,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   452,   159,   159,   452,   452,   452,   159,   159,
  159,   161,   159,   452,   159,   452,   159,   452,   452,   452,
  452,   452,   452,   160,   160,   160,   160,   160,   160,   160,
  160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
  160,   160,   160,   160,   160,   160,   176,   161,   161,   161,
  161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
  161,   161,   161,   161,   161,   161,   161,   161,   161,   161,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   176,   176,   176,   176,   176,   176,   176,   176,
  176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
  176,   176,   176,   176,   176,   196,   196,   196,   196,   197,
  176,   235,   452,   452,   452,   452,   452,   196,   452,   199,
  199,   199,   199,   452,   452,   452,   452,   196,   452,   452,
  452,   199,   452,   249,   249,   452,   452,   452,   452,   452,
  452,   199,   452,   452,   452,   197,   197,   197,   197,   197,
  197,   197,   197,   197,   197,   197,   197,   197,   197,   197,
  197,   197,   197,   197,   197,   197,   197,   197,   249,   392,
  249,   201,   452,   197,   452,   203,   203,   203,   203,   196,
  196,   452,   452,   452,   196,   196,   196,   203,   196,   452,
  196,   452,   196,   199,   199,   351,   452,   203,   199,   199,
  199,   276,   199,   199,   199,   452,   199,   201,   201,   201,
  201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
  201,   201,   201,   201,   201,   201,   201,   201,   201,   201,
  205,   207,   207,   207,   207,   201,   452,   452,   452,   452,
  452,   452,   452,   207,   452,   452,   452,   452,   452,   203,
  203,   452,   452,   207,   203,   203,   203,   452,   203,   203,
  203,   452,   203,   452,   452,   452,   205,   205,   205,   205,
  205,   205,   205,   205,   205,   205,   205,   205,   205,   205,
  205,   205,   205,   205,   205,   205,   205,   205,   205,   209,
  452,   452,   452,   452,   205,   211,   211,   211,   211,   452,
  452,   452,   452,   452,   452,   207,   207,   211,   452,   452,
  207,   207,   207,   452,   207,   207,   207,   211,   207,   452,
  452,   452,   452,   279,   279,   209,   209,   209,   209,   209,
  209,   209,   209,   209,   209,   209,   209,   209,   209,   209,
  209,   209,   209,   209,   209,   209,   209,   209,   212,   214,
  214,   214,   214,   209,   279,   405,   452,   452,   279,   452,
  279,   214,   452,   452,   452,   452,   452,   452,   452,   211,
  211,   214,   452,   452,   211,   211,   211,   452,   211,   452,
  211,   452,   211,   452,   212,   212,   212,   212,   212,   212,
  212,   212,   212,   212,   212,   212,   212,   212,   212,   212,
  212,   212,   212,   212,   212,   212,   212,   215,   452,   395,
  452,   452,   212,   217,   217,   217,   217,   452,   452,   452,
  452,   452,   452,   214,   214,   217,   452,   452,   214,   214,
  214,   452,   214,   452,   214,   217,   214,   452,   452,   452,
  452,   452,   452,   215,   215,   215,   215,   215,   215,   215,
  215,   215,   215,   215,   215,   215,   215,   215,   215,   215,
  215,   215,   215,   215,   215,   215,   218,   220,   220,   220,
  220,   215,   422,   452,   452,   452,   215,   452,   452,   220,
  452,   452,   452,   452,   452,   452,   452,   217,   217,   220,
  452,   452,   217,   217,   217,   452,   217,   452,   217,   452,
  217,   452,   218,   218,   218,   218,   218,   218,   218,   218,
  218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
  218,   218,   218,   218,   218,   221,   452,   452,   452,   452,
  218,   223,   223,   223,   223,   452,   452,   452,   452,   452,
  452,   220,   220,   223,   452,   452,   220,   220,   220,   452,
  220,   452,   220,   223,   220,   452,   452,   254,   254,   452,
  452,   221,   221,   221,   221,   221,   221,   221,   221,   221,
  221,   221,   221,   221,   221,   221,   221,   221,   221,   221,
  221,   221,   221,   221,   224,   226,   226,   226,   226,   221,
  254,   452,   254,   452,   254,   452,   452,   226,   452,   452,
  452,   452,   452,   452,   452,   223,   223,   226,   452,   452,
  223,   223,   223,   452,   223,   452,   223,   452,   223,   452,
  224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
  224,   224,   224,   224,   224,   224,   224,   224,   224,   224,
  224,   224,   224,   227,   452,   452,   452,   452,   224,   238,
  238,   238,   238,   452,   334,   452,   334,   452,   334,   226,
  226,   238,   334,   452,   226,   226,   226,   452,   226,   452,
  226,   238,   226,   452,   452,   452,   234,   452,   234,   227,
  227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
  227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
  227,   227,   239,   241,   241,   241,   241,   227,   452,   452,
  452,   452,   245,   452,   452,   241,   452,   452,   452,   452,
  452,   452,   452,   238,   238,   241,   452,   452,   238,   238,
  238,   452,   238,   452,   238,   452,   238,   452,   239,   239,
  239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
  239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
  239,   242,   301,   247,   247,   247,   247,   452,   301,   452,
  452,   452,   452,   452,   452,   247,   452,   241,   241,   452,
  452,   452,   241,   241,   241,   247,   241,   452,   241,   452,
  241,   452,   452,   452,   452,   452,   452,   242,   242,   242,
  242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
  242,   242,   242,   242,   242,   242,   242,   242,   242,   242,
  248,   452,   452,   452,   452,   452,   452,   252,   252,   252,
  252,   452,   452,   452,   452,   452,   452,   247,   247,   252,
  452,   452,   247,   247,   247,   247,   247,   452,   247,   252,
  247,   452,   452,   452,   452,   452,   248,   248,   248,   248,
  248,   248,   248,   248,   248,   248,   248,   248,   248,   248,
  248,   248,   248,   248,   248,   248,   248,   248,   248,   253,
  274,   257,   257,   257,   257,   452,   452,   452,   248,   452,
  452,   452,   452,   257,   452,   452,   452,   452,   452,   452,
  452,   252,   252,   257,   452,   452,   252,   252,   252,   252,
  252,   452,   252,   452,   252,   253,   253,   253,   253,   253,
  253,   253,   253,   253,   253,   253,   253,   253,   253,   253,
  253,   253,   253,   253,   253,   253,   253,   253,   452,   452,
  341,   259,   259,   259,   259,   253,   341,   452,   452,   452,
  452,   452,   452,   259,   452,   257,   257,   452,   452,   452,
  257,   257,   257,   259,   257,   452,   257,   452,   257,   261,
  261,   261,   261,   452,   452,   452,   452,   452,   452,   452,
  452,   261,   452,   263,   263,   263,   263,   452,   452,   452,
  452,   261,   452,   452,   452,   263,   429,   265,   265,   265,
  265,   452,   452,   452,   452,   263,   452,   452,   452,   265,
  452,   267,   267,   267,   267,   259,   259,   452,   452,   265,
  259,   259,   259,   267,   259,   452,   259,   452,   259,   269,
  269,   269,   269,   267,   452,   452,   452,   452,   452,   452,
  452,   269,   452,   261,   261,   452,   452,   452,   261,   261,
  261,   269,   261,   452,   261,   452,   261,   263,   263,   452,
  452,   452,   263,   263,   263,   452,   263,   298,   263,   452,
  263,   265,   265,   298,   452,   452,   265,   265,   265,   452,
  265,   452,   265,   452,   265,   267,   267,   273,   452,   452,
  267,   267,   267,   452,   267,   452,   267,   452,   267,   272,
  272,   272,   272,   269,   269,   452,   452,   452,   269,   269,
  269,   272,   269,   313,   269,   452,   269,   452,   452,   313,
  452,   272,   452,   273,   273,   273,   273,   273,   273,   273,
  273,   273,   273,   273,   273,   273,   273,   273,   273,   273,
  273,   273,   273,   273,   273,   273,   277,   277,   277,   277,
  452,   278,   452,   452,   452,   452,   452,   452,   277,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   277,   452,
  452,   452,   452,   272,   272,   452,   452,   452,   272,   272,
  272,   452,   272,   452,   272,   452,   272,   278,   278,   278,
  278,   278,   278,   278,   278,   278,   278,   278,   278,   278,
  278,   278,   278,   278,   278,   278,   278,   278,   278,   278,
  415,   426,   452,   452,   452,   278,   358,   358,   452,   452,
  277,   277,   452,   452,   452,   277,   277,   277,   277,   277,
  384,   277,   452,   277,   281,   281,   371,   452,   371,   281,
  371,   281,   281,   281,   371,   281,   281,   358,   452,   452,
  281,   358,   452,   358,   452,   281,   281,   281,   452,   452,
  281,   281,   452,   281,   452,   281,   452,   452,   452,   452,
  452,   452,   452,   452,   286,   286,   286,   286,   452,   281,
  281,   452,   281,   284,   284,   452,   286,   452,   284,   452,
  284,   284,   284,   452,   284,   284,   286,   452,   452,   284,
  452,   452,   452,   452,   284,   284,   284,   452,   452,   284,
  284,   452,   284,   281,   284,   281,   368,   452,   281,   452,
  452,   281,   292,   292,   292,   292,   452,   452,   284,   284,
  452,   284,   452,   452,   292,   287,   452,   452,   387,   452,
  452,   295,   452,   452,   292,   452,   372,   295,   286,   286,
  452,   452,   372,   286,   286,   286,   452,   286,   452,   286,
  452,   286,   284,   452,   284,   452,   452,   284,   452,   452,
  284,   287,   287,   287,   287,   287,   287,   287,   287,   287,
  287,   287,   287,   287,   287,   287,   287,   287,   287,   287,
  287,   287,   287,   287,   294,   452,   292,   292,   452,   452,
  452,   292,   292,   292,   452,   292,   292,   292,   387,   292,
  387,   452,   292,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
  294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
  294,   294,   294,   305,   305,   452,   452,   452,   305,   452,
  305,   305,   305,   437,   305,   305,   452,   452,   452,   305,
  452,   452,   452,   452,   305,   305,   305,   452,   452,   305,
  305,   452,   305,   452,   305,   452,   452,   452,   452,   452,
  452,   452,   452,   312,   312,   312,   312,   452,   305,   305,
  452,   305,   308,   308,   452,   312,   452,   308,   452,   308,
  308,   308,   452,   308,   308,   312,   452,   452,   308,   452,
  452,   452,   452,   308,   308,   308,   452,   452,   308,   308,
  452,   308,   305,   308,   305,   452,   452,   305,   452,   452,
  305,   310,   310,   310,   310,   452,   452,   308,   308,   452,
  308,   452,   452,   310,   452,   452,   452,   452,   452,   452,
  452,   452,   452,   310,   452,   452,   452,   312,   312,   452,
  397,   452,   312,   312,   312,   311,   312,   452,   312,   452,
  312,   308,   452,   308,   452,   452,   308,   452,   452,   308,
  311,   311,   311,   311,   311,   311,   311,   311,   311,   311,
  311,   311,   311,   311,   311,   337,   337,   337,   337,   452,
  452,   452,   338,   452,   452,   310,   310,   337,   452,   452,
  310,   310,   310,   452,   310,   452,   310,   337,   310,   452,
  347,   310,   452,   452,   452,   452,   452,   452,   311,   452,
  311,   452,   311,   452,   452,   452,   311,   311,   338,   338,
  338,   338,   338,   338,   338,   338,   338,   338,   338,   338,
  338,   338,   338,   338,   338,   338,   338,   338,   338,   338,
  338,   343,   452,   452,   452,   452,   452,   452,   445,   337,
  337,   452,   452,   452,   337,   337,   337,   452,   337,   420,
  337,   452,   337,   452,   452,   420,   452,   452,   452,   452,
  401,   452,   452,   452,   444,   452,   452,   343,   343,   343,
  343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
  343,   343,   343,   343,   343,   343,   343,   343,   343,   343,
  381,   345,   345,   452,   452,   343,   345,   452,   345,   345,
  345,   452,   345,   345,   348,   452,   452,   345,   452,   452,
  452,   452,   345,   345,   345,   452,   452,   345,   345,   452,
  345,   452,   345,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   452,   452,   444,   452,   345,   345,   452,   345,
  348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
  348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
  348,   348,   348,   452,   452,   452,   452,   452,   452,   361,
  345,   452,   345,   452,   452,   345,   350,   350,   345,   452,
  452,   350,   452,   350,   350,   350,   452,   350,   350,   452,
  452,   452,   350,   452,   452,   452,   452,   350,   350,   350,
  452,   452,   350,   350,   452,   350,   452,   350,   452,   452,
  452,   452,   452,   452,   452,   452,   356,   356,   356,   356,
  452,   350,   350,   452,   350,   353,   353,   452,   356,   452,
  353,   452,   353,   353,   353,   452,   353,   353,   356,   452,
  452,   353,   452,   452,   452,   452,   353,   353,   353,   452,
  452,   353,   353,   452,   353,   350,   353,   350,   452,   452,
  350,   452,   452,   350,   452,   452,   452,   452,   452,   452,
  353,   353,   452,   353,   452,   452,   452,   357,   452,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  356,   356,   452,   452,   452,   356,   356,   356,   356,   356,
  452,   356,   452,   356,   353,   452,   353,   452,   452,   353,
  452,   452,   353,   357,   357,   357,   357,   357,   357,   357,
  357,   357,   357,   357,   357,   357,   357,   357,   357,   357,
  357,   357,   357,   357,   357,   357,   452,   360,   360,   452,
  452,   357,   360,   452,   360,   360,   360,   452,   360,   360,
  452,   452,   452,   360,   452,   452,   452,   452,   360,   360,
  360,   452,   452,   360,   360,   452,   360,   452,   360,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  452,   452,   360,   360,   452,   360,   364,   364,   452,   452,
  452,   364,   452,   364,   364,   364,   452,   364,   364,   452,
  452,   452,   364,   452,   452,   452,   452,   364,   364,   364,
  452,   452,   364,   364,   452,   364,   360,   364,   360,   391,
  452,   360,   452,   452,   360,   452,   399,   399,   399,   399,
  452,   364,   364,   452,   364,   367,   367,   452,   399,   452,
  367,   452,   367,   367,   367,   452,   367,   367,   399,   452,
  452,   367,   452,   452,   452,   452,   367,   367,   367,   452,
  452,   367,   367,   452,   367,   364,   367,   364,   452,   452,
  364,   452,   452,   364,   452,   452,   452,   452,   452,   452,
  367,   367,   452,   367,   452,   452,   452,   400,   452,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  399,   399,   452,   452,   452,   399,   399,   399,   452,   399,
  452,   399,   452,   399,   367,   452,   367,   452,   452,   367,
  452,   452,   367,   400,   400,   400,   400,   400,   400,   400,
  400,   400,   400,   400,   400,   400,   400,   400,   400,   400,
  400,   400,   400,   400,   400,   400,   452,   452,   452,   452,
  452,   452,   452,   452,   452,   452,   452,   452,   452,   452,
  452};

/* Base vector for actions. */
static const short yyabase[] = {
  -95,     0,   -95,   -95,     0,     1,     1,   -95,   -95,   -95,
  -95,     2,   -95,     4,   -95,     0,     0,     0,   -95,     1,
  -95,   -95,   -95,   -95,     5,    22,   -95,   -95,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,   -95,     9,    14,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,    20,   -95,     7,   -95,   -95,
   14,   -95,     1,   -95,   115,    81,   147,   -95,   -95,   -95,
  -95,   -95,   -95,   -95,    37,   -95,   -95,   123,   157,    89,
   67,   -95,   -95,    78,   -95,   -95,   -95,   -95,   -95,   -95,
   64,    54,    86,   -95,   245,   213,   292,   -95,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,
  -95,   309,   -95,   333,   -95,   347,   -95,   397,    57,   435,
  150,   451,   286,   467,   430,   490,   107,   556,   366,   579,
  574,   593,   188,   607,   550,   695,   638,   718,   675,   755,
  740,   819,   777,   856,   813,   907,   882,   961,   934,  1015,
  989,  1069,  1044,  1123,  1107,  1139,  1169,  1193,  1228,  1249,
 1287,  1311,   -95,   -95,   -95,   -95,   -95,   673,   -95,   -95,
  -95,   -95,   -95,   674,   927,   -95,  1346,   327,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,   213,   312,   108,   -95,   -95,
  892,   118,   502,   367,  1081,   740,  1425,  1409,   -95,  1439,
  -95,  1471,   -95,  1495,   -95,  1530,   -95,  1551,   -95,  1589,
  -95,  1615,  1648,   -95,  1669,  1707,   -95,  1733,  1766,   -95,
 1787,  1825,   -95,  1851,  1884,   -95,  1905,  1943,   -95,   -95,
  -95,   -95,   -95,   -95,  1914,  1347,    22,   844,  1969,  2002,
  -95,  2023,  2061,   -95,   -95,  2029,   -95,  2083,  2120,  1400,
  -95,   -95,  2147,  2179,  1824,   -95,   -95,  2201,   -95,  2261,
  -95,  2289,   -95,  2303,   -95,  2317,   -95,  2331,   -95,  2349,
  -95,   -95,  2419,  2387,  2113,   -95,  1438,  2466,  2451,  1590,
  -95,  2551,   -95,   -95,  2600,   -95,  2594,  2635,   253,   -95,
  -95,   -95,  2642,   -95,  2694,  2577,   -95,   -95,  2303,   -95,
  -95,  1998,   -95,   741,   932,  2770,   109,   -95,  2819,   -95,
 2861,  2875,  2813,  2349,   -95,   -95,   -95,   -95,   -95,   -95,
  -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,   -95,
  -95,   254,   -95,   145,  1891,    35,   -95,  2925,  2912,   548,
  -95,  2176,   -95,  2971,   -95,  3048,   -95,  2860,  3044,   -95,
 3133,  1431,   -95,  3182,   -95,   882,  3176,  3217,  2483,   -95,
 3294,  3120,   -95,   -95,  3343,   -95,   -95,  3392,  2627,   -95,
  491,  2473,  2582,   -95,   -95,   -95,   -95,   -95,   -95,   -95,
  -95,  3047,   -95,   -95,  2467,   -95,    22,  2646,   -95,   294,
  -95,  3295,  1400,   -95,   -95,  1726,   -95,  2798,   -95,  3386,
 3427,  2970,   -95,   859,   -95,  1591,   -95,   -95,   -95,   119,
  -95,   437,   -95,  1134,   -95,  2478,   -95,   -95,  1199,   -95,
 2925,   -95,  1740,   -95,   -95,   152,  2442,   -95,   -95,  2233,
  213,   -95,   882,   -95,  1259,   -95,   -95,  2694,   -95,   -95,
  601,  1306,   -95,   -95,  3012,  2909,   215,   -95,   -95,   -95,
  -95,   -95};

/* Default vector for actions. */
static const unsigned short yyadefault[] = {
  534,     0,   683,   679,   453,     0,   667,   681,   680,   563,
  564,     0,   454,     0,   454,     0,     0,     0,   534,     0,
  668,   647,   648,   649,     0,     0,   534,   534,   534,   534,
  534,   534,   534,   534,   615,   616,     0,     0,   541,   579,
  580,   619,   534,   678,   679,   453,   677,     0,   623,   624,
  621,   625,     0,   628,   534,     0,   629,   534,   534,   534,
  534,   534,   534,   534,   486,   487,   488,     0,   534,   534,
  534,   496,   453,     0,   495,   531,   532,   533,   521,   522,
  534,     0,   548,   542,   534,   545,   534,   534,   534,   534,
  534,   534,   534,   534,   534,   534,   534,   534,   534,   534,
  534,   534,   534,   534,   534,   534,   534,   534,   534,   534,
  534,   534,   478,   534,   477,   534,   476,   534,   475,   534,
  474,   534,   473,   534,   472,   534,   471,   534,   470,   534,
  469,   534,   468,   534,   467,   534,   466,   534,   465,   534,
  464,   534,   463,   534,   462,   534,   461,   534,   460,   534,
  459,   534,   458,   534,   457,   534,   456,   534,     0,   534,
  455,   546,   544,   534,   543,   494,   454,     0,   493,   527,
  528,   529,   530,   534,     0,   492,     0,     0,   491,   523,
  524,   525,   526,   490,   489,   497,   498,   499,   500,   501,
  502,   503,   504,   505,   506,   510,   534,     0,   511,   534,
  509,     0,   520,   534,   508,     0,   519,   534,   507,     0,
  518,   534,     0,   517,   534,     0,   515,   534,     0,   516,
  534,     0,   514,   534,     0,   513,   534,     0,   512,   534,
  534,   539,   534,   534,   534,     0,     0,   552,   534,   553,
  534,   534,   554,   550,   549,     0,   540,   534,     0,     0,
  538,   537,   534,     0,     0,   536,   535,   534,   485,   534,
  484,   534,   483,   534,   482,   534,   481,   534,   480,   534,
  479,   627,   534,   630,     0,   626,     0,   534,     0,     0,
  614,   667,   613,   612,   667,   611,   534,   610,     0,   609,
  659,   660,   534,   608,   673,     0,   607,   606,     0,   605,
  604,     0,   603,     0,   453,   667,     0,   602,   667,   601,
  534,     0,   534,   539,   534,   534,   534,   566,   567,   568,
  569,   570,   571,   572,   573,   574,   575,   576,   577,   578,
  588,     0,   587,     0,   586,     0,   585,   534,   584,     0,
  583,     0,   591,     0,   600,   667,   599,     0,   618,   454,
  667,     0,   598,   667,   597,     0,   534,     0,     0,   596,
  667,   669,   595,   671,   667,   670,   594,   667,   669,   593,
    0,   590,     0,   589,   581,   534,   534,   534,   666,   665,
  664,     0,   663,   662,     0,   661,   453,   667,   534,     0,
  676,     0,   562,   555,   558,     0,   534,   559,   534,   534,
  560,   557,   534,   667,   556,     0,   675,   674,   642,     0,
  645,     0,   646,   655,   644,     0,   658,   679,   453,   656,
    0,   643,   655,   641,   640,     0,   639,   650,   534,   653,
    0,   654,     0,   652,     0,   651,   638,   637,   631,   633,
    0,     0,   632,   636,   667,   635,     0,   557,   634,   565,
  682,     0};

/* Comb vector for gotos. */
static const unsigned short yygoto[] = {
    2,   381,   370,    25,   355,   314,   303,   300,   297,   292,
  437,   286,   276,   313,     8,     9,    26,    43,    34,    35,
  316,    50,    51,    15,    10,   269,    67,    17,    56,    64,
  267,   424,     4,     1,    41,     6,   444,    13,    19,   425,
   45,   449,    75,     6,    48,    24,   374,   265,    55,   263,
  261,   259,   257,   231,    67,   166,   176,    64,    72,    80,
   74,    75,    84,    37,    36,    49,    82,    81,    83,    67,
  157,    85,    64,    67,   155,   161,    64,   153,   151,    44,
    3,     5,   149,   147,   145,   143,   141,   139,   137,   135,
  133,   131,   129,   127,   125,   123,   121,   119,   117,   115,
  113,   111,    67,   163,   112,    64,    67,   173,   114,    64,
   67,   252,   116,    64,    67,   247,   118,    64,    67,   245,
  120,    64,    67,   241,   122,    64,    67,   289,   124,    64,
   67,   302,   126,    64,    67,   337,   128,    64,    67,   333,
  130,    64,    67,   336,   132,    64,    67,   350,   134,    64,
   67,   234,   136,    64,    67,   353,   138,    64,    67,   379,
  140,    64,    67,   360,   142,    64,    67,   384,   144,    64,
   67,   330,   146,    64,    67,   405,   148,    64,    67,   432,
  150,    64,    67,   298,   152,    64,    67,     0,   154,    64,
   67,     0,   156,    64,    67,     0,   158,    64,    67,    84,
  160,    64,   168,    84,   169,   164,   281,    82,   174,    83,
  178,     0,    67,   179,   197,    64,    67,   288,   201,    64,
   67,     0,   205,    64,    67,   299,   209,    64,    67,   385,
  212,    64,    67,   305,   215,    64,    67,   341,   218,    64,
   67,   284,   221,    64,    67,   238,   224,    64,    67,   275,
  227,    64,   237,   235,   243,   331,    67,   179,   239,    64,
   67,   274,   242,    64,    67,   308,   248,    64,   250,    75,
   67,   367,   253,    64,   255,    67,   169,   258,    64,    67,
  301,   260,    64,    67,   362,   262,    64,    67,   342,   264,
   64,    67,   345,   266,    64,    67,   231,   268,    64,    67,
  296,   270,    64,    67,    25,   273,    64,    67,   280,   278,
   64,   179,   334,   369,   371,   282,     9,    26,   373,    34,
   35,    25,   378,   307,    15,    10,   179,    67,    17,   287,
   64,   295,   285,     9,    26,   335,    34,    35,    13,    19,
  399,    15,    10,   231,   412,    17,    24,    67,   404,   294,
   64,    67,   314,   348,    64,    13,    19,   380,   389,   311,
  313,     6,   421,    24,    37,    36,   332,   316,   347,   340,
  310,     9,    26,   395,    34,    35,   293,   339,   422,    15,
   10,    37,    36,    17,   372,   429,    67,    25,   343,    64,
  426,   427,   414,    13,    19,   435,   443,   446,   309,     9,
   26,    24,    34,    35,   423,   434,     0,    15,    10,     0,
   67,    17,   338,    64,    67,    25,   357,    64,   418,    37,
   36,    13,    19,   440,     0,     0,   346,     9,    26,    24,
   34,    35,   413,   415,   359,    15,    10,   179,    67,    17,
  400,    64,     0,    25,   436,   415,     0,    37,    36,    13,
   19,     0,     0,     0,   351,     9,    26,    24,    34,    35,
    0,     0,     0,    15,    10,   411,     0,    17,     0,     0,
    0,    25,     0,     0,     0,    37,    36,    13,    19,     0,
    0,     0,   354,     9,    26,    24,    34,    35,   364,     0,
    0,    15,    10,     0,     0,    17,     0,     0,     0,    25,
  417,     0,     0,    37,    36,    13,    19,   397,   420,     0,
  361,     9,    26,    24,    34,    35,     0,     0,     0,    15,
   10,     0,     0,    17,   387,     0,     0,    25,     0,     0,
    0,    37,    36,    13,    19,   403,     0,     0,   365,     9,
   26,    24,    34,    35,   403,     0,     0,    15,    10,     0,
  445,    17,   393,     0,     0,    25,   392,   391,   393,    37,
   36,    13,    19,     0,     0,     0,   368,     9,    26,    24,
   34,    35,     0,     0,     0,    15,    10,   395,   448,    17,
    0,     0,     0,   395,     0,     0,     0,    37,    36,    13,
   19,     0,     0,     0,     0,     0,     0,    24,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,     0,     0,    37,    36};

/* Base vector for gotos. */
static const unsigned short yygbase[] = {
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,     0,     3,     0,     0,     0,     1,     0,
    0,     0,     0,     0,     0,     4,     2,     4,     6,     7,
    8,     9,    11,    12,     0,     0,     0,     3,     0,     0,
    0,     0,    17,     0,     8,     8,     0,    13,     0,     1,
    1,     0,     0,     0,    26,     0,     0,    25,    30,    47,
   49,    50,    51,    52,    44,     0,     0,     0,    54,    55,
   58,     0,    24,    19,     0,     0,     0,     0,     0,     0,
   62,     0,     0,     0,    69,     0,    73,    70,    74,    77,
   78,    82,    83,    84,    85,    86,    87,    88,    89,    90,
   91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
  101,   102,     0,   106,     0,   110,     0,   114,     0,   118,
    0,   122,     0,   126,     0,   130,     0,   134,     0,   138,
    0,   142,     0,   146,     0,   150,     0,   154,     0,   158,
    0,   162,     0,   166,     0,   170,     0,   174,     0,   178,
    0,   182,     0,   186,     0,   190,     0,   194,     0,   198,
    0,     0,    60,   199,     0,     0,    71,   162,     0,     0,
    0,     0,     0,   203,     0,     0,     0,   171,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    0,     0,     0,     0,     0,     0,   212,     0,     0,   216,
    0,     0,     0,   220,     0,     0,     0,   224,     0,     0,
    0,   228,     0,     0,   232,     0,     0,   236,     0,     0,
  240,     0,     0,   244,     0,     0,   248,     0,     0,   111,
  115,     0,   119,   151,   245,     0,   215,     0,   256,     0,
  123,   260,     0,     0,     0,     0,     0,   264,     0,   227,
    0,     0,   270,     0,   234,     0,     0,   275,     0,   279,
    0,   283,     0,   287,     0,   291,     0,   295,     0,   299,
    0,   195,   303,     0,   218,     0,     0,   307,     0,   269,
  144,   301,     0,   180,   318,     0,   327,   157,    81,     0,
    0,     0,   347,   272,     0,   254,     0,   125,   179,     0,
  223,    85,     0,     0,   198,   356,   284,   209,   384,     0,
  351,   351,   386,   186,   135,   139,   171,     0,     0,     0,
    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  206,   320,     0,   309,   287,    97,     0,   410,   330,   323,
    0,   242,     0,     0,   237,   412,     0,     0,     0,   111,
  440,     0,   101,   468,     0,     0,   414,     0,   395,   110,
  496,   256,     0,   410,   524,     0,   219,   552,   285,     0,
  311,   334,   272,     0,     0,   357,   159,   322,     0,     0,
    0,     0,     0,    90,   199,     0,   489,   545,   358,     0,
    0,     0,     0,     0,     0,     0,   507,     0,   340,   438,
    0,   491,   175,   335,     0,     0,     0,     0,   438,     0,
  393,   298,   359,   358,     0,     0,   424,   386,   326,     0,
  316,   307,   370,     0,     0,   365,   110,     0,   385,     0,
    0,     0,   398,   331,   369,     0,     0,   355,     0,     0,
  350,     0,     0,     0,   539,   330,   532,   500,     0,     0,
    0,     0};

#if YYDEBUG != 0
const char *yytname [] =
{  "end-of-file", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "'!'", 
  0, "'#'", 0, "'%'", "'&'", 0, "'('", "')'", "'*'", "'+'", 
  "','", "'-'", "'.'", "'/'", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  "':'", "';'", "'<'", "'='", "'>'", "'?'", "'@'", 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, "'['", 0, "']'", "'^'", 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "'{'", 
  "'|'", "'}'", "'~'", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "error", "NUMBER", 
  "CHARACTER", "STRING", "IDENT", "BREAK", "CATCH", "CHAR", 
  "CLASS", "CONTINUE", "ELSE", "EXT", "EXTERN", "FINAL", "FLOAT", 
  "FOR", "FRIEND", "FUNC", "HIDE", "HIDEBLOCK", "IF", "IN", 
  "INT", "NEW", "NIL", "PUBLIC", "PRIVATE", "RETURN", "TABLE", 
  "THREAD", "THROW", "TRY", "TYPE", "VAR", "VECTOR", "WAIT", 
  "SWAP", "MULT_ASSIGN", "DIV_ASSIGN", "REM_ASSIGN", "PLUS_ASSIGN", 
  "MINUS_ASSIGN", "CONCAT_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", 
  "ASHIFT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", 
  "INCR", "DECR", "DOTS", "INCLUDE", "INCLUSION", "END_OF_FILE", 
  "END_OF_INCLUDE_FILE", "LOGICAL_OR", "LOGICAL_AND", "EQ", 
  "NE", "IDENTITY", "UNIDENTITY", "LE", "GE", "LSHIFT", "RSHIFT", 
  "ASHIFT"
};
#endif

#include <stdio.h>
#include <stdlib.h>

#ifndef  YYALLOC
/* Initial state & attribute stacks size (in elems). */
#define  YYALLOC(size)  malloc (size)
#endif

#ifndef  YYREALLOC
/* Initial state & attribute stacks size (in elems). */
#define  YYREALLOC(ptr, size)  realloc (ptr, size)
#endif

#ifndef  YYFREE
/* Initial state & attribute stacks size (in elems). */
#define  YYFREE(ptr)  free (ptr)
#endif

#ifndef  YYSTACK_SIZE
/* Initial state & attribute stacks size (in elems). */
#define  YYSTACK_SIZE  500
#endif

#if  YYSTACK_SIZE <= 0
#undef  YYSTACK_SIZE
#define  YYSTACK_SIZE  50
#endif

#ifndef  YYMAX_STACK_SIZE
/* Max. state & attribute stacks size (in elems). */
#define  YYMAX_STACK_SIZE  5000
#endif

#if  YYMAX_STACK_SIZE <= 0
#undef  YYMAX_STACK_SIZE
#define  YYMAX_STACK_SIZE  100
#endif

#ifndef  YYMAX_STACK_EXPAND_SIZE
/* Expansion step of state & attr. stacks size (in elems). */
#define  YYMAX_STACK_EXPAND_SIZE  500
#endif

#if  YYMAX_STACK_EXPAND_SIZE <= 0
#undef  YYMAX_STACK_EXPAND_SIZE
#define  YYMAX_STACK_EXPAND_SIZE  10
#endif

#ifndef  YYERROR_MESSAGE
#define  YYERROR_MESSAGE "syntax error"
#endif

#define YYEMPTY  (-2)

#define YYEOF  0

#define yyclearin do {if (yychar != YYEMPTY) yyprev_char = yychar; yychar = YYEMPTY;} while (0)

#define yydeeper_error_try  (yyerr_new_try = 1)

#define YYABORT goto yyabort

#define YYACCEPT goto yyaccept

#ifndef  YYERR_RECOVERY_MATCHES
#define  YYERR_RECOVERY_MATCHES  3
#endif

#if  YYERR_RECOVERY_MATCHES <= 0
#undef  YYERR_RECOVERY_MATCHES
#define  YYERR_RECOVERY_MATCHES  1
#endif

#ifndef  YYERR_MAX_LOOK_AHEAD_CHARS
#define  YYERR_MAX_LOOK_AHEAD_CHARS  7
#endif

#if  YYERR_MAX_LOOK_AHEAD_CHARS <= 0
#undef  YYERR_MAX_LOOK_AHEAD_CHARS
#define  YYERR_MAX_LOOK_AHEAD_CHARS  1
#endif

#ifndef  YYERR_LOOK_AHEAD_INCREMENT
#define  YYERR_LOOK_AHEAD_INCREMENT  3
#endif

#if  YYERR_LOOK_AHEAD_INCREMENT < 0
#undef  YYERR_LOOK_AHEAD_INCREMENT
#define  YYERR_LOOK_AHEAD_INCREMENT  0
#endif

#ifndef  YYERR_POPPED_ERROR_STATES
#define  YYERR_POPPED_ERROR_STATES  2
#endif

#if  YYERR_POPPED_ERROR_STATES < 0
#undef  YYERR_POPPED_ERROR_STATES
#define  YYERR_POPPED_ERROR_STATES  0
#endif

#ifndef  YYERR_DISCARDED_CHARS
#define  YYERR_DISCARDED_CHARS  3
#endif

#if  YYERR_DISCARDED_CHARS < 0
#undef  YYERR_DISCARDED_CHARS
#define  YYERR_DISCARDED_CHARS  0
#endif

#ifndef  YYLOOK_AHEAD_SIZE
#define  YYLOOK_AHEAD_SIZE  (1 + YYERR_MAX_LOOK_AHEAD_CHARS + YYERR_RECOVERY_MATCHES)
#endif

#if  YYLOOK_AHEAD_SIZE < (1 + YYERR_MAX_LOOK_AHEAD_CHARS + YYERR_RECOVERY_MATCHES)
#undef  YYLOOK_AHEAD_SIZE
#define  YYLOOK_AHEAD_SIZE  (1 + YYERR_MAX_LOOK_AHEAD_CHARS + YYERR_RECOVERY_MATCHES)
#endif
#define YYERROR  goto yyerrlab

#define yyerrok  yyerr_status = (-1)

#define YYRECOVERING()  (yyerr_status > 0)

#define YYTOKEN_NAME(code)\
  ((code) < 0 || (code) > YYLAST_TOKEN_CODE || yytname [code] == 0\
   ? "illegal-code" : yytname [code])

static int yyexpand_states_stack (int **start, int **end, int **top)
{
  int size = *end - *start + 1;
  int new_size = size + YYMAX_STACK_EXPAND_SIZE;
  int *new_start;

#if YYDEBUG != 0
  if (yydebug)
    fprintf (stderr, "Expanding states stack (old size - %d, new size - %d)\n", size, new_size);
#endif
  if (new_size > YYMAX_STACK_SIZE)
    {
      yyerror ("states stack is overfull");
      return 1;
    }
  new_start = (int*) YYREALLOC (*start, new_size * sizeof (int));
  if (new_start == NULL)
    {
      yyerror ("no memory for states stack expansion");
      return 1;
    }
  *end = new_start + (new_size - 1);
  *top = *top + (new_start - *start);
  *start = new_start;
  return 0;
}

static int yyexpand_attributes_stack (YYSTYPE **start, YYSTYPE **end, YYSTYPE **top)
{
  int size = *end - *start + 1;
  int new_size = size + YYMAX_STACK_EXPAND_SIZE;
  YYSTYPE *new_start;

#if YYDEBUG != 0
  if (yydebug)
    fprintf (stderr, "Expanding attributes stack (old size - %d, new size - %d)\n", size, new_size);
#endif
  if (new_size > YYMAX_STACK_SIZE)
    {
      yyerror ("attributes stack is overfull");
      return 1;
    }
  new_start = (YYSTYPE*) YYREALLOC (*start, new_size * sizeof (YYSTYPE));
  if (new_start == NULL)
    {
      yyerror ("no memory for attributes stack expansion");
      return 1;
    }
  *end = new_start + (new_size - 1);
  *top = *top + (new_start - *start);
  *start = new_start;
  return 0;
}

int yyparse ()
{
  int yystate;
  int *yystates;
  YYSTYPE *yyattributes;
  int *yylook_ahead_char;
  int *yyfirst_char_ptr;
  YYSTYPE *yylook_ahead_attribute;
  int yynerrs;      /* fixed syntactic errors number */
  int *yyfirst_char_ptr_1;
  int yyprev_char;
  int yychar1;
  int yytemp;
  int yytemp1;
  int yytemp2;
  int yyerr_new_try;
  long int yyerr_status;  /* tokens number to shift before error messages enabled */
  YYSTYPE yyval;
  int *yystates_end;
  int *yystates_top;
  int yyerr_states_bound;
  int yyerr_look_ahead_chars;
  int yyerr_popped_error_states;
  YYSTYPE *yyattributes_end;
  YYSTYPE *yyattributes_top;

#if YYDEBUG != 0
  if (yydebug)
    fprintf (stderr, "Starting parse\n");
#endif
  yystates = (int *) YYALLOC (YYSTACK_SIZE * sizeof (int));
  if (yystates == NULL)
    {
      yyerror ("no memory for states stack");
      YYABORT;
    }
  yyattributes = (YYSTYPE *) YYALLOC (YYSTACK_SIZE * sizeof (YYSTYPE));
  if (yyattributes == NULL)
    {
      yyerror ("no memory for attributes stack");
      YYABORT;
    }
  yylook_ahead_char = (int *) YYALLOC (YYLOOK_AHEAD_SIZE * sizeof (int));
  if (yylook_ahead_char == NULL)
    {
      yyerror ("no memory for look ahead tokens");
      YYABORT;
    }
  yylook_ahead_attribute = (YYSTYPE *) YYALLOC (YYLOOK_AHEAD_SIZE * sizeof (YYSTYPE));
  if (yylook_ahead_attribute == NULL)
    {
      yyerror ("no memory for look ahead token attributes");
      YYABORT;
    }
  yystates_end = yystates + YYSTACK_SIZE - 1;
  yystates_top = yystates - 1;
  yyattributes_end = yyattributes + YYSTACK_SIZE - 1;
  yyattributes_top = yyattributes - 1;
  yynerrs = 0;
  yychar = YYEMPTY;
  yyfirst_char_ptr = yylook_ahead_char;
  for (yytemp = 0; yytemp < YYLOOK_AHEAD_SIZE; yytemp++)
    yylook_ahead_char [yytemp] = YYEMPTY;
  yystate = 0; /* Start state */
  (*++yystates_top) = yystate;
  ++yyattributes_top;
  yyerr_status = (-1);
  for (;;)
    {
#if YYDEBUG != 0
      if (yydebug)
        fprintf (stderr, "Entering state %d\n", yystate);
#endif
      yytemp = yyabase [yystate];
      if (yytemp == YYNO_ACTION_BASE)
        yytemp = yyadefault [yystate];
      else
        {
          if (yychar == YYEMPTY)
            {
#ifdef YYERR_RECOVERY_END
              if (yyerr_status == 0)
                YYERR_RECOVERY_END ();
#endif

              if (*yyfirst_char_ptr == YYEMPTY)
                {
                  yychar = yylex ();
#if YYDEBUG != 0
                  if (yydebug)
                    fprintf (stderr, "Reading a token %d (%s)\n",
                             yychar, YYTOKEN_NAME (yychar));
#endif
                  if (yyerr_status > 0)
                    {
                      yylook_ahead_attribute [yyfirst_char_ptr - yylook_ahead_char] = yylval;
                      *yyfirst_char_ptr++ = yychar;
                      if (yyfirst_char_ptr >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                        yyfirst_char_ptr = yylook_ahead_char;
                      *yyfirst_char_ptr = YYEMPTY;
#if YYDEBUG != 0
                      if (yydebug)
                        fprintf (stderr,
                                 "Error recovery saving token %d (%s)\n",
                                 yychar, YYTOKEN_NAME (yychar));
#endif
                    }
                }
              else
                {
                  yychar = *yyfirst_char_ptr;
                  yylval = yylook_ahead_attribute [yyfirst_char_ptr - yylook_ahead_char];
                  if (yyerr_status <= 0)
                    *yyfirst_char_ptr++ = YYEMPTY;
                  else
                    {
                      yyfirst_char_ptr++;
#if YYDEBUG != 0
                      if (yydebug)
                        fprintf (stderr,
                                 "Error recovery saving token %d (%s)\n",
                                 yychar, YYTOKEN_NAME (yychar));
#endif
                    }
                  if (yyfirst_char_ptr >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                    yyfirst_char_ptr = yylook_ahead_char;
                }
            }
#if YYDEBUG != 0
          if (yydebug)
            {
              fprintf (stderr, "Now input is at %d (%s)",
                       yychar, YYTOKEN_NAME (yychar));
              for (yyfirst_char_ptr_1 = yyfirst_char_ptr; *yyfirst_char_ptr_1 != YYEMPTY;)
                {
                  fprintf (stderr, " %d (%s)", *yyfirst_char_ptr_1,
                           YYTOKEN_NAME (*yyfirst_char_ptr_1));
                  yyfirst_char_ptr_1++;
                  if (yyfirst_char_ptr_1 >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                    yyfirst_char_ptr_1 = yylook_ahead_char;
                }
              fprintf (stderr, "\n");
            }
#endif
          if (yychar <= 0)
            {
              yychar1 = yytranslate [0];
              yychar = YYEOF;  /* To prevent repeated reading EOF */
            }
          else if (yychar > YYLAST_TOKEN_CODE)
            YYABORT;
          else
            yychar1 = yytranslate [yychar];
          yytemp += yychar1;
          if (yyacheck [yytemp] != yystate)
            yytemp = yyadefault [yystate];
          else
            yytemp = yyaction [yytemp];
        }
      switch (yytemp)
        {
        case YYNO_ACTION:
          /* Here error processing and error recovery. */
          if (yyerr_status <= 0)
            {
              yyerror (YYERROR_MESSAGE);
yyerrlab:
              ++yynerrs;
              yyerr_states_bound = yystates_top - yystates + 1;
              yyerr_new_try = 0;
              yyerr_look_ahead_chars = YYERR_LOOK_AHEAD_INCREMENT;
              if (yyerr_look_ahead_chars > YYERR_MAX_LOOK_AHEAD_CHARS)
                yyerr_look_ahead_chars = YYERR_MAX_LOOK_AHEAD_CHARS;
#if YYDEBUG != 0
              if (yydebug)
                fprintf (stderr,
                         "Start error recovery, look ahead %d tokens\n",
                         yyerr_look_ahead_chars);
#endif
              yyerr_popped_error_states = 0;
              if (yyfirst_char_ptr == yylook_ahead_char)
                {
                  yylook_ahead_char [YYLOOK_AHEAD_SIZE - 1] = yychar;
                  yylook_ahead_attribute [YYLOOK_AHEAD_SIZE - 1] = yylval;
                }
              else
                {
                  yyfirst_char_ptr [-1] = yychar;
                  yylook_ahead_attribute [yyfirst_char_ptr - yylook_ahead_char - 1] = yylval;
                }
              yyfirst_char_ptr_1 = yyfirst_char_ptr - 2;
              for (;;)
                {
                  if (yyfirst_char_ptr_1 < yylook_ahead_char)
                    yyfirst_char_ptr_1 += YYLOOK_AHEAD_SIZE;
                  if (*yyfirst_char_ptr_1 == YYEMPTY)
                    break;
                  *yyfirst_char_ptr_1-- = YYEMPTY;
                }
#if YYDEBUG != 0
              if (yydebug)
                fprintf (stderr,
                         "Error recovery saving token %d (%s)\n",
                         yychar, YYTOKEN_NAME (yychar));
#endif
            }
          if (yyerr_status < YYERR_RECOVERY_MATCHES || yyerr_look_ahead_chars <= 0)
            {
              yyerr_popped_error_states++;
              if (yyerr_look_ahead_chars < yyerr_popped_error_states * YYERR_LOOK_AHEAD_INCREMENT)
                yyerr_look_ahead_chars = yyerr_popped_error_states * YYERR_LOOK_AHEAD_INCREMENT;
              if (yyerr_look_ahead_chars > YYERR_MAX_LOOK_AHEAD_CHARS)
                yyerr_look_ahead_chars = YYERR_MAX_LOOK_AHEAD_CHARS;
#if YYDEBUG != 0
              if (yydebug)
                fprintf (stderr,
                         "Continue error recovery, look ahead %d tokens\n",
                         yyerr_look_ahead_chars);
#endif
              yytemp1 = 0;
              for (yyfirst_char_ptr_1 = yyfirst_char_ptr; *yyfirst_char_ptr_1 != YYEMPTY;)
                {
                  yytemp1++;
                  yyfirst_char_ptr_1++;
                  if (yyfirst_char_ptr_1 >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                    yyfirst_char_ptr_1 = yylook_ahead_char;
                }
              yytemp2 = 0;
              for (;;)
                {
                  if (yyfirst_char_ptr == yylook_ahead_char)
                    yyfirst_char_ptr_1 = yylook_ahead_char + YYLOOK_AHEAD_SIZE - 1;
                  else
                    yyfirst_char_ptr_1 = yyfirst_char_ptr - 1;
                  if (*yyfirst_char_ptr_1 == YYEMPTY)
                    break;
                  yyfirst_char_ptr = yyfirst_char_ptr_1;
                  yytemp2++;
                }
              yytemp1 += yytemp2 - 1;
              if (yytemp1 < 0)
                YYABORT;
#if YYDEBUG != 0
              if (yydebug)
                fprintf (stderr,
                         "Restore %d tokens saved during error recovery\n",
                         yytemp2);
#endif
              yylval = yylook_ahead_attribute [yyfirst_char_ptr - yylook_ahead_char];
              yychar = *yyfirst_char_ptr;
              *yyfirst_char_ptr++ = YYEMPTY;
              if (yyfirst_char_ptr >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                yyfirst_char_ptr = yylook_ahead_char;
              if (yyerr_popped_error_states >= YYERR_POPPED_ERROR_STATES)
                {
#if YYDEBUG != 0
                  if (yydebug)
                    fprintf (stderr, "%d error states has been popped -- real discarding tokens\n",
                             YYERR_POPPED_ERROR_STATES);
#endif
                  yyerr_popped_error_states = 0;
                  if (yytemp1 < YYERR_DISCARDED_CHARS)
                    {
#if YYDEBUG != 0
                      if (yydebug)
                        fprintf (stderr, "Discard %d already read tokens\n",
                                 yytemp1 + 1);
#endif
                      yytemp1 -= YYERR_DISCARDED_CHARS;
                      while (yytemp1 < 0)
                        {
                          yychar = yylex ();
#if YYDEBUG != 0
                          if (yydebug)
                            fprintf (stderr, "Read token %d (%s)\n",
                                     yychar, YYTOKEN_NAME (yychar));
#endif
                          if (yychar <= 0)
                            break;
                          yytemp1++;
#if YYDEBUG != 0
                          if (yytemp1 < 0 && yydebug)
                            fprintf (stderr, "Discard token %d (%s)\n",
                                     yychar, YYTOKEN_NAME (yychar));
#endif
                        }
                      for (yyfirst_char_ptr_1 = yyfirst_char_ptr; *yyfirst_char_ptr_1 != YYEMPTY;)
                        {
                           *yyfirst_char_ptr_1++ = YYEMPTY;
                           if (yyfirst_char_ptr_1 >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                             yyfirst_char_ptr_1 = yylook_ahead_char;
                        }
                    }
                  else if (YYERR_DISCARDED_CHARS > 0)
                    {
#if YYDEBUG != 0
                      if (yydebug)
                        fprintf (stderr, "Discard %d already read tokens\n",
                                 YYERR_DISCARDED_CHARS);
#endif
                      yyfirst_char_ptr_1 = yyfirst_char_ptr + YYERR_DISCARDED_CHARS - 1;
                      if (yyfirst_char_ptr_1 >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                        yyfirst_char_ptr_1 = yylook_ahead_char;
                      while (yyfirst_char_ptr != yyfirst_char_ptr_1)
                        {
                           *yyfirst_char_ptr++ = YYEMPTY;
                          if (yyfirst_char_ptr >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                            yyfirst_char_ptr = yylook_ahead_char;
                        }
                      yylval = yylook_ahead_attribute [yyfirst_char_ptr - yylook_ahead_char];
                      yychar = *yyfirst_char_ptr;
                      *yyfirst_char_ptr++ = YYEMPTY;
                      if (yyfirst_char_ptr >= yylook_ahead_char + YYLOOK_AHEAD_SIZE)
                        yyfirst_char_ptr = yylook_ahead_char;
                    }
                }
              yytemp = yyabase [yystate];
              yyerr_status = YYERR_RECOVERY_MATCHES;
              for (;;)
                {
                  if ((yystates_top - yystates < yyerr_states_bound || !yyerr_new_try)
                      && yytemp != YYNO_ACTION_BASE
                      && yyacheck [yytemp + YYERRCLASS] == yystate
                      && yyaction [yytemp + YYERRCLASS] < 452/* after the last shift */)
                    {
                      /* shift on error */
#if YYDEBUG != 0
                      if (yydebug)
                        fprintf (stderr,
                                 "state %d, error shifting to state %d\n",
                                 yystate, yyaction [yytemp + YYERRCLASS]);
#endif
                      yystate = yyaction [yytemp + YYERRCLASS];
                     if (yystates_top >= yystates_end
                         && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
                       YYABORT;
                     (*++yystates_top) = yystate;
                     if (yyattributes_top >= yyattributes_end
                         && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
                       YYABORT;
                     (*++yyattributes_top) = yyval;
                      yyerr_states_bound = yystates_top - yystates;
                      break;
                    }
                  if (yystates_top <= yystates)
                    YYABORT;
                  yystate = *--yystates_top;
                  yytemp = yyabase [yystate];
                  yyattributes_top--;
                }
            }
          else
            {
              if (yychar == YYEOF)
                YYABORT;
#if YYDEBUG != 0
              if (yydebug)
                 fprintf
                   (stderr,
                    "state %d, error recovery discards token %d (%s)\n",
                    yystate, yychar, YYTOKEN_NAME (yychar));
#endif
              yyerr_look_ahead_chars--;
              yyprev_char = yychar;
              yychar = YYEMPTY;
            }
          break;
        case YYFINAL:
          YYACCEPT;
          break;
        /* shifts */
        case 7:
        case 11:
        case 12:
        case 14:
        case 16:
        case 18:
        case 20:
        case 21:
        case 22:
        case 23:
        case 27:
        case 28:
        case 29:
        case 30:
        case 31:
        case 32:
        case 33:
        case 38:
        case 39:
        case 40:
        case 42:
        case 46:
        case 47:
        case 52:
        case 53:
        case 54:
        case 57:
        case 58:
        case 59:
        case 60:
        case 61:
        case 62:
        case 63:
        case 65:
        case 66:
        case 68:
        case 69:
        case 70:
        case 71:
        case 73:
        case 76:
        case 77:
        case 78:
        case 79:
        case 86:
        case 87:
        case 88:
        case 89:
        case 90:
        case 91:
        case 92:
        case 93:
        case 94:
        case 95:
        case 96:
        case 97:
        case 98:
        case 99:
        case 100:
        case 101:
        case 102:
        case 103:
        case 104:
        case 105:
        case 106:
        case 107:
        case 108:
        case 109:
        case 110:
        case 159:
        case 162:
        case 165:
        case 167:
        case 170:
        case 171:
        case 172:
        case 175:
        case 177:
        case 180:
        case 181:
        case 182:
        case 183:
        case 184:
        case 185:
        case 186:
        case 187:
        case 188:
        case 189:
        case 190:
        case 191:
        case 192:
        case 193:
        case 194:
        case 195:
        case 196:
        case 198:
        case 199:
        case 200:
        case 202:
        case 203:
        case 204:
        case 206:
        case 207:
        case 208:
        case 210:
        case 211:
        case 213:
        case 214:
        case 216:
        case 217:
        case 219:
        case 220:
        case 222:
        case 223:
        case 225:
        case 226:
        case 228:
        case 229:
        case 230:
        case 232:
        case 233:
        case 236:
        case 240:
        case 244:
        case 246:
        case 249:
        case 251:
        case 254:
        case 256:
        case 271:
        case 272:
        case 277:
        case 279:
        case 283:
        case 290:
        case 291:
        case 304:
        case 306:
        case 312:
        case 315:
        case 317:
        case 318:
        case 319:
        case 320:
        case 321:
        case 322:
        case 323:
        case 324:
        case 325:
        case 326:
        case 327:
        case 328:
        case 329:
        case 344:
        case 349:
        case 352:
        case 356:
        case 358:
        case 363:
        case 366:
        case 375:
        case 376:
        case 377:
        case 382:
        case 383:
        case 386:
        case 388:
        case 390:
        case 394:
        case 396:
        case 398:
        case 401:
        case 402:
        case 406:
        case 407:
        case 408:
        case 409:
        case 410:
        case 416:
        case 419:
        case 428:
        case 430:
        case 431:
        case 433:
        case 438:
        case 439:
        case 441:
        case 442:
        case 447:
        case 450:
#if YYDEBUG != 0
          if (yydebug)
            fprintf (stderr, "Shifting token %d (%s)\n", yychar,
                     yytname[yychar]);
#endif

          yystate = yytemp;
          yyerr_status--;
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yylval;
          yyprev_char = yychar;
          yychar = YYEMPTY;
          break;
        /* reduces */
        case 453:
          /*              clear_flag : .  (1) */

#line 126 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = 0;}

#line 1944 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 35];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 454:
          /*              set_flag : .  (2) */

#line 128 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = 1;}

#line 1961 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 36];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 455:
          /*              expr : expr '?'(63) pos expr ':'(58) expr .  (3) */

#line 131 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_cond, yyattributes_top [-3].pos);
          IR_set_cond (yyval.pointer, yyattributes_top [-5].pointer);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-2].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 1983 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 456:
          /*              expr : expr LOGICAL_OR pos expr .  (4) */

#line 138 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_logical_or, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2000 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 457:
          /*              expr : expr LOGICAL_AND pos expr .  (5) */

#line 144 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_logical_and, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2017 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 458:
          /*              expr : expr IN pos expr .  (6) */

#line 150 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_in, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2034 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 459:
          /*              expr : expr '|'(124) pos expr .  (7) */

#line 156 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_or, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2051 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 460:
          /*              expr : expr '^'(94) pos expr .  (8) */

#line 162 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_xor, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2068 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 461:
          /*              expr : expr '&'(38) pos expr .  (9) */

#line 168 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_and, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2085 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 462:
          /*              expr : expr EQ pos expr .  (10) */

#line 174 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_eq, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2102 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 463:
          /*              expr : expr NE pos expr .  (11) */

#line 180 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_ne, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2119 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 464:
          /*              expr : expr IDENTITY pos expr .  (12) */

#line 186 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_identity, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2136 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 465:
          /*              expr : expr UNIDENTITY pos expr .  (13) */

#line 192 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
           yyval.pointer = create_node_with_pos (IR_NM_unidentity, yyattributes_top [-1].pos);
           IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
           IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
         }

#line 2153 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 466:
          /*              expr : expr '<'(60) pos expr .  (14) */

#line 198 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_lt, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2170 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 467:
          /*              expr : expr '>'(62) pos expr .  (15) */

#line 204 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_gt, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2187 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 468:
          /*              expr : expr LE pos expr .  (16) */

#line 210 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_le, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2204 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 469:
          /*              expr : expr GE pos expr .  (17) */

#line 216 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_ge, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2221 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 470:
          /*              expr : expr LSHIFT pos expr .  (18) */

#line 222 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_lshift, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2238 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 471:
          /*              expr : expr RSHIFT pos expr .  (19) */

#line 228 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_rshift, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2255 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 472:
          /*              expr : expr ASHIFT pos expr .  (20) */

#line 234 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_ashift, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2272 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 473:
          /*              expr : expr '@'(64) pos expr .  (21) */

#line 240 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_concat, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2289 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 474:
          /*              expr : expr '+'(43) pos expr .  (22) */

#line 246 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_plus, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2306 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 475:
          /*              expr : expr '-'(45) pos expr .  (23) */

#line 252 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_minus, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2323 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 476:
          /*              expr : expr '*'(42) pos expr .  (24) */

#line 258 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_mult, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2340 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 477:
          /*              expr : expr '/'(47) pos expr .  (25) */

#line 264 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_div, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2357 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 478:
          /*              expr : expr '%'(37) pos expr .  (26) */

#line 270 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_mod, yyattributes_top [-1].pos);
          IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2374 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 479:
          /*              expr : '!'(33) pos expr .  (27) */

#line 276 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_not, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2390 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 480:
          /*              expr : '+'(43) pos expr .  (28) */

#line 281 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_unary_plus, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2406 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 481:
          /*              expr : '-'(45) pos expr .  (29) */

#line 286 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_unary_minus, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2422 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 482:
          /*              expr : '~'(126) pos expr .  (30) */

#line 291 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_bitwise_not, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2438 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 483:
          /*              expr : '#'(35) pos expr .  (31) */

#line 296 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_length, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2454 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 484:
          /*              expr : FINAL pos expr .  (32) */

#line 301 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_const, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2470 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 485:
          /*              expr : NEW pos expr .  (33) */

#line 306 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_new, yyattributes_top [-1].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 2486 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 486:
          /*              expr : designator .  (34) */

#line 310 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 2499 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 487:
          /*              expr : NUMBER .  (35) */

#line 311 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 2512 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 488:
          /*              expr : CHARACTER .  (36) */

#line 312 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 2525 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 489:
          /*              expr : pos NIL .  (37) */

#line 313 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_nil, yyattributes_top [-1].pos);}

#line 2538 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 490:
          /*              expr : '('(40) expr ')'(41) .  (38) */

#line 314 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [-1].pointer;}

#line 2551 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 491:
          /*              expr : '('(40) error bracket_stop .  (39) */

#line 315 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 2564 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 492:
          /*              expr : '['(91) pos set_flag elist_parts_list_empty ']'(93) .  (40) */

#line 317 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_vector, yyattributes_top [-3].pos);
          IR_set_elist (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2580 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 493:
          /*              expr : '['(91) error sqbracket_stop .  (41) */

#line 321 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 2593 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 494:
          /*              expr : '{'(123) pos clear_flag elist_parts_list_empty '}'(125) .  (42) */

#line 323 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_table, yyattributes_top [-3].pos);
          IR_set_elist (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2609 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 495:
          /*              expr : '{'(123) error stmt_stop .  (43) */

#line 327 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 2622 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 496:
          /*              expr : STRING .  (44) */

#line 328 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 2635 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 497:
          /*              expr : pos CHAR .  (45) */

#line 329 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_char_type, yyattributes_top [-1].pos);}

#line 2648 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 498:
          /*              expr : pos INT .  (46) */

#line 330 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_int_type, yyattributes_top [-1].pos);}

#line 2661 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 499:
          /*              expr : pos FLOAT .  (47) */

#line 331 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_float_type, yyattributes_top [-1].pos);}

#line 2674 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 500:
          /*              expr : pos HIDE .  (48) */

#line 332 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_hide_type, yyattributes_top [-1].pos);}

#line 2687 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 501:
          /*              expr : pos HIDEBLOCK .  (49) */

#line 333 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_hideblock_type,
						     yyattributes_top [-1].pos);}

#line 2701 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 502:
          /*              expr : pos VECTOR .  (50) */

#line 335 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_vector_type, yyattributes_top [-1].pos);}

#line 2714 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 503:
          /*              expr : pos TABLE .  (51) */

#line 336 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_table_type, yyattributes_top [-1].pos);}

#line 2727 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 504:
          /*              expr : pos FUNC .  (52) */

#line 337 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_func_type, yyattributes_top [-1].pos);}

#line 2740 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 505:
          /*              expr : pos THREAD .  (53) */

#line 338 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_thread_type, yyattributes_top [-1].pos);}

#line 2753 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 506:
          /*              expr : pos CLASS .  (54) */

#line 339 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_class_type, yyattributes_top [-1].pos);}

#line 2766 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 507:
          /*              expr : pos FUNC '('(40) ')'(41) .  (55) */

#line 340 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_stack_type, yyattributes_top [-3].pos);}

#line 2779 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 508:
          /*              expr : pos THREAD '('(40) ')'(41) .  (56) */

#line 341 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_process_type, yyattributes_top [-3].pos);}

#line 2792 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 509:
          /*              expr : pos CLASS '('(40) ')'(41) .  (57) */

#line 342 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_instance_type, yyattributes_top [-3].pos);}

#line 2805 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 510:
          /*              expr : pos TYPE .  (58) */

#line 343 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_type_type, yyattributes_top [-1].pos);}

#line 2818 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 511:
          /*              expr : pos TYPE '('(40) expr ')'(41) .  (59) */

#line 345 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_typeof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2834 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 512:
          /*              expr : pos CHAR '('(40) expr ')'(41) .  (60) */

#line 350 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_charof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2850 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 513:
          /*              expr : pos INT '('(40) expr ')'(41) .  (61) */

#line 355 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_intof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2866 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 514:
          /*              expr : pos FLOAT '('(40) expr ')'(41) .  (62) */

#line 360 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_floatof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2882 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 515:
          /*              expr : pos VECTOR '('(40) expr ')'(41) .  (63) */

#line 365 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_vectorof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2898 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 516:
          /*              expr : pos VECTOR '('(40) expr ','(44) expr ')'(41) .  (64) */

#line 370 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_format_vectorof, yyattributes_top [-6].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_format (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2915 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 517:
          /*              expr : pos TABLE '('(40) expr ')'(41) .  (65) */

#line 376 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_tableof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2931 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 518:
          /*              expr : pos FUNC '('(40) expr ')'(41) .  (66) */

#line 381 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_funcof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2947 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 519:
          /*              expr : pos THREAD '('(40) expr ')'(41) .  (67) */

#line 386 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_threadof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2963 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 520:
          /*              expr : pos CLASS '('(40) expr ')'(41) .  (68) */

#line 391 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_classof, yyattributes_top [-4].pos);
          IR_set_operand (yyval.pointer, yyattributes_top [-1].pointer);
        }

#line 2979 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 2];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 521:
          /*              eof_stop : END_OF_FILE .  (69) */

#line 398 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = END_OF_FILE;}

#line 2992 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 42];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 522:
          /*              eof_stop : END_OF_INCLUDE_FILE .  (70) */

#line 399 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = END_OF_INCLUDE_FILE;}

#line 3005 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 42];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 523:
          /*              bracket_stop : eof_stop .  (71) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 39];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 524:
          /*              bracket_stop : ')'(41) .  (72) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 39];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 525:
          /*              bracket_stop : '}'(125) .  (73) */

#line 403 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = '}';}

#line 3034 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 39];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 526:
          /*              bracket_stop : ';'(59) .  (74) */

#line 404 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = ';';}

#line 3047 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 39];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 527:
          /*              sqbracket_stop : eof_stop .  (75) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 40];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 528:
          /*              sqbracket_stop : ']'(93) .  (76) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 40];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 529:
          /*              sqbracket_stop : '}'(125) .  (77) */

#line 409 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = '}';}

#line 3076 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 40];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 530:
          /*              sqbracket_stop : ';'(59) .  (78) */

#line 410 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = ';';}

#line 3089 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 40];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 531:
          /*              stmt_stop : eof_stop .  (79) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 41];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 532:
          /*              stmt_stop : '}'(125) .  (80) */

#line 414 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = '}';}

#line 3110 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 41];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 533:
          /*              stmt_stop : ';'(59) .  (81) */

#line 415 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yychar = ';';}

#line 3123 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 41];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 534:
          /*              pos : .  (82) */

#line 417 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pos = current_position;}

#line 3136 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 0];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 535:
          /*              designator : designator '['(91) pos expr ']'(93) .  (83) */

#line 420 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_index, yyattributes_top [-2].pos);
                 IR_set_left_operand (yyval.pointer, yyattributes_top [-4].pointer);
                 IR_set_right_operand (yyval.pointer, yyattributes_top [-1].pointer);
               }

#line 3157 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 536:
          /*              designator : designator '['(91) pos error sqbracket_stop .  (84) */

#line 427 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_index, yyattributes_top [-2].pos);
                 IR_set_left_operand (yyval.pointer, yyattributes_top [-4].pointer);
                 IR_set_right_operand (yyval.pointer, NULL);
               }

#line 3174 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 537:
          /*              designator : designator '{'(123) pos expr '}'(125) .  (85) */

#line 433 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_key_index, yyattributes_top [-2].pos);
                 IR_set_left_operand (yyval.pointer, yyattributes_top [-4].pointer);
                 IR_set_right_operand (yyval.pointer, yyattributes_top [-1].pointer);
               }

#line 3191 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 538:
          /*              designator : designator '{'(123) pos error stmt_stop .  (86) */

#line 440 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_key_index, yyattributes_top [-2].pos);
                 IR_set_left_operand (yyval.pointer, yyattributes_top [-4].pointer);
                 IR_set_right_operand (yyval.pointer, NULL);
               }

#line 3208 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 539:
          /*              designator : designator actual_parameters .  (87) */

#line 446 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		 yyval.pointer
		   = create_node_with_pos (IR_NM_class_func_thread_call,
					   actual_parameters_construction_pos);
		 IR_set_func_expr (yyval.pointer, yyattributes_top [-1].pointer);
		 IR_set_actuals (yyval.pointer, yyattributes_top [0].pointer);
	       }

#line 3227 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 540:
          /*              designator : designator '.'(46) pos IDENT .  (88) */

#line 454 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_period, yyattributes_top [-1].pos);
                 IR_set_left_operand (yyval.pointer, yyattributes_top [-3].pointer);
                 IR_set_right_operand (yyval.pointer, yyattributes_top [0].pointer);
               }

#line 3244 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 541:
          /*              designator : IDENT .  (89) */

#line 459 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 3257 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 3];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 542:
          /*              elist_parts_list : elist_part .  (90) */

#line 465 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                      yyval.pointer = yyattributes_top [0].pointer;
                      IR_set_next_elist (yyval.pointer, yyval.pointer);
                    }

#line 3273 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 4];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 543:
          /*              elist_parts_list : elist_parts_list ','(44) $1 elist_part .  (91) */

#line 470 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	              yyval.pointer = yyattributes_top [0].pointer;
                      IR_set_next_elist (yyval.pointer, IR_next_elist (yyattributes_top [-3].pointer));
                      IR_set_next_elist (yyattributes_top [-3].pointer, yyval.pointer);
                    }

#line 3290 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 4];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 544:
          /*              $1 : .  (92) */

#line 469 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 3303 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 43];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 545:
          /*              elist_part : pos expr .  (93) */

#line 479 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	         yyval.pointer = create_node_with_pos (IR_NM_elist_element, yyattributes_top [-1].pos);
                 if (yyattributes_top [-2].flag)
                   {
                     /* vector */
                     IR_set_repetition_key (yyval.pointer, get_int_node (1, yyattributes_top [-1].pos));
                     IR_set_expr (yyval.pointer, yyattributes_top [0].pointer);
                   }
	         else
                   {
                     IR_set_repetition_key (yyval.pointer, yyattributes_top [0].pointer);
                     IR_set_expr (yyval.pointer, create_node_with_pos (IR_NM_nil, yyattributes_top [-1].pos));
                   }
               }

#line 3333 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 6];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 546:
          /*              elist_part : pos expr ':'(58) expr .  (94) */

#line 494 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node_with_pos (IR_NM_elist_element, yyattributes_top [-3].pos);
     	         IR_set_repetition_key (yyval.pointer, yyattributes_top [-2].pointer);
                 IR_set_expr (yyval.pointer, yyattributes_top [0].pointer);
               }

#line 3350 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 6];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 547:
          /*              elist_parts_list_empty : .  (95) */

#line 502 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3363 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 5];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 548:
          /*              elist_parts_list_empty : elist_parts_list .  (96) */

#line 504 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
				yyval.pointer = IR_next_elist (yyattributes_top [0].pointer);
				IR_set_next_elist (yyattributes_top [0].pointer, NULL);
			      }

#line 3383 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 5];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 549:
          /*              actual_parameters : '('(40) pos expr_list_empty ')'(41) .  (97) */

#line 513 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{actual_parameters_construction_pos = yyattributes_top [-2].pos; yyval.pointer = yyattributes_top [-1].pointer;}

#line 3396 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 9];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 550:
          /*              actual_parameters : '('(40) pos error bracket_stop .  (98) */

#line 515 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{actual_parameters_construction_pos = yyattributes_top [-2].pos; yyval.pointer = NULL;}

#line 3409 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 9];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 551:
          /*              expr_list_empty : .  (99) */

#line 517 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3422 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 8];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 552:
          /*              expr_list_empty : expr_list .  (100) */

#line 519 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		      yyval.pointer = IR_next_elist (yyattributes_top [0].pointer); IR_set_next_elist (yyattributes_top [0].pointer, NULL);
		    }

#line 3441 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 8];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 553:
          /*              expr_list : pos expr .  (101) */

#line 525 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	        yyval.pointer = create_node_with_pos (IR_NM_elist_element, yyattributes_top [-1].pos);
                IR_set_expr (yyval.pointer, yyattributes_top [0].pointer);
	        IR_set_repetition_key (yyval.pointer, NULL);
                IR_set_next_elist (yyval.pointer, yyval.pointer);
              }

#line 3459 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 7];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 554:
          /*              expr_list : expr_list ','(44) pos expr .  (102) */

#line 532 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                yyval.pointer = create_node_with_pos (IR_NM_elist_element, yyattributes_top [-1].pos);
     	        IR_set_repetition_key (yyval.pointer, NULL);
                IR_set_expr (yyval.pointer, yyattributes_top [0].pointer);
                IR_set_next_elist (yyval.pointer, IR_next_elist (yyattributes_top [-3].pointer));
                IR_set_next_elist (yyattributes_top [-3].pointer, yyval.pointer);
              }

#line 3478 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 7];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 555:
          /*              var_par_list : var_par .  (103) */

#line 544 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 3491 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 11];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 556:
          /*              var_par_list : var_par_list ','(44) $2 var_par .  (104) */

#line 546 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		   yyval.pointer = yyattributes_top [0].pointer;
                   if (yyattributes_top [-3].pointer != NULL)
                     {
		       IR_node_t first;

		       first = IR_next_stmt (yyval.pointer);
                       IR_set_next_stmt (yyval.pointer, IR_next_stmt (yyattributes_top [-3].pointer));
                       IR_set_next_stmt (yyattributes_top [-3].pointer, first);
                     }
                 }

#line 3514 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 11];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 557:
          /*              $2 : .  (105) */

#line 545 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 3527 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 44];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 558:
          /*              var_par_list : error .  (106) */

#line 557 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3544 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 11];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 559:
          /*              var_par : opt_final IDENT pos .  (107) */

#line 564 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
              yyval.pointer = create_node_with_pos (IR_NM_var, yyattributes_top [0].pos);
              IR_set_scope (yyval.pointer, current_scope);
              IR_set_ident (yyval.pointer, yyattributes_top [-1].pointer);
              IR_set_next_stmt (yyval.pointer, yyval.pointer);
	      IR_set_const_flag (yyval.pointer, yyattributes_top [-2].flag);
	    }

#line 3563 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 13];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 560:
          /*              var_par : opt_final IDENT pos '='(61) pos expr .  (108) */

#line 572 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	      IR_node_t assign;

              yyval.pointer = create_node_with_pos (IR_NM_var, yyattributes_top [-3].pos);
              IR_set_scope (yyval.pointer, current_scope);
              IR_set_ident (yyval.pointer, yyattributes_top [-4].pointer);
	      IR_set_const_flag (yyval.pointer, yyattributes_top [-5].flag);
	      assign = create_node_with_pos ((yyattributes_top [-6].flag
					      ? IR_NM_var_assign
					      : IR_NM_par_assign),
					     yyattributes_top [-1].pos);
	      IR_set_assignment_var (assign, yyattributes_top [-4].pointer);
	      IR_set_assignment_expr (assign, yyattributes_top [0].pointer);
	      IR_set_next_stmt (yyval.pointer, assign);
	      IR_set_next_stmt (assign, yyval.pointer);
	      yyval.pointer = assign;
	    }

#line 3592 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 13];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 561:
          /*              var_par_list_empty : .  (109) */

#line 591 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3605 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 12];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 562:
          /*              var_par_list_empty : var_par_list .  (110) */

#line 592 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 3622 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 12];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 563:
          /*              stmt : executive_stmt .  (111) */

#line 597 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                      if (yyattributes_top [0].pointer != NULL)
                        IR_set_next_stmt (yyattributes_top [0].pointer, yyattributes_top [0].pointer);
                      yyval.pointer = yyattributes_top [0].pointer; 
                    }

#line 3639 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 14];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 564:
          /*              stmt : declaration .  (112) */

#line 602 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 3652 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 14];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 565:
          /*              stmt : error stmt_stop .  (113) */

#line 603 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3665 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 14];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 566:
          /*              assign : '='(61) .  (114) */

#line 605 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_assign;}

#line 3678 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 567:
          /*              assign : MULT_ASSIGN .  (115) */

#line 606 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_mult_assign;}

#line 3691 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 568:
          /*              assign : DIV_ASSIGN .  (116) */

#line 607 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_div_assign;}

#line 3704 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 569:
          /*              assign : REM_ASSIGN .  (117) */

#line 608 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_rem_assign;}

#line 3717 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 570:
          /*              assign : PLUS_ASSIGN .  (118) */

#line 609 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_plus_assign;}

#line 3730 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 571:
          /*              assign : MINUS_ASSIGN .  (119) */

#line 610 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_minus_assign;}

#line 3743 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 572:
          /*              assign : CONCAT_ASSIGN .  (120) */

#line 611 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_concat_assign;}

#line 3756 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 573:
          /*              assign : LSHIFT_ASSIGN .  (121) */

#line 612 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_lshift_assign;}

#line 3769 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 574:
          /*              assign : RSHIFT_ASSIGN .  (122) */

#line 613 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_rshift_assign;}

#line 3782 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 575:
          /*              assign : ASHIFT_ASSIGN .  (123) */

#line 614 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_ashift_assign;}

#line 3795 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 576:
          /*              assign : AND_ASSIGN .  (124) */

#line 615 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_and_assign;}

#line 3808 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 577:
          /*              assign : XOR_ASSIGN .  (125) */

#line 616 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_xor_assign;}

#line 3821 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 578:
          /*              assign : OR_ASSIGN .  (126) */

#line 617 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.node_mode = IR_NM_or_assign;}

#line 3834 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 1];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 579:
          /*              incr_decr : INCR .  (127) */

#line 619 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = get_int_node (1, source_position);}

#line 3847 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 16];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 580:
          /*              incr_decr : DECR .  (128) */

#line 620 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = get_int_node (-1, source_position);}

#line 3860 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 16];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 581:
          /*              executive_stmt : $3 end_simple_stmt .  (129) */

#line 623 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 3873 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 582:
          /*              $3 : .  (130) */

#line 623 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [0].flag;}

#line 3886 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 45];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 583:
          /*              executive_stmt : designator assign pos expr $4 end_simple_stmt .  (131) */

#line 625 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (yyattributes_top [-4].node_mode, yyattributes_top [-3].pos);
          IR_set_assignment_var (yyval.pointer, yyattributes_top [-5].pointer); 
          IR_set_assignment_expr (yyval.pointer, yyattributes_top [-2].pointer);
        }

#line 3907 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 584:
          /*              $4 : .  (132) */

#line 624 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-4].flag;}

#line 3920 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 47];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 585:
          /*              executive_stmt : designator SWAP pos designator $5 end_simple_stmt .  (133) */

#line 631 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_swap, yyattributes_top [-3].pos);
          IR_set_swap_var1 (yyval.pointer, yyattributes_top [-5].pointer); 
          IR_set_swap_var2 (yyval.pointer, yyattributes_top [-2].pointer);
        }

#line 3941 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 586:
          /*              $5 : .  (134) */

#line 630 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-4].flag;}

#line 3954 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 48];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 587:
          /*              executive_stmt : designator incr_decr pos $6 end_simple_stmt .  (135) */

#line 637 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_plus_assign, yyattributes_top [-2].pos);
          IR_set_assignment_var (yyval.pointer, yyattributes_top [-4].pointer); 
          IR_set_assignment_expr (yyval.pointer, yyattributes_top [-3].pointer);
        }

#line 3975 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 588:
          /*              $6 : .  (136) */

#line 636 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 3988 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 49];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 589:
          /*              executive_stmt : incr_decr pos designator $7 end_simple_stmt .  (137) */

#line 643 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_plus_assign, yyattributes_top [-3].pos);
          IR_set_assignment_var (yyval.pointer, yyattributes_top [-2].pointer); 
          IR_set_assignment_expr (yyval.pointer, yyattributes_top [-4].pointer);
        }

#line 4009 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 590:
          /*              $7 : .  (138) */

#line 642 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4022 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 50];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 591:
          /*              executive_stmt : designator actual_parameters $8 end_simple_stmt .  (139) */

#line 649 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_procedure_call,
                                      actual_parameters_construction_pos);
       	 IR_set_proc_expr (yyval.pointer, yyattributes_top [-3].pointer);
       	 IR_set_proc_actuals (yyval.pointer, yyattributes_top [-2].pointer);
        }

#line 4044 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 592:
          /*              $8 : .  (140) */

#line 648 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 4057 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 51];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 593:
          /*              executive_stmt : IF pos '('(40) expr ')'(41) $9 stmt else_part .  (141) */

#line 656 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_if_stmt, yyattributes_top [-6].pos);
          IR_set_if_expr (yyval.pointer, yyattributes_top [-4].pointer);
          IR_set_if_part (yyval.pointer, uncycle_stmt_list (yyattributes_top [-1].pointer));
          IR_set_else_part (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 4079 "d_yacc.c"
          yystates_top -= 8;
          yyattributes_top -= 8;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 594:
          /*              $9 : .  (142) */

#line 655 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-5].flag;}

#line 4092 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 52];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 595:
          /*              executive_stmt : IF pos '('(40) error bracket_stop $10 stmt else_part .  (143) */

#line 663 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_if_stmt, yyattributes_top [-6].pos);
          IR_set_if_expr (yyval.pointer, NULL);
          IR_set_if_part (yyval.pointer, uncycle_stmt_list (yyattributes_top [-1].pointer));
          IR_set_else_part (yyval.pointer, yyattributes_top [0].pointer);
        }

#line 4114 "d_yacc.c"
          yystates_top -= 8;
          yyattributes_top -= 8;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 596:
          /*              $10 : .  (144) */

#line 662 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-5].flag;}

#line 4127 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 53];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 597:
          /*              executive_stmt : FOR pos '('(40) clear_flag stmt for_guard_expr ';'(59) set_flag stmt ')'(41) $11 stmt .  (145) */

#line 671 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_for_stmt, yyattributes_top [-10].pos);
          IR_set_for_initial_stmt (yyval.pointer, uncycle_stmt_list (yyattributes_top [-7].pointer));
          IR_set_for_guard_expr (yyval.pointer, yyattributes_top [-6].pointer);
          IR_set_for_iterate_stmt (yyval.pointer, uncycle_stmt_list (yyattributes_top [-3].pointer));
          IR_set_for_stmts (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
        }

#line 4150 "d_yacc.c"
          yystates_top -= 12;
          yyattributes_top -= 12;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 598:
          /*              $11 : .  (146) */

#line 670 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-10].flag;}

#line 4163 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 54];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 599:
          /*              executive_stmt : FOR pos '('(40) clear_flag designator IN expr ')'(41) $12 stmt .  (147) */

#line 680 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_foreach_stmt, yyattributes_top [-8].pos);
          IR_set_foreach_designator (yyval.pointer, yyattributes_top [-5].pointer);
          IR_set_foreach_table (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_foreach_stmts (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
        }

#line 4185 "d_yacc.c"
          yystates_top -= 10;
          yyattributes_top -= 10;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 600:
          /*              $12 : .  (148) */

#line 679 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-8].flag;}

#line 4198 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 55];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 601:
          /*              executive_stmt : FOR pos '('(40) error bracket_stop $13 stmt .  (149) */

#line 687 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_for_stmt, yyattributes_top [-5].pos);
          IR_set_for_initial_stmt (yyval.pointer, NULL);
          IR_set_for_guard_expr (yyval.pointer, NULL);
          IR_set_for_iterate_stmt (yyval.pointer, NULL);
          IR_set_foreach_stmts (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
        }

#line 4221 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 602:
          /*              $13 : .  (150) */

#line 686 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-5].flag;}

#line 4234 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 56];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 603:
          /*              executive_stmt : BREAK pos $14 end_simple_stmt .  (151) */

#line 695 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_break_stmt, yyattributes_top [-2].pos);}

#line 4251 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 604:
          /*              $14 : .  (152) */

#line 694 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 4264 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 57];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 605:
          /*              executive_stmt : CONTINUE pos $15 end_simple_stmt .  (153) */

#line 697 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = create_node_with_pos (IR_NM_continue_stmt, yyattributes_top [-2].pos);}

#line 4281 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 606:
          /*              $15 : .  (154) */

#line 696 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 4294 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 58];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 607:
          /*              executive_stmt : RETURN pos expr_empty $16 end_simple_stmt .  (155) */

#line 699 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          if (yyattributes_top [-2].pointer == NULL)
            yyval.pointer = create_node_with_pos (IR_NM_return_without_result, yyattributes_top [-3].pos);
          else
            {
              yyval.pointer = create_node_with_pos (IR_NM_return_with_result, yyattributes_top [-3].pos);
              IR_set_returned_expr (yyval.pointer, yyattributes_top [-2].pointer);
            }
       	}

#line 4319 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 608:
          /*              $16 : .  (156) */

#line 698 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4332 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 59];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 609:
          /*              executive_stmt : THROW pos expr $17 end_simple_stmt .  (157) */

#line 709 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_throw, yyattributes_top [-3].pos);
          IR_set_throw_expr (yyval.pointer, yyattributes_top [-2].pointer); 
        }

#line 4352 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 610:
          /*              $17 : .  (158) */

#line 708 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4365 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 60];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 611:
          /*              executive_stmt : WAIT pos '('(40) expr ')'(41) $18 stmt .  (159) */

#line 714 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_wait_stmt, yyattributes_top [-5].pos);
          IR_set_wait_guard_expr (yyval.pointer, yyattributes_top [-3].pointer);
          IR_set_wait_stmt (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
        }

#line 4386 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 612:
          /*              $18 : .  (160) */

#line 713 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-5].flag;}

#line 4399 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 61];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 613:
          /*              executive_stmt : WAIT pos '('(40) error bracket_stop $19 stmt .  (161) */

#line 720 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
          yyval.pointer = create_node_with_pos (IR_NM_wait_stmt, yyattributes_top [-5].pos);
          IR_set_wait_guard_expr (yyval.pointer, NULL);
          IR_set_wait_stmt (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
        }

#line 4420 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 614:
          /*              $19 : .  (162) */

#line 719 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-5].flag;}

#line 4433 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 62];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 615:
          /*              executive_stmt : block_stmt .  (163) */

#line 725 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 4450 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 616:
          /*              executive_stmt : try_block_stmt .  (164) */

#line 726 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 4463 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 15];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 617:
          /*              for_guard_expr : .  (165) */

#line 728 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = get_int_node (1, source_position);}

#line 4476 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 17];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 618:
          /*              for_guard_expr : expr .  (166) */

#line 729 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 4493 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 17];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 619:
          /*              block_stmt : $20 block .  (167) */

#line 741 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                  yyval.pointer = yyattributes_top [-1].pointer;
       		  IR_set_block_stmts (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
       		  IR_set_access_list
		    (yyval.pointer, uncycle_access_list (IR_access_list (yyval.pointer)));
       		  current_scope = IR_block_scope (yyval.pointer);
                }

#line 4512 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 18];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 620:
          /*              $20 : .  (168) */

#line 731 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                  yyval.pointer = create_node_with_pos (IR_NM_block,
	                                              no_position);
                  IR_set_func_class_ext (yyval.pointer, NULL);
                  IR_set_access_list (yyval.pointer, NULL);
                  IR_set_block_scope (yyval.pointer, current_scope);
                  current_scope = yyval.pointer;
		  IR_set_exceptions (yyval.pointer, NULL);
                }

#line 4533 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 63];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 621:
          /*              try_block_stmt : $21 TRY block $22 catch_list .  (169) */

#line 768 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		      yyval.pointer = yyattributes_top [-1].pointer;
		      IR_set_exceptions (yyval.pointer, uncycle_exception_list (yyattributes_top [0].pointer));
                    }

#line 4553 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 19];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 622:
          /*              $21 : .  (170) */

#line 749 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	              yyval.pointer = create_node_with_pos (IR_NM_block,
							  no_position);
		      IR_set_func_class_ext (yyval.pointer, NULL);
		      IR_set_access_list (yyval.pointer, NULL);
		      IR_set_block_scope (yyval.pointer, current_scope);
		      current_scope = yyval.pointer;
		      IR_set_exceptions (yyval.pointer, NULL);
                    }

#line 4574 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 64];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 623:
          /*              $22 : .  (171) */

#line 759 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		      yyval.pointer = yyattributes_top [-2].pointer;
		      IR_set_block_stmts (yyval.pointer, uncycle_stmt_list (yyattributes_top [0].pointer));
		      IR_set_access_list
			(yyval.pointer, uncycle_access_list (IR_access_list
							   (yyval.pointer)));
		      current_scope = IR_block_scope (yyval.pointer);
		    }

#line 4598 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 65];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 624:
          /*              catch_list : .  (172) */

#line 775 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 4615 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 20];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 625:
          /*              catch_list : catch_list catch .  (173) */

#line 777 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		 yyval.pointer = merge_exception_lists (yyattributes_top [-1].pointer, yyattributes_top [0].pointer);
	       }

#line 4634 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 20];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 626:
          /*              catch : CATCH '('(40) except_class_list ')'(41) $23 block .  (174) */

#line 800 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	    IR_set_block_stmts (current_scope,
				uncycle_stmt_list (merge_stmt_lists
						   (yyattributes_top [-1].pointer, yyattributes_top [0].pointer)));
	    IR_set_access_list
	      (current_scope,
	       uncycle_access_list (IR_access_list (current_scope)));
	    yyval.pointer = yyattributes_top [-3].pointer;
	    IR_set_catch_block (IR_next_exception (yyattributes_top [-3].pointer), current_scope);
	    current_scope = IR_block_scope (current_scope);
	  }

#line 4657 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 21];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 627:
          /*              $23 : .  (175) */

#line 784 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
            yyval.pointer = create_node_with_pos (IR_NM_block,
	                                        no_position);
            IR_set_func_class_ext (yyval.pointer, NULL);
            IR_set_access_list (yyval.pointer, NULL);
            IR_set_block_scope (yyval.pointer, current_scope);
            current_scope = yyval.pointer;
	    IR_set_exceptions (yyval.pointer, NULL);
	    /* Add variable for catched exception. */
	    yyval.pointer = create_node_with_pos (IR_NM_var, current_position);
	    IR_set_next_stmt (yyval.pointer, yyval.pointer);
	    IR_set_scope (yyval.pointer, current_scope);
	    IR_set_ident (yyval.pointer, get_ident_node (CATCH_EXCEPTION_NAME,
						       current_position));
          }

#line 4684 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 66];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 628:
          /*              catch : error .  (176) */

#line 811 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 4701 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 21];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 629:
          /*              except_class_list : expr .  (177) */

#line 816 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			yyval.pointer = create_node_with_pos (IR_NM_exception,
						   current_position);
			IR_set_exception_class_expr (yyval.pointer, yyattributes_top [0].pointer);
			IR_set_catch_block (yyval.pointer, NULL);
			IR_set_next_exception (yyval.pointer, yyval.pointer);
		      }

#line 4720 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 22];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 630:
          /*              except_class_list : except_class_list ','(44) expr .  (178) */

#line 824 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			yyval.pointer = create_node_with_pos (IR_NM_exception,
						   current_position);
			IR_set_exception_class_expr (yyval.pointer, yyattributes_top [0].pointer);
			IR_set_catch_block (yyval.pointer, NULL);
			IR_set_next_exception (yyval.pointer, IR_next_exception (yyattributes_top [-2].pointer));
			IR_set_next_exception (yyattributes_top [-2].pointer, yyval.pointer);
		      }

#line 4740 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 22];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 631:
          /*              access_list : IDENT .  (179) */

#line 838 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node (IR_NM_access_ident);
                 IR_set_ident (yyval.pointer, yyattributes_top [0].pointer);
		 IR_set_access_ident_public_flag (yyval.pointer, public_flag);
		 IR_set_friend_flag (yyval.pointer, friend_flag);
                 IR_set_next_access_ident (yyval.pointer, yyval.pointer);
               }

#line 4759 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 10];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 632:
          /*              access_list : access_list ','(44) IDENT .  (180) */

#line 846 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                 yyval.pointer = create_node (IR_NM_access_ident);
		 IR_set_access_ident_public_flag (yyval.pointer, public_flag);
		 IR_set_friend_flag (yyval.pointer, friend_flag);
                 if (yyattributes_top [-2].pointer != NULL)
                   {
                     IR_set_next_access_ident (yyval.pointer, IR_next_access_ident (yyattributes_top [-2].pointer));
                     IR_set_next_access_ident (yyattributes_top [-2].pointer, yyval.pointer);
                   }
                 else
                   IR_set_next_access_ident (yyval.pointer, yyval.pointer);
                 IR_set_ident (yyval.pointer, yyattributes_top [0].pointer);
               }

#line 4784 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 10];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 633:
          /*              access_list : error .  (181) */

#line 859 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 4797 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 10];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 634:
          /*              declaration : VAR set_flag var_par_list $24 end_simple_stmt .  (182) */

#line 866 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [-2].pointer;}

#line 4810 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 635:
          /*              $24 : .  (183) */

#line 865 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4823 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 67];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 636:
          /*              declaration : access access_list $25 end_simple_stmt .  (184) */

#line 868 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		  IR_set_access_list (current_scope,
				      merge_access_lists
				      (IR_access_list (current_scope), yyattributes_top [-2].pointer));
		  yyval.pointer = NULL;
		}

#line 4845 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 637:
          /*              $25 : .  (185) */

#line 867 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 4858 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 68];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 638:
          /*              declaration : EXTERN set_flag extern_list $26 end_simple_stmt .  (186) */

#line 876 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [-2].pointer;}

#line 4875 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 639:
          /*              $26 : .  (187) */

#line 874 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4888 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 69];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 640:
          /*              declaration : header block .  (188) */

#line 878 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                  yyval.pointer = current_scope; /*i.e. block.*/
                  IR_set_block_stmts
                    (yyval.pointer, uncycle_stmt_list (merge_stmt_lists (yyattributes_top [-1].pointer, yyattributes_top [0].pointer)));
       		  IR_set_access_list
		    (yyval.pointer, uncycle_access_list (IR_access_list (yyval.pointer)));
                  current_scope = IR_block_scope (yyval.pointer);
                }

#line 4912 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 641:
          /*              declaration : INCLUDE STRING $27 end_simple_stmt $28 inclusion .  (189) */

#line 894 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                  yyval.pointer = yyattributes_top [0].pointer;
                }

#line 4927 "d_yacc.c"
          yystates_top -= 6;
          yyattributes_top -= 6;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 642:
          /*              $27 : .  (190) */

#line 886 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 4940 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 70];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 643:
          /*              $28 : .  (191) */

#line 887 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		  yyval.pointer = yyattributes_top [-2].pointer;
                  if (add_include_file (IR_string_value
					(IR_unique_string (yyattributes_top [-2].pointer))))
                    add_lexema_to_file (INCLUSION);
                }

#line 4962 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 71];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 644:
          /*              declaration : INCLUDE '+'(43) STRING $29 end_simple_stmt $30 inclusion .  (192) */

#line 904 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                  yyval.pointer = yyattributes_top [0].pointer;
                }

#line 4981 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 24];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 645:
          /*              $29 : .  (193) */

#line 897 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-3].flag;}

#line 4994 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 72];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 646:
          /*              $30 : .  (194) */

#line 898 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		  yyval.pointer = yyattributes_top [-2].pointer;
                  add_include_file (IR_string_value (IR_unique_string (yyattributes_top [-2].pointer)));
		  add_lexema_to_file (INCLUSION);
                }

#line 5015 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 73];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 647:
          /*              access : PUBLIC .  (195) */

#line 909 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{public_flag = TRUE; friend_flag = FALSE;}

#line 5032 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 37];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 648:
          /*              access : PRIVATE .  (196) */

#line 910 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{public_flag = FALSE; friend_flag = FALSE;}

#line 5045 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 37];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 649:
          /*              access : FRIEND .  (197) */

#line 911 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{public_flag = FALSE; friend_flag = TRUE;}

#line 5058 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 37];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 650:
          /*              extern_list : extern_item .  (198) */

#line 913 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 5071 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 25];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 651:
          /*              extern_list : extern_list ','(44) $31 extern_item .  (199) */

#line 915 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		   yyval.pointer = yyattributes_top [0].pointer;
                   if (yyattributes_top [-3].pointer != NULL)
                     {
		       IR_node_t first;

		       first = IR_next_stmt (yyval.pointer);
                       IR_set_next_stmt (yyval.pointer, IR_next_stmt (yyattributes_top [-3].pointer));
                       IR_set_next_stmt (yyattributes_top [-3].pointer, first);
                     }
                }

#line 5094 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 25];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 652:
          /*              $31 : .  (200) */

#line 914 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 5107 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 74];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 653:
          /*              extern_item : IDENT pos .  (201) */

#line 928 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		  yyval.pointer = create_node_with_pos (IR_NM_external_var, yyattributes_top [0].pos);
		  IR_set_scope (yyval.pointer, current_scope);
		  IR_set_ident (yyval.pointer, yyattributes_top [-1].pointer);
		  IR_set_next_stmt (yyval.pointer, yyval.pointer);
                }

#line 5129 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 26];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 654:
          /*              extern_item : IDENT pos '('(40) ')'(41) .  (202) */

#line 935 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
		  yyval.pointer = create_node_with_pos (IR_NM_external_func, yyattributes_top [-2].pos);
		  IR_set_scope (yyval.pointer, current_scope);
		  IR_set_ident (yyval.pointer, yyattributes_top [-3].pointer);
		  IR_set_next_stmt (yyval.pointer, yyval.pointer);
                }

#line 5147 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 26];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 655:
          /*              inclusion : .  (203) */

#line 942 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 5160 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 34];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 656:
          /*              inclusion : $32 INCLUSION $33 stmt_list END_OF_INCLUDE_FILE .  (204) */

#line 954 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                yyerrok;
                finish_scanner_file ();
                yyval.pointer = yyattributes_top [-1].pointer;
	      }

#line 5181 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 34];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 657:
          /*              $32 : .  (205) */

#line 943 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	        yyerrok;
              }

#line 5196 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 75];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 658:
          /*              $33 : .  (206) */

#line 947 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                start_scanner_file (full_file_name (IR_string_value
						    (IR_unique_string
						     (yyattributes_top [-2].pointer))),
				    IR_pos (yyattributes_top [-2].pointer));
              }

#line 5218 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 76];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 659:
          /*              end_simple_stmt : ';'(59) .  (207) */
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 46];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 660:
          /*              end_simple_stmt : ')'(41) .  (208) */

#line 963 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                      if (yyattributes_top [-1].flag)
                        yychar = ')';
		      else if (!YYRECOVERING ())
                       yyerror ("syntax error");
                    }

#line 5248 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 46];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 661:
          /*              header : func_thread_class IDENT $34 formal_parameters .  (209) */

#line 988 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
             int var_par_list_length = 0;
             IR_node_t current_decl = yyattributes_top [0].pointer;
             
             if (current_decl != NULL)
               do
                 {
                   var_par_list_length++;
                   current_decl = IR_next_stmt (current_decl);
                 }
               while (current_decl != yyattributes_top [0].pointer);
             IR_set_parameters_number (yyattributes_top [-3].pointer, var_par_list_length);
             IR_set_args_flag (yyattributes_top [-3].pointer, formal_parameter_args_flag);
	     yyval.pointer  = yyattributes_top [0].pointer;
           }

#line 5275 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 23];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 662:
          /*              $34 : .  (210) */

#line 971 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
             IR_node_t block;
             
             IR_set_scope (yyattributes_top [-1].pointer, current_scope);
             IR_set_ident (yyattributes_top [-1].pointer, yyattributes_top [0].pointer);
             block = create_node_with_pos (IR_NM_block, no_position);
             IR_set_next_stmt (block, yyattributes_top [-1].pointer);
             IR_set_next_stmt (yyattributes_top [-1].pointer, block);
             IR_set_func_class_ext (block, yyattributes_top [-1].pointer);
             IR_set_block_scope (block, current_scope);
	     IR_set_access_list (block, NULL);
	     IR_set_exceptions (block, NULL);
             /* This assignment is here for that formal parameters are
                to be in corresponding block. */
             current_scope = block;
           }

#line 5303 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 77];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 663:
          /*              header : EXT pos IDENT .  (211) */

#line 1004 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
             IR_node_t block;
             
	     yyval.pointer = create_node_with_pos (IR_NM_ext, yyattributes_top [-1].pos);
             IR_set_scope (yyval.pointer, current_scope);
             IR_set_ident (yyval.pointer, yyattributes_top [0].pointer);
             block = create_node_with_pos (IR_NM_block, no_position);
             IR_set_next_stmt (block, yyval.pointer);
             IR_set_next_stmt (yyval.pointer, block);
             IR_set_func_class_ext (block, yyval.pointer);
	     IR_set_access_list (block, NULL);
             IR_set_block_scope (block, current_scope);
	     IR_set_exceptions (block, NULL);
             current_scope = block;
	     yyval.pointer = NULL; /* Formal parameters list. */
           }

#line 5335 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 23];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 664:
          /*              func_thread_class : opt_final FUNC pos .  (212) */

#line 1022 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			yyval.pointer = create_node_with_pos (IR_NM_func, yyattributes_top [0].pos);
			IR_set_thread_flag (yyval.pointer, FALSE);
			IR_set_final_flag (yyval.pointer, yyattributes_top [-2].flag);
		      }

#line 5352 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 27];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 665:
          /*              func_thread_class : opt_final THREAD pos .  (213) */

#line 1028 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                        yyval.pointer = create_node_with_pos (IR_NM_func, yyattributes_top [0].pos);
			IR_set_thread_flag (yyval.pointer, TRUE);
			IR_set_final_flag (yyval.pointer, yyattributes_top [-2].flag);
		      }

#line 5369 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 27];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 666:
          /*              func_thread_class : opt_final CLASS pos .  (214) */

#line 1034 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			yyval.pointer = create_node_with_pos (IR_NM_class, yyattributes_top [0].pos);
			IR_set_final_flag (yyval.pointer, yyattributes_top [-2].flag);
		      }

#line 5385 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 27];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 667:
          /*              opt_final : .  (215) */

#line 1039 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = FALSE;}

#line 5398 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 38];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 668:
          /*              opt_final : FINAL .  (216) */

#line 1040 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = TRUE;}

#line 5415 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 38];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 669:
          /*              else_part : .  (217) */

#line 1042 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 5428 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 28];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 670:
          /*              else_part : ELSE $35 stmt .  (218) */

#line 1043 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = uncycle_stmt_list (yyattributes_top [0].pointer);}

#line 5445 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 28];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 671:
          /*              $35 : .  (219) */

#line 1043 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.flag = yyattributes_top [-2].flag;}

#line 5458 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 78];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 672:
          /*              expr_empty : .  (220) */

#line 1045 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 5475 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 29];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 673:
          /*              expr_empty : expr .  (221) */

#line 1046 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [0].pointer;}

#line 5492 "d_yacc.c"
          yystates_top--;
          yyattributes_top--;
          yystate = yygoto [yygbase [*yystates_top] + 29];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 674:
          /*              formal_parameters : '('(40) clear_flag var_par_list_empty ')'(41) .  (222) */

#line 1050 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
                         formal_parameter_args_flag = FALSE;
			 yyval.pointer = yyattributes_top [-1].pointer;
		       }

#line 5508 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 30];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 675:
          /*              formal_parameters : '('(40) clear_flag var_par_list ','(44) DOTS pos ')'(41) .  (223) */

#line 1055 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			 formal_parameter_args_flag = TRUE;
			 yyval.pointer = create_node_with_pos (IR_NM_var, yyattributes_top [-1].pos);
			 if (yyattributes_top [-4].pointer != NULL)
			   {
			     IR_set_next_stmt (yyval.pointer, IR_next_stmt (yyattributes_top [-4].pointer));
			     IR_set_next_stmt (yyattributes_top [-4].pointer, yyval.pointer);
			   }
			 else
			   IR_set_next_stmt (yyval.pointer, yyval.pointer);
			 IR_set_scope (yyval.pointer, current_scope);
			 IR_set_ident (yyval.pointer, get_ident_node (ARGS_NAME, yyattributes_top [-1].pos));
		       }

#line 5533 "d_yacc.c"
          yystates_top -= 7;
          yyattributes_top -= 7;
          yystate = yygoto [yygbase [*yystates_top] + 30];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 676:
          /*              formal_parameters : '('(40) DOTS pos ')'(41) .  (224) */

#line 1069 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
			 formal_parameter_args_flag = TRUE;
			 yyval.pointer = create_node_with_pos (IR_NM_var, yyattributes_top [-1].pos);
			 IR_set_scope (yyval.pointer, current_scope);
			 IR_set_ident (yyval.pointer,  get_ident_node (ARGS_NAME, yyattributes_top [-1].pos));
			 IR_set_next_stmt (yyval.pointer, yyval.pointer);
		       }

#line 5552 "d_yacc.c"
          yystates_top -= 4;
          yyattributes_top -= 4;
          yystate = yygoto [yygbase [*yystates_top] + 30];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 677:
          /*              block : '{'(123) pos $36 stmt_list '}'(125) .  (225) */

#line 1083 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
               IR_set_pos (current_scope, yyattributes_top [-3].pos);
               yyval.pointer = yyattributes_top [-1].pointer;
	       finish_block ();
             }

#line 5569 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 31];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 678:
          /*              $36 : .  (226) */

#line 1079 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	       start_block ();
	     }

#line 5584 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 79];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 679:
          /*              stmt_list : .  (227) */

#line 1090 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = NULL;}

#line 5601 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 32];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 680:
          /*              stmt_list : stmt_list clear_flag stmt .  (228) */

#line 1091 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = merge_stmt_lists (yyattributes_top [-2].pointer, yyattributes_top [0].pointer);}

#line 5618 "d_yacc.c"
          yystates_top -= 3;
          yyattributes_top -= 3;
          yystate = yygoto [yygbase [*yystates_top] + 32];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 681:
          /*              stmt_list : stmt_list error .  (229) */

#line 1092 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{yyval.pointer = yyattributes_top [-1].pointer;}

#line 5631 "d_yacc.c"
          yystates_top -= 2;
          yyattributes_top -= 2;
          yystate = yygoto [yygbase [*yystates_top] + 32];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 682:
          /*              program : pos $37 stmt_list $38 END_OF_FILE .  (230) */

#line 1115 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
	      YYACCEPT;
	    }

#line 5646 "d_yacc.c"
          yystates_top -= 5;
          yyattributes_top -= 5;
          yystate = yygoto [yygbase [*yystates_top] + 33];
          (*++yystates_top) = yystate;
          (*++yyattributes_top) = yyval;
          break;
        case 683:
          /*              $37 : .  (231) */

#line 1095 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
              current_scope = yyval.pointer
                = create_node_with_pos (IR_NM_block, yyattributes_top [0].pos);
              IR_set_next_stmt (yyval.pointer, NULL);
              IR_set_func_class_ext (yyval.pointer, NULL);
	      IR_set_access_list (yyval.pointer, NULL);
	      IR_set_exceptions (yyval.pointer, NULL);
	      start_block ();
            }

#line 5667 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 80];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        case 684:
          /*              $38 : .  (232) */

#line 1105 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"
{
              first_program_stmt = yyattributes_top [-1].pointer;
              IR_set_block_stmts (first_program_stmt,
                                  uncycle_stmt_list (yyattributes_top [0].pointer));
	      IR_set_access_list
		(first_program_stmt,
		 uncycle_access_list (IR_access_list (first_program_stmt)));
	      finish_block ();
            }

#line 5692 "d_yacc.c"
          yystate = yygoto [yygbase [*yystates_top] + 81];
          if (yystates_top >= yystates_end
              && yyexpand_states_stack(&yystates, &yystates_end, &yystates_top))
            YYABORT;
          (*++yystates_top) = yystate;
          if (yyattributes_top >= yyattributes_end
              && yyexpand_attributes_stack(&yyattributes, &yyattributes_end, &yyattributes_top))
            YYABORT;
          (*++yyattributes_top) = yyval;
          break;
        default:
          abort ();
        }
    }

yyaccept:
  if (yystates != NULL)
    YYFREE (yystates);
  if (yyattributes != NULL)
    YYFREE (yyattributes);
  if (yylook_ahead_char != NULL)
    YYFREE (yylook_ahead_char);
  if (yylook_ahead_attribute != NULL)
    YYFREE (yylook_ahead_attribute);
  return 0;

yyabort:
  if (yystates != NULL)
    YYFREE (yystates);
  if (yyattributes != NULL)
    YYFREE (yyattributes);
  if (yylook_ahead_char != NULL)
    YYFREE (yylook_ahead_char);
  if (yylook_ahead_attribute != NULL)
    YYFREE (yylook_ahead_attribute);
  return 1;

}



#line 1119 "/usr/src/ports/cocom/cocom-0.996-2.i686/src/cocom-0.996/DINO/d_yacc.y"


/* Merging two cyclic lists into one cyclic list. */
static IR_node_t
merge_stmt_lists (IR_node_t list1, IR_node_t list2)
{
  IR_node_t result;

  if (list2 != NULL) {
    if (list1 != NULL)
      {
        IR_node_t first;
        
        first = IR_next_stmt (list2);
        IR_set_next_stmt (list2, IR_next_stmt (list1));
        IR_set_next_stmt (list1, first);
      }
    result = list2;
  }
  else
    result = list1;
  return result;
}

/* Make normal list from cycle stmt list with the pointer to the last
   stmt. */
static IR_node_t
uncycle_stmt_list (IR_node_t list)
{
  IR_node_t first;

  if (list == NULL)
    return list;
  first = IR_next_stmt (list);
  IR_set_next_stmt (list, NULL);
  return first;
}



/* Merging two cyclic lists into one cyclic list. */
static IR_node_t
merge_access_lists (IR_node_t list1, IR_node_t list2)
{
  IR_node_t result;

  if (list2 != NULL) {
    if (list1 != NULL)
      {
        IR_node_t first;
        
        first = IR_next_access_ident (list2);
        IR_set_next_access_ident (list2, IR_next_access_ident (list1));
        IR_set_next_access_ident (list1, first);
      }
    result = list2;
  }
  else
    result = list1;
  return result;
}

/* Make normal list from cycle ident list with the pointer to the last
   stmt. */
static IR_node_t
uncycle_access_list (IR_node_t list)
{
  IR_node_t first;

  if (list == NULL)
    return list;
  first = IR_next_access_ident (list);
  IR_set_next_access_ident (list, NULL);
  return first;
}



/* Merging two cyclic lists into one cyclic list. */
static IR_node_t
merge_exception_lists (IR_node_t list1, IR_node_t list2)
{
  IR_node_t result;

  if (list2 != NULL) {
    if (list1 != NULL)
      {
        IR_node_t first;
        
        first = IR_next_exception (list2);
        IR_set_next_exception (list2, IR_next_exception (list1));
        IR_set_next_exception (list1, first);
      }
    result = list2;
  }
  else
    result = list1;
  return result;
}

/* Make normal list from cycle exception list with the pointer to the last
   exception. */
static IR_node_t
uncycle_exception_list (IR_node_t list)
{
  IR_node_t first;

  if (list == NULL)
    return list;
  first = IR_next_exception (list);
  IR_set_next_exception (list, NULL);
  return first;
}



/* This page contains abstract data `istream_stack'.  This abstract
   data opens and closes included files saves and restores scanner
   states corresponding to processed files. */

/* The following structure describes current input stream and scanner
   state and is used for saving and restoring input stream and scanner
   state to process included files. */
struct istream_state
{
  /* The following member is defined only for
     `curr_istream_state'. And its value NULL when the current input
     stream is undefined or command line. */
  FILE *file;
  /* File name of given input stream. Null if the current input stream
     is undefined.  Empty string if the current input stream is
     command line. */
  const char *file_name;
  /* Current position in file corresponding to given input stream.
     The following member is defined only for structures in the input
     stream stack and if it is not command line stream. */
  long file_pos;
  /* The following member contains parameter value of the function
     `add_lexema_to_file' after immediately call of this
     function or -1 otherwise. */
  int uninput_lexema_code;
};

/* The following structure contains all current input stream and
   scanner state.  If the member `file_name' value is NULL then input
   stream is not defined. */
static struct istream_state curr_istream_state;

/* All input stream stack is implemented by variable length object.
   See package `vl-object'. */
static vlo_t istream_stack;

/* The following value is used if previous_char does not contain an
   input char */
#define EMPTY_PREVIOUS_CHAR (-2000)

/* The following variable is used for storing '\r'. */
static int previous_char;

/* The following function creates empty input stream stack and
   initiates current input stream and scanner state as undefined. */
static void
initiate_istream_stack (void)
{
  VLO_CREATE (istream_stack, 0);
  curr_istream_state.file_name = NULL;
  curr_istream_state.file = NULL;
  curr_istream_state.uninput_lexema_code = (-1);
}

/* The following function deletes the input stream stack and closes
   current input file if current input stream state is defined.  */
static void
finish_istream_stack (void)
{
  VLO_DELETE (istream_stack);
  if (curr_istream_state.file != NULL)
    fclose (curr_istream_state.file);
}

/* The following function returns height of input stream stack,
   i.e. current file inclusion level. */
int
istream_stack_height (void)
{
  return VLO_LENGTH (istream_stack) / sizeof (struct istream_state);
}

/* The following function saves current input stream and scanner state
   (if it is defined) in the stack, closes file corresponding to
   current input stream, opens file corresponding to new input stream,
   and sets up new current input stream and scanner state.  The
   function also checks up absence of loop of file inclusions.  The
   function reports errors if the loop exists or new file is not
   opened. */
static void
push_curr_istream (const char *new_file_name, position_t error_pos)
{
  int i;

  if (curr_istream_state.file_name != NULL)
    {
      /* The current stream is defined. */
      if (*curr_istream_state.file_name != '\0')
	{
	  /* The current stream is not command line. */
	  curr_istream_state.file_pos = ftell (curr_istream_state.file);
	  fclose (curr_istream_state.file);
	  curr_istream_state.file = NULL;
	}
      VLO_ADD_MEMORY (istream_stack, &curr_istream_state,
		      sizeof (struct istream_state));
      for (i = 0; i < istream_stack_height (); i++)
	if (strcmp (((struct istream_state *) VLO_BEGIN (istream_stack))
		    [i].file_name, new_file_name) == 0)
	  error (TRUE, error_pos,
		 "fatal error -- cycle on inclusion of file `%s'",
		 new_file_name);
    }
  curr_istream_state.file_name = new_file_name;
  curr_istream_state.file = NULL;
  if (*new_file_name != '\0')
    {
      /* The current stream is not commad line. */
      curr_istream_state.file = fopen (new_file_name, "rb");
      if (curr_istream_state.file == NULL)
	system_error (TRUE, error_pos, "fatal error -- `%s': ", 
		      curr_istream_state.file_name);
    }
  previous_char = EMPTY_PREVIOUS_CHAR;
  start_file_position (curr_istream_state.file_name);
  curr_istream_state.uninput_lexema_code = (-1);
}

/* The following function closes file corresponding to current input
   stream (it must be defined), reopens file corresponding to previous
   input stream (if it is defined) and restores previous input stream
   and scanner state.  The function can fix error if the file is not
   reopened. */
static void
pop_istream_stack (void)
{
  assert (curr_istream_state.file_name != NULL);
  if (curr_istream_state.file != NULL)
    {
      fclose (curr_istream_state.file);
      curr_istream_state.file = NULL;
    }
  if (istream_stack_height () != 0)
    {
      curr_istream_state
	= (((struct istream_state *) VLO_BEGIN (istream_stack))
	   [istream_stack_height () - 1]);
      VLO_SHORTEN (istream_stack, sizeof (struct istream_state));
      if (*curr_istream_state.file_name != '\0')
	{
	  /* It is not command line stream. */
	  curr_istream_state.file = fopen (curr_istream_state.file_name, "rb");
	  if (curr_istream_state.file == NULL
	      || fseek (curr_istream_state.file,
			curr_istream_state.file_pos, 0) != 0)
	    system_error (TRUE, no_position,
			  "fatal error -- repeated opening file `%s': ", 
			  curr_istream_state.file_name);
	}
      finish_file_position ();
    }
}

/* The following field returns directory name of given file name. */
static const char *
file_dir_name (const char *file_name)
{
  const char *last_slash;
  const char *curr_char_ptr;
  const char *result;

  assert (file_name != NULL);
  for (curr_char_ptr = file_name, last_slash = NULL;
       *curr_char_ptr != '\0';
       curr_char_ptr++)
    if (*curr_char_ptr == '/')
      last_slash = curr_char_ptr;
  if (last_slash == NULL)
    return ""; /* current directory */
  else
    {
      IR_TOP_ADD_MEMORY (file_name, last_slash - file_name + 1);
      IR_TOP_ADD_BYTE ('\0');
      result = IR_TOP_BEGIN ();
      IR_TOP_FINISH ();
      return result;
    }
}

/* The following field returns full name of file with given directory
   name, file name itself, and suffix. */
static const char *
file_path_name (const char *directory_name, const char *file_name,
                const char *file_suffix)
{
  const char *result;

  assert (directory_name != NULL);
  IR_TOP_ADD_STRING (directory_name);
  if (strlen (directory_name) != 0
      && directory_name [strlen (directory_name) - 1] != '/')
    IR_TOP_ADD_STRING ("/");
  IR_TOP_ADD_STRING (file_name);
  IR_TOP_ADD_STRING (file_suffix);
  result = IR_TOP_BEGIN ();
  IR_TOP_FINISH ();
  return result;
}

#include <pwd.h>

static const char *
canonical_path_name (const char *name)
{
  char buf [PATH_MAX + 1];
  char *p, *str, *result;
  int sep, sep1;
  sep = sep1 = '/';
  if (*name != sep && *name != sep1)
    {
      getcwd (buf, PATH_MAX);
      IR_TOP_ADD_STRING (buf);
      IR_TOP_SHORTEN (1);
      IR_TOP_ADD_BYTE (sep);
      IR_TOP_ADD_BYTE ('\0');
    }
  IR_TOP_ADD_STRING (name);
  result = IR_TOP_BEGIN ();
  IR_TOP_FINISH ();
  for (p = result; *p != '\0'; p++)
    if (*p == sep1)
      *p = sep;
  /* Remove // /. /<something>/.. */
  for (p = result; *p != '\0';)
    if (*p == sep && p[1] == sep)
      memmove (p, p + 1, strlen (p));
    else if (*p == sep && p[1] == '.' && p[2] == sep)
      memmove (p, p + 2, strlen (p + 1));
    else if (p == result && *p == sep && p[1] == '.' && p[2] == '.')
      memmove (p, p + 3, strlen (p + 2));
    else if (*p == sep && p[1] == '.' && p[2] == '.' && p[3] == sep)
      {
        if (p == result)
          memmove (p, p + 3, strlen (p + 2));
        else
          {
            for (str = p - 1; *str != sep; str--)
              ;
            memmove (str, p + 3, strlen (p + 2));
            p = str;
	  }
      }
    else
      p++;
  return (const char *) result;
}


/* The following function returns full file name.  To make this
   functions searches for files in
     1. current directory (when the current stream is command line stream)
        or in directory in which source file with the corresponding
        include-clause is placed
     2. and in directories
        given in the command line of DINO and DINO environment variable
        DINO_PATH.
     3. Standard library directory.
   If the file is not found the function returns the extended
   specification file name mentioned in 1. */
static const char *
full_file_name (const char *fname)
{
  const char *curr_directory_name;
  const char *real_file_name;
  const char *file_name;
  const char **path_directory_ptr;
  FILE *curr_file;

  curr_directory_name
    = (*curr_istream_state.file_name == '\0'
       ? "" : file_dir_name (curr_istream_state.file_name));
  real_file_name = file_path_name (curr_directory_name, fname,
                                   STANDARD_INPUT_FILE_SUFFIX);
  curr_file = fopen (real_file_name, "rb");
  if (curr_file == NULL)
    for (path_directory_ptr = include_path_directories;
         *path_directory_ptr != NULL;
         path_directory_ptr++)
      {
        file_name = file_path_name (*path_directory_ptr, fname,
	                            STANDARD_INPUT_FILE_SUFFIX);
        curr_file = fopen (file_name, "rb");
        if (curr_file != NULL)
          {
            real_file_name = file_name;
            break;
          }
      }
  if (curr_file != NULL && fclose (curr_file) == EOF)
    system_error (TRUE, no_position, "fatal error -- `%s': ", real_file_name);
  return canonical_path_name (real_file_name);
}



/* This page contains abstract data `scanner'.  This abstract data
   divides input stream characters on tokens (lexemas).

   There is requirement of back control (from parser to scanner).
   This back control is needed to switch to processing new file after
   recognizing string in construction `include'.  After recognizing
   the first string the parser is to tell scanner that the next lexema
   must be INCLUSSION.  After getting such lexema the parser is
   switched correctly onto processing new file.
    
   When EOF is read the scanner returns END_OF_FILE only when input
   stream stack is empty, otherwise returns lexema
   END_OF_INCLUDE_FILE.  */

#include "d_kw.c"

/* The following variable referes for current char of parsed
   environment.  If it refers for zero character, the environment has
   been parsed already. */
static const char *environment;

/* The following variable is position which will be set up after the
   parsing environment. */
static position_t after_environment_position;

/* The variable is used for implementation of getc when reading from
   the command line string. */
static int curr_char_number;

/* Getc for dino.  Replacing "\r\n" onto "\n". */
static int
d_getc (void)
{
  int result;

  if (*environment != '\0')
    {
      result = *environment++;
      if (*environment == 0)
	/* Restore the position. */
	current_position = after_environment_position;
    }
  else if (curr_istream_state.file != NULL)
    {
      if (previous_char != '\r')
	result = getc (curr_istream_state.file);
      else
	{
	  result = previous_char;
	  previous_char = EMPTY_PREVIOUS_CHAR;
	}
      if (result == '\r')
	{
	  result = getc (curr_istream_state.file);
	  if (result != '\n')
	    {
	      ungetc (result, curr_istream_state.file);
	      result = '\r';
	    }
	}
    }
  else
    {
      assert (command_line_program != NULL);
      result = command_line_program [curr_char_number];
      if (result == 0)
	result = EOF;
      else
	curr_char_number++;
    }
  return result;
}

/* Ungetc for dino. */
static void
d_ungetc (int ch)
{
  if (*environment != '\0')
    environment--;
  else if (curr_istream_state.file != NULL)
     {
       if (ch != '\r')
	 ungetc (ch, curr_istream_state.file);
       else
	 previous_char = ch;
     }
   else
     {
       assert (command_line_program != NULL);
       if (curr_char_number != 0 && ch != EOF)
	 curr_char_number--;
     }
}

/* Var length string used by func yylval for text presentation of the
   symbol. */
static vlo_t symbol_text;

/* The func reads one code (may be composited from some characters)
   using C language conventions.  It is supposed that the current
   character is not end marker (string or character constant).  The
   func returns the code value or negative number if error is fixed.
   After the call the current char is first char after the code or the
   same as before call if error was fixed.  Position is position of
   the char will be read next.  Parameter INPUT_CHAR is current input
   char (the next chars may be read by d_getc ()).  If the code is
   symbol string breaking TRUE is passed through parameter
   correct_newln.  This case is error and the error must be processed
   after the call if character constant is processed. */
static int get_string_code (int input_char, int *correct_newln)
{
  int character_code;

  /* `current_position' corresponds position right after `input_char'
     here. */
  if (input_char == EOF || input_char == '\n')
    {
      current_position.column_number--;
      d_ungetc (input_char);
      return (-1);
    }
  *correct_newln = FALSE;
  if (input_char == '\\')
    {
      input_char = d_getc ();
      current_position.column_number++;
      if (input_char == 'n')
        input_char = '\n';
      else if (input_char == 't')
        input_char = '\t';
      else if (input_char == 'v')
	input_char = '\v';
      else if (input_char == 'a')
        input_char = '\a';
      else if (input_char == 'b')
        input_char = '\b';
      else if (input_char == 'r')
        input_char = '\r';
      else if (input_char == 'f')
        input_char = '\f';
      else if (input_char == '\\' || input_char == '\'' || input_char == '\"')
        ;
      else if (input_char == '\n')
        {
	  current_position.column_number = 1;
	  current_position.line_number++;
          *correct_newln = TRUE;
        }
      else if (isdigit (input_char) && input_char != '8' && input_char != '9')
	{
	  character_code = VALUE_OF_DIGIT (input_char);
	  input_char = d_getc ();
	  if (!isdigit (input_char) || input_char == '8' || input_char == '9')
	    d_ungetc (input_char);
	  else
	    {
	      current_position.column_number++;
	      character_code
		= (character_code * 8 + VALUE_OF_DIGIT (input_char));
	      input_char = d_getc ();
	      if (!isdigit (input_char)
		  || input_char == '8' || input_char == '9')
		d_ungetc (input_char);
	      else
		{
		  character_code
		    = (character_code * 8 + VALUE_OF_DIGIT (input_char));
		  current_position.column_number++;
		}

	    }
	  input_char = character_code;
      }
    }
  return input_char;
}

/* Determine positions for the tabs. */
#define TAB_STOP 8

/* The following func recognizes next source symbol from the input
   file, returns its code, modifies var current_position so that its
   value is equal to position of the current character in the input
   file and sets up var source_position so that its value is equal to
   position of the returned symbol start, creates corresponding code
   node (if it is needed) and sets up yylval to the node address.  The
   func skips all white spaces and commentaries and fixes all lexical
   errors. */
int yylex (void)
{
  int input_char;
  int number_of_successive_error_characters;
  
  if (curr_istream_state.uninput_lexema_code >= 0)
    {
      int result;
      
      source_position = current_position;
      result = curr_istream_state.uninput_lexema_code;
      curr_istream_state.uninput_lexema_code = (-1);
      return result;
    }
  VLO_NULLIFY (symbol_text);
  for (number_of_successive_error_characters = 0;;)
    {
      input_char = d_getc ();
      /* `current_position' corresponds `input_char' here */
      switch (input_char)
        {
          /* Break results in skipping all white spaces. */
        case ' ':
        case '\f':
          current_position.column_number++;
          break;
        case '\t':
          current_position.column_number
            = ((current_position.column_number - 1) / TAB_STOP + 1)
              * TAB_STOP + 1;
          break;
        case '\n':
          current_position.column_number = 1;
          current_position.line_number++;
          break;
        case '\r':
          current_position.column_number++;
          break;
        case '~':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return XOR_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '~';
            }
        case '+':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '+')
	    {
	      current_position.column_number++;
	      return INCR;
	    }
          else if (input_char == '=')
	    {
	      current_position.column_number++;
	      return PLUS_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '+';
            }
        case '-':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '-')
	    {
	      current_position.column_number++;
	      return DECR;
	    }
          else if (input_char == '=')
	    {
	      current_position.column_number++;
	      return MINUS_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '-';
            }
        case '=':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
              input_char = d_getc ();
	      if (input_char == '=')
		{
		  current_position.column_number++;
		  return IDENTITY;
		}
              else
               {
                 d_ungetc (input_char);
                 return EQ;
               }
	    }
          else
            {
              d_ungetc (input_char);
	      return '=';
            }
        case '@':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return CONCAT_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '@';
            }
        case '<':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
              input_char = d_getc ();
	      if (input_char == '>')
		{
		  current_position.column_number++;
		  return SWAP;
		}
              else
               {
                 d_ungetc (input_char);
                 return LE;
               }
	    }
          else if (input_char == '<')
            {
	      current_position.column_number++;
              input_char = d_getc ();
	      if (input_char == '=')
		{
		  current_position.column_number++;
		  return LSHIFT_ASSIGN;
		}
              else
               {
                 d_ungetc (input_char);
                 return LSHIFT;
               }
            }
          else
            {
              d_ungetc (input_char);
              return '<';
            }
        case '>':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return GE;
	    }
          else if (input_char == '>')
            {
	      current_position.column_number++;
              input_char = d_getc ();
	      if (input_char == '=')
		{
		  current_position.column_number++;
		  return ASHIFT_ASSIGN;
		}
	      else if (input_char == '>')
                {
		  current_position.column_number++;
                  input_char = d_getc ();
	          if (input_char == '=')
		    {
		      current_position.column_number++;
		      return RSHIFT_ASSIGN;
		    }
                  else
                   {
                     d_ungetc (input_char);
                     return RSHIFT;
                   }
                }
              else
                {
                  d_ungetc (input_char);
                  return ASHIFT;
                }
            }
          else
            {
              d_ungetc (input_char);
              return '>';
            }
        case '*':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return MULT_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '*';
            }
        case '/':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return DIV_ASSIGN;
	    }
          else if (input_char == '/')
	    {
              /* commentary */
              for (;;)
                {
		  current_position.column_number++;
                  input_char = d_getc ();
                  if (input_char == '\n')
		    {
		      current_position.column_number = 1;
		      current_position.line_number++;
		      break;
		    }
                  else if (input_char == EOF)
                    break;
		}
	      break;
	    }
          else if (input_char == '*')
	    {
	      current_position.column_number++;
              for (;;)
                {
                  input_char = d_getc ();
		  if (input_char == '*')
		    {
		      current_position.column_number++;
		      input_char = d_getc ();
		      if (input_char == '/')
			{
			  current_position.column_number++;
			  break;
			}
		      else
			d_ungetc (input_char);
		    }
		  else if (input_char == '\n')
		    {
		      current_position.column_number = 1;
		      current_position.line_number++;
		    }
                  else if (input_char == EOF)
		    {
		      error (FALSE, current_position, ERR_eof_in_comment);
		      break;
		    }
		}
	      break;
	    }
          else
            {
              d_ungetc (input_char);
              return '/';
            }
        case '&':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '&')
	    {
	      current_position.column_number++;
	      return LOGICAL_AND;
	    }
          else if (input_char == '=')
	    {
	      current_position.column_number++;
	      return AND_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '&';
            }
        case '|':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '|')
	    {
	      current_position.column_number++;
	      return LOGICAL_OR;
	    }
          else if (input_char == '=')
	    {
	      current_position.column_number++;
	      return OR_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '|';
            }
        case '%':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return REM_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '%';
            }
        case '^':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
	      return XOR_ASSIGN;
	    }
          else
            {
              d_ungetc (input_char);
              return '^';
            }
        case '!':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '=')
	    {
	      current_position.column_number++;
              input_char = d_getc ();
	      if (input_char == '=')
		{
		  current_position.column_number++;
		  return UNIDENTITY;
		}
              else
               {
                 d_ungetc (input_char);
                 return NE;
               }
	    }
          else
            {
              d_ungetc (input_char);
              return '!';
            }
        case '.':
	  source_position = current_position;
          current_position.column_number++;
          input_char = d_getc ();
          if (input_char == '.')
	    {
	      current_position.column_number++;
	      input_char = d_getc ();
	      if (input_char == '.')
		{
		  current_position.column_number++;
		  return DOTS;
		}
	      else
		{
		  current_position.column_number--;
		  error (FALSE, current_position, ERR_invalid_input_char);
		  current_position.column_number++;
		  d_ungetc (input_char);
		  return '.';
		}
	    }
          else
            {
              d_ungetc (input_char);
              return '.';
            }
        case ':':
        case ',':
        case ';':
        case '?':
        case '(':
        case ')':
        case '[':
        case ']':
        case '{':
        case '}':
        case '#':
	  source_position = current_position;
          current_position.column_number++;
          return input_char;
        case EOF:
	  source_position = current_position;
          return (istream_stack_height () == 0
		  ? END_OF_FILE : END_OF_INCLUDE_FILE);
        case '\'':
          {
            IR_node_t unique_char_node_ptr;
            int correct_newln, character_code;
            
	    source_position = current_position;
	    current_position.column_number++;
            input_char = d_getc ();
	    current_position.column_number++;
            if (input_char == '\'')
	      {
		current_position.column_number--;
		error (FALSE, current_position, ERR_invalid_char_constant);
		current_position.column_number++;
	      }
            else
              {
                input_char = get_string_code (input_char, &correct_newln);
                if (input_char < 0 || correct_newln)
		  {
		    current_position.column_number--;
		    error (FALSE, current_position, ERR_invalid_char_constant);
		    current_position.column_number++;
		  }
              }
	    current_position.column_number++;
            character_code = d_getc ();
            if (character_code != '\'')
              {
		current_position.column_number--;
                d_ungetc (character_code);
                error (FALSE, current_position, ERR_invalid_char_constant);
              }
            IR_set_char_value (temp_unique_char, input_char);
            unique_char_node_ptr = *find_table_entry (temp_unique_char, FALSE);
            if (unique_char_node_ptr == NULL)
              {
                unique_char_node_ptr = create_node (IR_NM_unique_char);
                IR_set_char_value (unique_char_node_ptr, input_char);
                include_to_table (unique_char_node_ptr);
              }
            yylval.pointer = create_node_with_pos (IR_NM_char,
						   source_position);
            IR_set_unique_char (yylval.pointer, unique_char_node_ptr);
            return CHARACTER;
          }
        case '\"':
          {
            int correct_newln;
            IR_node_t unique_string_node_ptr;
            char *string_value_in_code_memory;
            
	    source_position = current_position;
	    current_position.column_number++;
            for (;;)
              {
                input_char = d_getc ();
		current_position.column_number++;
                if (input_char == '\"')
                  break;
                input_char = get_string_code (input_char, &correct_newln);
                if (input_char < 0)
                  {
                    error (FALSE, current_position, ERR_string_end_absence);
                    break;
                  }
                if (!correct_newln)
                  VLO_ADD_BYTE (symbol_text, input_char);
              }
            VLO_ADD_BYTE (symbol_text, '\0');
            IR_set_string_value (temp_unique_string, VLO_BEGIN (symbol_text));
            unique_string_node_ptr = *find_table_entry (temp_unique_string,
							FALSE);
            if (unique_string_node_ptr == NULL)
              {
                unique_string_node_ptr
                  = create_unique_node_with_string
                    (IR_NM_unique_string, VLO_BEGIN (symbol_text),
                     &string_value_in_code_memory);
                IR_set_string_value (unique_string_node_ptr,
                                     string_value_in_code_memory);
                include_to_table (unique_string_node_ptr);
              }
            yylval.pointer = create_node_with_pos (IR_NM_string,
						   source_position);
            IR_set_unique_string (yylval.pointer, unique_string_node_ptr);
            return STRING;
          }
        default:
          if (isalpha (input_char) || input_char == '_' )
            {
              int keyword;
              
	      source_position = current_position;
              /* Ident recognition. */
              do
                {
		  current_position.column_number++;
                  VLO_ADD_BYTE (symbol_text, input_char);
                  input_char = d_getc ();
                }
              while (isalpha (input_char) || isdigit (input_char)
                     || input_char == '_');
              d_ungetc (input_char);
              VLO_ADD_BYTE (symbol_text, '\0');
              keyword = KR_find_keyword (VLO_BEGIN (symbol_text),
                                         VLO_LENGTH (symbol_text) - 1);
              if (keyword != 0)
                return keyword;
              else
                {
                  IR_node_t unique_ident;
                  
                  unique_ident
                    = create_unique_ident_node (VLO_BEGIN (symbol_text));
                  yylval.pointer = create_node_with_pos (IR_NM_ident,
							 source_position);
                  IR_set_unique_ident (yylval.pointer, unique_ident);
                  return IDENT;
                }
            }
          else if (isdigit (input_char))
            {
              /* Recognition numbers. */
	      int float_flag = FALSE;

	      source_position = current_position;
              do
                {
                  /* `current_position' corresponds to `input_char' here. */
                  current_position.column_number++;
                  VLO_ADD_BYTE (symbol_text, input_char);
                  input_char = d_getc ();
                }
              while (isdigit (input_char));
              if (input_char == '.')
                {
                  float_flag = TRUE;
                  do
                    {
		      /* `current_position' corresponds to
                         `input_char' here. */
		      current_position.column_number++;
	              VLO_ADD_BYTE (symbol_text, input_char);
                      input_char = d_getc ();
                    }
	          while (isdigit (input_char));
                }
              if (input_char == 'e' || input_char == 'E')
                {
		  float_flag = TRUE;
		  current_position.column_number++;
                  input_char = d_getc ();
		  if (input_char != '+' && input_char != '-'
		      && !isdigit (input_char))
                    error (FALSE, current_position, ERR_exponent_absence);
		  else
                    {
		      VLO_ADD_BYTE (symbol_text, 'e');
		      do
			{
			  /* `current_position' corresponds to
                             `input_char' here. */
			  current_position.column_number++;
			  VLO_ADD_BYTE (symbol_text, input_char);
			  input_char = d_getc ();
			}
		      while (isdigit (input_char));
                    }
                }
	      VLO_ADD_BYTE (symbol_text, '\0');
              d_ungetc (input_char);
	      if (float_flag)
		yylval.pointer
		  = get_float_node (a2f (VLO_BEGIN (symbol_text)),
				    source_position);
              else
		yylval.pointer
		  = get_int_node (a2i (VLO_BEGIN (symbol_text)),
				  source_position);
	      if (errno)
                error (FALSE, current_position,
		       (float_flag ? ERR_float_value : ERR_int_value));
              return NUMBER;
            }
          else
            {
              number_of_successive_error_characters++;
              if (number_of_successive_error_characters == 1)
                error (FALSE, current_position, ERR_invalid_input_char);
              current_position.column_number++;
            }
        }
    }
}

/* The following function initiates internal state of the scanner.
   The function must be called only once before any work with the
   scanner. */
void
initiate_scanner (void)
{
  initiate_istream_stack ();
  curr_char_number = 0;
  environment = ENVIRONMENT;
  VLO_CREATE (symbol_text, 500);
}

/* The following function is called to tune the scanner on input
   stream from given file.  The function is needed for nested
   procession of included files.  If the FILE_NAME is empty string
   then it is command line stream.  If it is the first scanner file,
   special code for correct diganostic during and after parsing
   environment is executed. */
void
start_scanner_file (const char *new_file_name, position_t error_pos)
{
  push_curr_istream (new_file_name, error_pos);
  if (*environment != 0)
    {
      /* Environment is not processed yet. Save the position. */
      after_environment_position = current_position;
      /* File name for environment. */
      current_position.file_name = ENVIRONMENT_PSEUDO_FILE_NAME;
    }
}

/* The following function restores scanner state concerning previous
   input stream with the aid of abstract data `istream_stack'. */
static void
finish_scanner_file (void)
{
  pop_istream_stack ();
}

/* The following function is called from the parser and points out
   that lexema given as parameter will be returned by following
   function `yylex' call. */
static void
add_lexema_to_file (int lexema_code)
{
  assert (lexema_code >= 0);
  curr_istream_state.uninput_lexema_code = lexema_code;
}

/* The function frees all memory allocated during the scanner work. */
void
finish_scanner (void)
{
  finish_istream_stack ();
}



/* This page contains functions needed for processing
   include-clauses. */

/* Current covering block level (1, 2, ...).  0 means no covering
   block. */
static int block_level = 0;

/* VLO for pointers to names of include files and numbers of include
   file names for each covering blocks. */
static vlo_t include_file_names;

/* Number of include files for the current block. */
static int curr_block_include_file_names_number;

/* The function starts new block.  It should be also called for the
   implicit top-level block. */
static void
start_block (void)
{
  if (block_level == 0)
    VLO_CREATE (include_file_names, 0);
  else
    VLO_ADD_MEMORY (include_file_names, &curr_block_include_file_names_number,
		    sizeof (curr_block_include_file_names_number));
  curr_block_include_file_names_number = 0;
  block_level++;
}

/* The function finishes the block. */
static void
finish_block (void)
{
  assert (block_level > 0);
  block_level--;
  if (block_level == 0)
    VLO_DELETE (include_file_names);
  else
    {
      VLO_SHORTEN (include_file_names,
		   curr_block_include_file_names_number * sizeof (char *));
      memcpy (&curr_block_include_file_names_number,
	      (char *) VLO_END (include_file_names)
	      - sizeof (curr_block_include_file_names_number) + 1,
	      sizeof (curr_block_include_file_names_number));
      VLO_SHORTEN (include_file_names,
		   sizeof (curr_block_include_file_names_number));
    }
}

/* The function adds new include file name for the list of include
   files.  The function returns TRUE if the file has been not inserted
   into the list yet.  Otherwise it returns FALSE.  NAME is string in
   the include-clase. */
static int
add_include_file (const char *name)
{
  char **names;
  int i;

  assert (block_level > 0);
  name = full_file_name (name);
  names = (char **) ((char *) VLO_END (include_file_names) + 1
		     - sizeof (char *) * curr_block_include_file_names_number);
  for (i = 0; i < curr_block_include_file_names_number; i++)
    if (strcmp (names [i], name) == 0)
      break;
  if (i < curr_block_include_file_names_number)
    return FALSE;
  VLO_ADD_MEMORY (include_file_names, &name, sizeof (name));
  curr_block_include_file_names_number++;
  return TRUE;
}

/*
Local Variables:
mode:c
End:
*/


#line 7091 "d_yacc.c"
