"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "q-7.11/src/qmparse.c" of archive q-7.11.tar.gz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 /* A Bison parser, made by GNU Bison 2.1.  */
    2 
    3 /* Skeleton parser for Yacc-like parsing with Bison,
    4    Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    5 
    6    This program is free software; you can redistribute it and/or modify
    7    it under the terms of the GNU General Public License as published by
    8    the Free Software Foundation; either version 2, or (at your option)
    9    any later version.
   10 
   11    This program is distributed in the hope that it will be useful,
   12    but WITHOUT ANY WARRANTY; without even the implied warranty of
   13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   14    GNU General Public License for more details.
   15 
   16    You should have received a copy of the GNU General Public License
   17    along with this program; if not, write to the Free Software
   18    Foundation, Inc., 51 Franklin Street, Fifth Floor,
   19    Boston, MA 02110-1301, USA.  */
   20 
   21 /* As a special exception, when this file is copied by Bison into a
   22    Bison output file, you may use that output file without restriction.
   23    This special exception was added by the Free Software Foundation
   24    in version 1.24 of Bison.  */
   25 
   26 /* Written by Richard Stallman by simplifying the original so called
   27    ``semantic'' parser.  */
   28 
   29 /* All symbols defined below should begin with yy or YY, to avoid
   30    infringing on user name space.  This should be done even for local
   31    variables, as they might otherwise be expanded by user macros.
   32    There are some unavoidable exceptions within include files to
   33    define necessary library symbols; they are noted "INFRINGES ON
   34    USER NAME SPACE" below.  */
   35 
   36 /* Identify Bison output.  */
   37 #define YYBISON 1
   38 
   39 /* Bison version.  */
   40 #define YYBISON_VERSION "2.1"
   41 
   42 /* Skeleton name.  */
   43 #define YYSKELETON_NAME "yacc.c"
   44 
   45 /* Pure parsers.  */
   46 #define YYPURE 0
   47 
   48 /* Using locations.  */
   49 #define YYLSP_NEEDED 0
   50 
   51 
   52 
   53 /* Tokens.  */
   54 #ifndef YYTOKENTYPE
   55 # define YYTOKENTYPE
   56    /* Put the tokens into the symbol table, so that GDB and other debuggers
   57       know about them.  */
   58    enum yytokentype {
   59      STRING = 258,
   60      LINE = 259,
   61      INTERACT = 260,
   62      SOURCE = 261,
   63      AS = 262,
   64      CONST = 263,
   65      DEF = 264,
   66      ELSE = 265,
   67      EXTERN = 266,
   68      FROM = 267,
   69      IF = 268,
   70      IMPORT = 269,
   71      INCLUDE = 270,
   72      OTHERWISE = 271,
   73      PRIVATE = 272,
   74      PUBLIC = 273,
   75      SPECIAL = 274,
   76      THEN = 275,
   77      TYPE = 276,
   78      UNDEF = 277,
   79      VAR = 278,
   80      VIRTUAL = 279,
   81      WHERE = 280,
   82      DOTDOT = 281,
   83      EQUIV = 282,
   84      OP0 = 283,
   85      OP1 = 284,
   86      OP2 = 285,
   87      OP3 = 286,
   88      OP4 = 287,
   89      OP5 = 288,
   90      OP6 = 289,
   91      OP7 = 290,
   92      OP8 = 291,
   93      OP9 = 292,
   94      _DEF_ = 293,
   95      _UNDEF_ = 294,
   96      _VAR_ = 295,
   97      _IMPORT_ = 296,
   98      _COPYING_ = 297,
   99      _HELP_ = 298,
  100      _EDIT_ = 299,
  101      _PATH_ = 300,
  102      _PROMPT_ = 301,
  103      _HISTFILE_ = 302,
  104      _HISTSIZE_ = 303,
  105      _CSTACKSIZE_ = 304,
  106      _STACKSIZE_ = 305,
  107      _MEMSIZE_ = 306,
  108      _STATS_ = 307,
  109      _RUN_ = 308,
  110      _SAVE_ = 309,
  111      _LOAD_ = 310,
  112      _CLEAR_ = 311,
  113      _PROFILE_ = 312,
  114      _BREAK_ = 313,
  115      _TBREAK_ = 314,
  116      _DEBUG_ = 315,
  117      _UNPARSE_ = 316,
  118      _ECHO_ = 317,
  119      _CHDIR_ = 318,
  120      _PWD_ = 319,
  121      _LS_ = 320,
  122      _WHICH_ = 321,
  123      _SOURCE_ = 322,
  124      _WHO_ = 323,
  125      _WHOS_ = 324,
  126      _WHOIS_ = 325,
  127      _IMPORTS_ = 326,
  128      _MODULES_ = 327,
  129      _COMPLETION_MATCHES_ = 328,
  130      _DEC_ = 329,
  131      _HEX_ = 330,
  132      _OCT_ = 331,
  133      _STD_ = 332,
  134      _SCI_ = 333,
  135      _FIX_ = 334,
  136      _FORMAT_ = 335,
  137      XID = 336,
  138      QID = 337,
  139      NID = 338,
  140      STR = 339,
  141      INT = 340,
  142      FLOAT = 341,
  143      ARG = 342,
  144      ERRTOK = 343,
  145      ARGERR = 344,
  146      STRERR = 345
  147    };
  148 #endif
  149 /* Tokens.  */
  150 #define STRING 258
  151 #define LINE 259
  152 #define INTERACT 260
  153 #define SOURCE 261
  154 #define AS 262
  155 #define CONST 263
  156 #define DEF 264
  157 #define ELSE 265
  158 #define EXTERN 266
  159 #define FROM 267
  160 #define IF 268
  161 #define IMPORT 269
  162 #define INCLUDE 270
  163 #define OTHERWISE 271
  164 #define PRIVATE 272
  165 #define PUBLIC 273
  166 #define SPECIAL 274
  167 #define THEN 275
  168 #define TYPE 276
  169 #define UNDEF 277
  170 #define VAR 278
  171 #define VIRTUAL 279
  172 #define WHERE 280
  173 #define DOTDOT 281
  174 #define EQUIV 282
  175 #define OP0 283
  176 #define OP1 284
  177 #define OP2 285
  178 #define OP3 286
  179 #define OP4 287
  180 #define OP5 288
  181 #define OP6 289
  182 #define OP7 290
  183 #define OP8 291
  184 #define OP9 292
  185 #define _DEF_ 293
  186 #define _UNDEF_ 294
  187 #define _VAR_ 295
  188 #define _IMPORT_ 296
  189 #define _COPYING_ 297
  190 #define _HELP_ 298
  191 #define _EDIT_ 299
  192 #define _PATH_ 300
  193 #define _PROMPT_ 301
  194 #define _HISTFILE_ 302
  195 #define _HISTSIZE_ 303
  196 #define _CSTACKSIZE_ 304
  197 #define _STACKSIZE_ 305
  198 #define _MEMSIZE_ 306
  199 #define _STATS_ 307
  200 #define _RUN_ 308
  201 #define _SAVE_ 309
  202 #define _LOAD_ 310
  203 #define _CLEAR_ 311
  204 #define _PROFILE_ 312
  205 #define _BREAK_ 313
  206 #define _TBREAK_ 314
  207 #define _DEBUG_ 315
  208 #define _UNPARSE_ 316
  209 #define _ECHO_ 317
  210 #define _CHDIR_ 318
  211 #define _PWD_ 319
  212 #define _LS_ 320
  213 #define _WHICH_ 321
  214 #define _SOURCE_ 322
  215 #define _WHO_ 323
  216 #define _WHOS_ 324
  217 #define _WHOIS_ 325
  218 #define _IMPORTS_ 326
  219 #define _MODULES_ 327
  220 #define _COMPLETION_MATCHES_ 328
  221 #define _DEC_ 329
  222 #define _HEX_ 330
  223 #define _OCT_ 331
  224 #define _STD_ 332
  225 #define _SCI_ 333
  226 #define _FIX_ 334
  227 #define _FORMAT_ 335
  228 #define XID 336
  229 #define QID 337
  230 #define NID 338
  231 #define STR 339
  232 #define INT 340
  233 #define FLOAT 341
  234 #define ARG 342
  235 #define ERRTOK 343
  236 #define ARGERR 344
  237 #define STRERR 345
  238 
  239 
  240 
  241 
  242 /* Copy the first part of user declarations.  */
  243 #line 4 "qmparse.y"
  244 
  245 
  246 /* qmparse.y: Q machine expression parser */
  247 
  248 /* Special case constructs (unary minus) and dangling else cause a number of
  249    parsing conflicts which are resolved correctly. */
  250 
  251 /*  Q eQuational Programming System
  252     Copyright (c) 1991-2002 by Albert Graef
  253     <ag@muwiinfa.geschichte.uni-mainz.de>
  254 
  255     This program is free software; you can redistribute it and/or modify
  256     it under the terms of the GNU General Public License as published by
  257     the Free Software Foundation; either version 1, or (at your option)
  258     any later version.
  259 
  260     This program is distributed in the hope that it will be useful,
  261     but WITHOUT ANY WARRANTY; without even the implied warranty of
  262     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  263     GNU General Public License for more details.
  264 
  265     You should have received a copy of the GNU General Public License
  266     along with this program; if not, write to the Free Software
  267     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  268 
  269 */
  270 
  271 /* make sure we have bison */
  272 
  273 #ifndef YYBISON
  274 #error "Sorry, this program requires bison."
  275 #endif
  276 
  277 #include "qdefs.h"
  278 
  279 extern char *prompt, *prompt2, *prompt3;
  280 extern int pmode;
  281 
  282 static char		signon[] = Q_SIGNON;
  283 static char		copying[] = COPYING;
  284 
  285 static char *psource = "";
  286 
  287 static char  *save_file = NULL;
  288 static char *base;
  289 
  290 static THREAD *thr;
  291 
  292 /*
  293 
  294 This module implements a parser for Q expressions and the special
  295 constructs (def, undef, etc.) permitted in the interactive evaluation
  296 loop. The parser can be run in four different modes signalled by special
  297 leading tokens:
  298 
  299 - STRING: read a single expression from a null-terminated string.
  300 
  301 - LINE: read an expression terminated with newline from a file.
  302 
  303 - INTERACT: read and evaluate a command (including def's,
  304   undef's and shell escapes) from a null-terminated string.
  305 
  306 - SOURCE: read and evaluate commands from a file
  307 
  308 */
  309 
  310 static swap(), pushtern(), pushbin(), pushun(),
  311   pushlist(int n, int m), pushstream(int n, int m), pushtuple(int n, int m),
  312   pushgroup(int *n, int *m),
  313   savepos(), clean();
  314 static init_stats(), fini_stats(), print_stats();
  315 static copyright(), shell(), expression(),
  316   vardecl(), initializer(), assignment(), unassignment(),
  317   sethistfile(), sethistsize(), help(), edit(), save_vars(), clear_vars(),
  318   add_import(), del_import(), clear_imports(), breakpoints(), profile(),
  319   who(), whos(), whois(), ambiguous(), import_list(), modules();
  320 static strparam(), intparam(), boolparam(), boolstrparam(), allparam(),
  321   strlist(), printstr();
  322 
  323 /* The following is set to compile for the libqint target. */
  324 #ifdef QINT_LIBRARY
  325 #undef USE_READLINE
  326 #endif
  327 
  328 #ifndef USE_READLINE
  329 static histwarn();
  330 #endif
  331 
  332 #define MAXARGC 1000
  333 
  334 
  335 /* Enabling traces.  */
  336 #ifndef YYDEBUG
  337 # define YYDEBUG 0
  338 #endif
  339 
  340 /* Enabling verbose error messages.  */
  341 #ifdef YYERROR_VERBOSE
  342 # undef YYERROR_VERBOSE
  343 # define YYERROR_VERBOSE 1
  344 #else
  345 # define YYERROR_VERBOSE 0
  346 #endif
  347 
  348 /* Enabling the token table.  */
  349 #ifndef YYTOKEN_TABLE
  350 # define YYTOKEN_TABLE 0
  351 #endif
  352 
  353 #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
  354 #line 95 "qmparse.y"
  355 typedef union YYSTYPE {
  356   int ival;
  357   mpz_t zval;
  358   double fval;
  359   char *sval;
  360   EXPR *xval;
  361   struct {
  362     int n, m;
  363   } lval;
  364   struct {
  365     char **v;
  366     int c;
  367   } aval;
  368 } YYSTYPE;
  369 /* Line 196 of yacc.c.  */
  370 #line 371 "qmparse.c"
  371 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
  372 # define YYSTYPE_IS_DECLARED 1
  373 # define YYSTYPE_IS_TRIVIAL 1
  374 #endif
  375 
  376 
  377 
  378 /* Copy the second part of user declarations.  */
  379 
  380 
  381 /* Line 219 of yacc.c.  */
  382 #line 383 "qmparse.c"
  383 
  384 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
  385 # define YYSIZE_T __SIZE_TYPE__
  386 #endif
  387 #if ! defined (YYSIZE_T) && defined (size_t)
  388 # define YYSIZE_T size_t
  389 #endif
  390 #if ! defined (YYSIZE_T) && (defined (__STDC__) || defined (__cplusplus))
  391 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
  392 # define YYSIZE_T size_t
  393 #endif
  394 #if ! defined (YYSIZE_T)
  395 # define YYSIZE_T unsigned int
  396 #endif
  397 
  398 #ifndef YY_
  399 # if YYENABLE_NLS
  400 #  if ENABLE_NLS
  401 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
  402 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
  403 #  endif
  404 # endif
  405 # ifndef YY_
  406 #  define YY_(msgid) msgid
  407 # endif
  408 #endif
  409 
  410 #if ! defined (yyoverflow) || YYERROR_VERBOSE
  411 
  412 /* The parser invokes alloca or malloc; define the necessary symbols.  */
  413 
  414 # ifdef YYSTACK_USE_ALLOCA
  415 #  if YYSTACK_USE_ALLOCA
  416 #   ifdef __GNUC__
  417 #    define YYSTACK_ALLOC __builtin_alloca
  418 #   else
  419 #    define YYSTACK_ALLOC alloca
  420 #    if defined (__STDC__) || defined (__cplusplus)
  421 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
  422 #     define YYINCLUDED_STDLIB_H
  423 #    endif
  424 #   endif
  425 #  endif
  426 # endif
  427 
  428 # ifdef YYSTACK_ALLOC
  429    /* Pacify GCC's `empty if-body' warning. */
  430 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
  431 #  ifndef YYSTACK_ALLOC_MAXIMUM
  432     /* The OS might guarantee only one guard page at the bottom of the stack,
  433        and a page size can be as small as 4096 bytes.  So we cannot safely
  434        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
  435        to allow for a few compiler-allocated temporary stack slots.  */
  436 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2005 */
  437 #  endif
  438 # else
  439 #  define YYSTACK_ALLOC YYMALLOC
  440 #  define YYSTACK_FREE YYFREE
  441 #  ifndef YYSTACK_ALLOC_MAXIMUM
  442 #   define YYSTACK_ALLOC_MAXIMUM ((YYSIZE_T) -1)
  443 #  endif
  444 #  ifdef __cplusplus
  445 extern "C" {
  446 #  endif
  447 #  ifndef YYMALLOC
  448 #   define YYMALLOC malloc
  449 #   if (! defined (malloc) && ! defined (YYINCLUDED_STDLIB_H) \
  450 	&& (defined (__STDC__) || defined (__cplusplus)))
  451 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
  452 #   endif
  453 #  endif
  454 #  ifndef YYFREE
  455 #   define YYFREE free
  456 #   if (! defined (free) && ! defined (YYINCLUDED_STDLIB_H) \
  457 	&& (defined (__STDC__) || defined (__cplusplus)))
  458 void free (void *); /* INFRINGES ON USER NAME SPACE */
  459 #   endif
  460 #  endif
  461 #  ifdef __cplusplus
  462 }
  463 #  endif
  464 # endif
  465 #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
  466 
  467 
  468 #if (! defined (yyoverflow) \
  469      && (! defined (__cplusplus) \
  470 	 || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
  471 
  472 /* A type that is properly aligned for any stack member.  */
  473 union yyalloc
  474 {
  475   short int yyss;
  476   YYSTYPE yyvs;
  477   };
  478 
  479 /* The size of the maximum gap between one aligned stack and the next.  */
  480 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
  481 
  482 /* The size of an array large to enough to hold all stacks, each with
  483    N elements.  */
  484 # define YYSTACK_BYTES(N) \
  485      ((N) * (sizeof (short int) + sizeof (YYSTYPE))			\
  486       + YYSTACK_GAP_MAXIMUM)
  487 
  488 /* Copy COUNT objects from FROM to TO.  The source and destination do
  489    not overlap.  */
  490 # ifndef YYCOPY
  491 #  if defined (__GNUC__) && 1 < __GNUC__
  492 #   define YYCOPY(To, From, Count) \
  493       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
  494 #  else
  495 #   define YYCOPY(To, From, Count)		\
  496       do					\
  497 	{					\
  498 	  YYSIZE_T yyi;				\
  499 	  for (yyi = 0; yyi < (Count); yyi++)	\
  500 	    (To)[yyi] = (From)[yyi];		\
  501 	}					\
  502       while (0)
  503 #  endif
  504 # endif
  505 
  506 /* Relocate STACK from its old location to the new one.  The
  507    local variables YYSIZE and YYSTACKSIZE give the old and new number of
  508    elements in the stack, and YYPTR gives the new location of the
  509    stack.  Advance YYPTR to a properly aligned location for the next
  510    stack.  */
  511 # define YYSTACK_RELOCATE(Stack)					\
  512     do									\
  513       {									\
  514 	YYSIZE_T yynewbytes;						\
  515 	YYCOPY (&yyptr->Stack, Stack, yysize);				\
  516 	Stack = &yyptr->Stack;						\
  517 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
  518 	yyptr += yynewbytes / sizeof (*yyptr);				\
  519       }									\
  520     while (0)
  521 
  522 #endif
  523 
  524 #if defined (__STDC__) || defined (__cplusplus)
  525    typedef signed char yysigned_char;
  526 #else
  527    typedef short int yysigned_char;
  528 #endif
  529 
  530 /* YYFINAL -- State number of the termination state. */
  531 #define YYFINAL  88
  532 /* YYLAST -- Last index in YYTABLE.  */
  533 #define YYLAST   1795
  534 
  535 /* YYNTOKENS -- Number of terminals. */
  536 #define YYNTOKENS  108
  537 /* YYNNTS -- Number of nonterminals. */
  538 #define YYNNTS  77
  539 /* YYNRULES -- Number of rules. */
  540 #define YYNRULES  282
  541 /* YYNRULES -- Number of states. */
  542 #define YYNSTATES  424
  543 
  544 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
  545 #define YYUNDEFTOK  2
  546 #define YYMAXUTOK   345
  547 
  548 #define YYTRANSLATE(YYX)						\
  549   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
  550 
  551 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
  552 static const unsigned char yytranslate[] =
  553 {
  554        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  555       91,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  556        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  557        2,     2,     2,    92,     2,     2,     2,     2,     2,     2,
  558       94,    95,     2,     2,    96,   100,    99,     2,     2,     2,
  559        2,     2,     2,     2,     2,     2,     2,     2,   103,    93,
  560        2,    97,     2,     2,     2,     2,     2,     2,     2,     2,
  561        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  562        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  563        2,   104,    98,   105,     2,     2,     2,     2,     2,     2,
  564        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  565        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  566        2,     2,     2,   106,   102,   107,   101,     2,     2,     2,
  567        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  568        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  569        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  570        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  571        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  572        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  573        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  574        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  575        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  576        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  577        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  578        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
  579        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
  580        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
  581       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
  582       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
  583       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
  584       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
  585       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
  586       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
  587       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
  588       85,    86,    87,    88,    89,    90
  589 };
  590 
  591 #if YYDEBUG
  592 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
  593    YYRHS.  */
  594 static const unsigned short int yyprhs[] =
  595 {
  596        0,     0,     3,     6,     9,    13,    16,    19,    20,    21,
  597       23,    25,    28,    30,    34,    36,    39,    42,    45,    47,
  598       50,    52,    55,    57,    60,    63,    65,    67,    69,    71,
  599       73,    76,    78,    81,    83,    86,    88,    91,    93,    96,
  600       98,   101,   103,   106,   108,   111,   113,   116,   118,   120,
  601      123,   126,   129,   131,   134,   137,   140,   142,   145,   147,
  602      150,   153,   156,   160,   164,   166,   169,   171,   174,   176,
  603      179,   181,   184,   187,   189,   192,   194,   197,   200,   202,
  604      204,   206,   209,   212,   215,   217,   218,   223,   225,   228,
  605      230,   232,   235,   237,   239,   242,   244,   246,   249,   251,
  606      253,   256,   258,   260,   263,   265,   267,   270,   272,   274,
  607      277,   279,   281,   285,   287,   291,   293,   295,   297,   298,
  608      301,   302,   305,   307,   309,   311,   315,   316,   320,   321,
  609      324,   326,   330,   334,   336,   340,   342,   344,   347,   351,
  610      354,   356,   360,   362,   369,   374,   376,   380,   382,   386,
  611      388,   390,   392,   395,   399,   402,   404,   408,   410,   412,
  612      419,   424,   426,   430,   432,   434,   438,   440,   442,   444,
  613      446,   450,   454,   457,   459,   461,   465,   468,   470,   472,
  614      475,   478,   481,   484,   486,   488,   492,   494,   496,   500,
  615      502,   504,   506,   509,   511,   513,   515,   517,   519,   521,
  616      523,   527,   529,   532,   537,   542,   547,   552,   557,   562,
  617      567,   572,   577,   582,   587,   592,   597,   602,   607,   610,
  618      614,   619,   624,   630,   631,   638,   644,   651,   658,   666,
  619      667,   676,   677,   684,   690,   697,   704,   712,   715,   719,
  620      724,   729,   735,   736,   743,   744,   751,   754,   758,   763,
  621      768,   774,   775,   782,   783,   790,   792,   793,   795,   797,
  622      801,   805,   807,   811,   815,   817,   821,   825,   827,   829,
  623      831,   834,   837,   839,   841,   843,   845,   847,   849,   851,
  624      853,   855,   857
  625 };
  626 
  627 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
  628 static const short int yyrhs[] =
  629 {
  630      109,     0,    -1,     3,   151,    -1,     4,   151,    -1,     4,
  631      151,    91,    -1,     5,   110,    -1,     6,   110,    -1,    -1,
  632       -1,    92,    -1,   111,    -1,   111,    93,    -1,   112,    -1,
  633      111,    93,   112,    -1,   151,    -1,    40,   136,    -1,    38,
  634      140,    -1,    39,   142,    -1,    42,    -1,    73,   135,    -1,
  635       43,    -1,    43,   135,    -1,    45,    -1,    45,   135,    -1,
  636       46,   134,    -1,    80,    -1,    74,    -1,    75,    -1,    76,
  637       -1,    77,    -1,    77,   135,    -1,    78,    -1,    78,   135,
  638       -1,    79,    -1,    79,   135,    -1,    47,    -1,    47,   135,
  639       -1,    48,    -1,    48,   135,    -1,    49,    -1,    49,   135,
  640       -1,    50,    -1,    50,   135,    -1,    51,    -1,    51,   135,
  641       -1,    52,    -1,    52,   135,    -1,    64,    -1,    63,    -1,
  642       63,   135,    -1,    65,   134,    -1,    60,   134,    -1,    58,
  643       -1,    58,   135,    -1,    58,   114,    -1,    59,   116,    -1,
  644       57,    -1,    57,   118,    -1,    56,    -1,    56,    58,    -1,
  645       56,    57,    -1,    56,   120,    -1,    56,    58,   122,    -1,
  646       56,    57,   124,    -1,    61,    -1,    61,   135,    -1,    62,
  647       -1,    62,   135,    -1,    66,    -1,    66,   135,    -1,    44,
  648       -1,    44,   135,    -1,    67,   135,    -1,    55,    -1,    55,
  649      135,    -1,    54,    -1,    54,   135,    -1,    41,   134,    -1,
  650       71,    -1,    72,    -1,    68,    -1,    68,   135,    -1,    69,
  651      126,    -1,    70,   128,    -1,    53,    -1,    -1,    53,   135,
  652      113,   133,    -1,   115,    -1,   114,   115,    -1,   130,    -1,
  653      117,    -1,   116,   117,    -1,   130,    -1,   119,    -1,   118,
  654      119,    -1,   130,    -1,   121,    -1,   120,   121,    -1,   130,
  655       -1,   123,    -1,   122,   123,    -1,   130,    -1,   125,    -1,
  656      124,   125,    -1,   130,    -1,   127,    -1,   126,   127,    -1,
  657      131,    -1,   129,    -1,   128,   129,    -1,   131,    -1,   132,
  658       -1,    94,   184,    95,    -1,   132,    -1,    94,   184,    95,
  659       -1,    88,    -1,    83,    -1,    82,    -1,    -1,   133,   135,
  660       -1,    -1,   134,   135,    -1,    87,    -1,    89,    -1,   137,
  661       -1,   136,    96,   137,    -1,    -1,    83,   138,   139,    -1,
  662       -1,    97,   144,    -1,   141,    -1,   140,    96,   141,    -1,
  663      144,    97,   144,    -1,   143,    -1,   142,    96,   143,    -1,
  664      132,    -1,   146,    -1,    98,   145,    -1,   172,    99,   144,
  665       -1,   172,   145,    -1,   147,    -1,   146,   154,   147,    -1,
  666      148,    -1,    13,   156,    20,   147,    10,   147,    -1,    13,
  667      156,    20,   147,    -1,   149,    -1,   149,   157,   148,    -1,
  668      160,    -1,   160,   150,   160,    -1,    27,    -1,    30,    -1,
  669      153,    -1,    98,   152,    -1,   172,    99,   151,    -1,   172,
  670      152,    -1,   155,    -1,   153,   154,   155,    -1,    28,    -1,
  671      156,    -1,    13,   156,    20,   155,    10,   155,    -1,    13,
  672      156,    20,   155,    -1,   158,    -1,   158,   157,   156,    -1,
  673