1 /* A Bison parser, made by GNU Bison 3.0.4.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6 
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29 
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32 
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42 
43 /* Identify Bison output.  */
44 #define YYBISON 1
45 
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0.4"
48 
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers.  */
53 #define YYPURE 0
54 
55 /* Push parsers.  */
56 #define YYPUSH 0
57 
58 /* Pull parsers.  */
59 #define YYPULL 1
60 
61 
62 /* Substitute the variable and function names.  */
63 #define yyparse         __reginaparse
64 #define yylex           __reginalex
65 #define yyerror         __reginaerror
66 #define yydebug         __reginadebug
67 #define yynerrs         __reginanerrs
68 
69 #define yylval          __reginalval
70 #define yychar          __reginachar
71 
72 /* Copy the first part of user declarations.  */
73 #line 1 "../yaccsrc.y" /* yacc.c:339  */
74 
75 
76 #ifndef lint
77 static char *RCSid = "$Id: yaccsrc.c,v 1.47 2019/04/06 10:11:45 mark Exp $";
78 #endif
79 
80 /*
81  *  The Regina Rexx Interpreter
82  *  Copyright (C) 1992-1994  Anders Christensen <anders@pvv.unit.no>
83  *
84  *  This library is free software; you can redistribute it and/or
85  *  modify it under the terms of the GNU Library General Public
86  *  License as published by the Free Software Foundation; either
87  *  version 2 of the License, or (at your option) any later version.
88  *
89  *  This library is distributed in the hope that it will be useful,
90  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
91  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
92  *  Library General Public License for more details.
93  *
94  *  You should have received a copy of the GNU Library General Public
95  *  License along with this library; if not, write to the Free
96  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
97  */
98 
99 #pragma clang diagnostic ignored "-Wint-to-pointer-cast"
100 
101 #include "rexx.h"
102 #include <time.h>
103 
104 #if defined(HAVE_MALLOC_H)
105 # include <malloc.h>
106 #endif
107 
108 #if defined(HAVE_ALLOCA_H)
109 # include <alloca.h>
110 #endif
111 
112 #include <stdarg.h>
113 #include <stdio.h>
114 #include <string.h>
115 #include <assert.h>
116 
117 #if defined(_MSC_VER) || defined(MAC)
118 # define __STDC__ 1 /* Hack to allow const since it is not defined */
119 #endif
120 
121 #define YYSTYPE nodeptr
122 
123 /* locals, they are protected by regina_parser (see lexsrc.l) */
124 static int tmplno,           /* lineno of current instruction             */
125            tmpchr,           /* character position of current instruction */
126            level,            /* nested do/if/select depth                 */
127            start_parendepth; /* see below at parendepth                   */
128 
129 /*
130  * parendepth regulates the action which happens detecting a comma or an
131  * empty expression. A negative values indicates an error; both a comma
132  * and an empty expression raise an error.
133  * We regulate the enumeration of arguments with this semantical flag.
134  * Look at "call subroutine args" and "function args". Function itself
135  * contains a parentheses pair, so starting with a depth of just allows
136  * the enumeration. subroutine starts with either 0 or 1. The latter one
137  * is allowed for the support request of "call subroutine(a,b,c)" which
138  * isn't allowed by ANSI but can be enabled for backward compatibility.
139  */
140 static int parendepth;
141 
142 static nodeptr current, with = NULL;
143 
144 static char *nullptr = NULL; /* for C++ compilation */
145 
146 typedef enum { IS_UNKNOWN,
147                IS_A_NUMBER,
148                IS_NO_NUMBER,
149                IS_SIM_SYMBOL,
150                IS_COMP_SYMBOL } node_type;
151 
152 typedef enum { REDUCE_CALL,
153                REDUCE_EXPR,
154                REDUCE_RIGHT,
155                REDUCE_SUBEXPR } reduce_mode;
156 
157 static node_type gettypeof( nodeptr thisptr ) ;
158 static void checkconst( nodeptr thisptr ) ;
159 static nodeptr reduce_expr_list( nodeptr thisptr, reduce_mode mode );
160 static void transform( nodeptr thisptr ) ;
161 static nodeptr create_head( const char *name ) ;
162 static nodeptr makenode( int type, int numb, ... ) ;
163 static void checkdosyntax( cnodeptr thisptr ) ;
164 void newlabel( const tsd_t *TSD, internal_parser_type *ipt, nodeptr thisptr ) ;
165 static nodeptr optgluelast( nodeptr p1, nodeptr p2 );
166 static void move_labels( nodeptr front, nodeptr end, int level );
167 
168 #define IS_EXPRLIST(x) ( ( (x) != NULL )                   \
169                       && ( ( (x)->type == X_CEXPRLIST )    \
170                         || ( (x)->type == X_EXPRLIST ) ) )
171 
172 #define IS_FUNCTION(x) ( ( (x) != NULL )                  \
173                       && ( ( (x)->type == X_EX_FUNC )     \
174                         || ( (x)->type == X_IN_FUNC ) ) )
175 
176 #define AUTO_REDUCE(x,y) { if ( parendepth == 1 )                             \
177                            {                                                  \
178                              x = reduce_expr_list( x, REDUCE_EXPR );          \
179                              /* detect "call s (a,b)<op>" and      */         \
180                              /* "call s ()<op>"                    */         \
181                              if ( IS_EXPRLIST( x ) )                          \
182                              {                                                \
183                                 if ( (y) != NULL )                            \
184                                    exiterror( ERR_INVALID_EXPRESSION, 1, y ); \
185                                 else if ( (x)->p[0] == NULL )                 \
186                                    exiterror( ERR_UNEXPECTED_PARAN, 0 );      \
187                                 else                                          \
188                                    exiterror( ERR_UNEXPECTED_PARAN, 1 );      \
189                              }                                                \
190                            }                                                  \
191                          }
192 #line 150 "../yaccsrc.y" /* yacc.c:339  */
193 
194 #ifdef NDEBUG
195 # define YYDEBUG 0
196 #else
197 # define YYDEBUG 1
198 #endif
199 
200 #line 199 "../yaccsrc.c" /* yacc.c:339  */
201 
202 # ifndef YY_NULLPTR
203 #  if defined __cplusplus && 201103L <= __cplusplus
204 #   define YY_NULLPTR nullptr
205 #  else
206 #   define YY_NULLPTR 0
207 #  endif
208 # endif
209 
210 /* Enabling verbose error messages.  */
211 #ifdef YYERROR_VERBOSE
212 # undef YYERROR_VERBOSE
213 # define YYERROR_VERBOSE 1
214 #else
215 # define YYERROR_VERBOSE 0
216 #endif
217 
218 /* In a future release of Bison, this section will be replaced
219    by #include "yaccsrc.h".  */
220 #ifndef YY__REGINA_YACCSRC_H_INCLUDED
221 # define YY__REGINA_YACCSRC_H_INCLUDED
222 /* Debug traces.  */
223 #ifndef YYDEBUG
224 # define YYDEBUG 0
225 #endif
226 #if YYDEBUG
227 extern int __reginadebug;
228 #endif
229 
230 /* Token type.  */
231 #ifndef YYTOKENTYPE
232 # define YYTOKENTYPE
233   enum yytokentype
234   {
235     ADDRESS = 258,
236     ARG = 259,
237     CALL = 260,
238     DO = 261,
239     TO = 262,
240     BY = 263,
241     FOR = 264,
242     WHILE = 265,
243     UNTIL = 266,
244     EXIT = 267,
245     IF = 268,
246     THEN = 269,
247     ELSE = 270,
248     ITERATE = 271,
249     INTERPRET = 272,
250     LEAVE = 273,
251     NOP = 274,
252     NUMERIC = 275,
253     PARSE = 276,
254     EXTERNAL = 277,
255     SOURCE = 278,
256     VAR = 279,
257     VALUE = 280,
258     WITH = 281,
259     PROCEDURE = 282,
260     EXPOSE = 283,
261     PULL = 284,
262     PUSH = 285,
263     QUEUE = 286,
264     SAY = 287,
265     RETURN = 288,
266     SELECT = 289,
267     WHEN = 290,
268     DROP = 291,
269     OTHERWISE = 292,
270     SIGNAL = 293,
271     ON = 294,
272     OFF = 295,
273     SYNTAX = 296,
274     HALT = 297,
275     NOVALUE = 298,
276     TRACE = 299,
277     END = 300,
278     UPPER = 301,
279     ASSIGNMENTVARIABLE = 302,
280     STATSEP = 303,
281     FOREVER = 304,
282     DIGITS = 305,
283     FORM = 306,
284     FUZZ = 307,
285     SCIENTIFIC = 308,
286     ENGINEERING = 309,
287     NOT = 310,
288     CONCATENATE = 311,
289     MODULUS = 312,
290     GTE = 313,
291     GT = 314,
292     LTE = 315,
293     LT = 316,
294     DIFFERENT = 317,
295     EQUALEQUAL = 318,
296     NOTEQUALEQUAL = 319,
297     OFFSET = 320,
298     SPACE = 321,
299     EXP = 322,
300     XOR = 323,
301     PLACEHOLDER = 324,
302     NOTREADY = 325,
303     CONSYMBOL = 326,
304     SIMSYMBOL = 327,
305     EXFUNCNAME = 328,
306     INFUNCNAME = 329,
307     LABEL = 330,
308     DOVARIABLE = 331,
309     HEXSTRING = 332,
310     STRING = 333,
311     VERSION = 334,
312     LINEIN = 335,
313     WHATEVER = 336,
314     NAME = 337,
315     FAILURE = 338,
316     BINSTRING = 339,
317     OPTIONS = 340,
318     ENVIRONMENT = 341,
319     LOSTDIGITS = 342,
320     GTGT = 343,
321     LTLT = 344,
322     NOTGTGT = 345,
323     NOTLTLT = 346,
324     GTGTE = 347,
325     LTLTE = 348,
326     INPUT = 349,
327     OUTPUT = 350,
328     ERROR = 351,
329     NORMAL = 352,
330     APPEND = 353,
331     REPLACE = 354,
332     STREAM = 355,
333     STEM = 356,
334     LIFO = 357,
335     FIFO = 358,
336     NOEOL = 359,
337     LOWER = 360,
338     CASELESS = 361,
339     PLUSASSIGNMENTVARIABLE = 362,
340     MINUSASSIGNMENTVARIABLE = 363,
341     MULTASSIGNMENTVARIABLE = 364,
342     DIVASSIGNMENTVARIABLE = 365,
343     MODULUSASSIGNMENTVARIABLE = 366,
344     INTDIVASSIGNMENTVARIABLE = 367,
345     ORASSIGNMENTVARIABLE = 368,
346     XORASSIGNMENTVARIABLE = 369,
347     ANDASSIGNMENTVARIABLE = 370,
348     CONCATASSIGNMENTVARIABLE = 371,
349     CCAT = 372,
350     UMINUS = 373,
351     UPLUS = 374
352   };
353 #endif
354 
355 /* Value type.  */
356 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
357 typedef int YYSTYPE;
358 # define YYSTYPE_IS_TRIVIAL 1
359 # define YYSTYPE_IS_DECLARED 1
360 #endif
361 
362 
363 extern YYSTYPE __reginalval;
364 
365 int __reginaparse (void);
366 
367 #endif /* !YY__REGINA_YACCSRC_H_INCLUDED  */
368 
369 /* Copy the second part of user declarations.  */
370 
371 #line 370 "../yaccsrc.c" /* yacc.c:358  */
372 
373 #ifdef short
374 # undef short
375 #endif
376 
377 #ifdef YYTYPE_UINT8
378 typedef YYTYPE_UINT8 yytype_uint8;
379 #else
380 typedef unsigned char yytype_uint8;
381 #endif
382 
383 #ifdef YYTYPE_INT8
384 typedef YYTYPE_INT8 yytype_int8;
385 #else
386 typedef signed char yytype_int8;
387 #endif
388 
389 #ifdef YYTYPE_UINT16
390 typedef YYTYPE_UINT16 yytype_uint16;
391 #else
392 typedef unsigned short int yytype_uint16;
393 #endif
394 
395 #ifdef YYTYPE_INT16
396 typedef YYTYPE_INT16 yytype_int16;
397 #else
398 typedef short int yytype_int16;
399 #endif
400 
401 #ifndef YYSIZE_T
402 # ifdef __SIZE_TYPE__
403 #  define YYSIZE_T __SIZE_TYPE__
404 # elif defined size_t
405 #  define YYSIZE_T size_t
406 # elif ! defined YYSIZE_T
407 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
408 #  define YYSIZE_T size_t
409 # else
410 #  define YYSIZE_T unsigned int
411 # endif
412 #endif
413 
414 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
415 
416 #ifndef YY_
417 # if defined YYENABLE_NLS && YYENABLE_NLS
418 #  if ENABLE_NLS
419 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
420 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
421 #  endif
422 # endif
423 # ifndef YY_
424 #  define YY_(Msgid) Msgid
425 # endif
426 #endif
427 
428 #ifndef YY_ATTRIBUTE
429 # if (defined __GNUC__                                               \
430       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
431      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
432 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
433 # else
434 #  define YY_ATTRIBUTE(Spec) /* empty */
435 # endif
436 #endif
437 
438 #ifndef YY_ATTRIBUTE_PURE
439 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
440 #endif
441 
442 #ifndef YY_ATTRIBUTE_UNUSED
443 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
444 #endif
445 
446 #if !defined _Noreturn \
447      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
448 # if defined _MSC_VER && 1200 <= _MSC_VER
449 #  define _Noreturn __declspec (noreturn)
450 # else
451 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
452 # endif
453 #endif
454 
455 /* Suppress unused-variable warnings by "using" E.  */
456 #if ! defined lint || defined __GNUC__
457 # define YYUSE(E) ((void) (E))
458 #else
459 # define YYUSE(E) /* empty */
460 #endif
461 
462 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
463 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
464 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
465     _Pragma ("GCC diagnostic push") \
466     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
467     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
468 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
469     _Pragma ("GCC diagnostic pop")
470 #else
471 # define YY_INITIAL_VALUE(Value) Value
472 #endif
473 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
474 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
475 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
476 #endif
477 #ifndef YY_INITIAL_VALUE
478 # define YY_INITIAL_VALUE(Value) /* Nothing. */
479 #endif
480 
481 
482 #if ! defined yyoverflow || YYERROR_VERBOSE
483 
484 /* The parser invokes alloca or malloc; define the necessary symbols.  */
485 
486 # ifdef YYSTACK_USE_ALLOCA
487 #  if YYSTACK_USE_ALLOCA
488 #   ifdef __GNUC__
489 #    define YYSTACK_ALLOC __builtin_alloca
490 #   elif defined __BUILTIN_VA_ARG_INCR
491 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
492 #   elif defined _AIX
493 #    define YYSTACK_ALLOC __alloca
494 #   elif defined _MSC_VER
495 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
496 #    define alloca _alloca
497 #   else
498 #    define YYSTACK_ALLOC alloca
499 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
500 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
501       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
502 #     ifndef EXIT_SUCCESS
503 #      define EXIT_SUCCESS 0
504 #     endif
505 #    endif
506 #   endif
507 #  endif
508 # endif
509 
510 # ifdef YYSTACK_ALLOC
511    /* Pacify GCC's 'empty if-body' warning.  */
512 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
513 #  ifndef YYSTACK_ALLOC_MAXIMUM
514     /* The OS might guarantee only one guard page at the bottom of the stack,
515        and a page size can be as small as 4096 bytes.  So we cannot safely
516        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
517        to allow for a few compiler-allocated temporary stack slots.  */
518 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
519 #  endif
520 # else
521 #  define YYSTACK_ALLOC YYMALLOC
522 #  define YYSTACK_FREE YYFREE
523 #  ifndef YYSTACK_ALLOC_MAXIMUM
524 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
525 #  endif
526 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
527        && ! ((defined YYMALLOC || defined malloc) \
528              && (defined YYFREE || defined free)))
529 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
530 #   ifndef EXIT_SUCCESS
531 #    define EXIT_SUCCESS 0
532 #   endif
533 #  endif
534 #  ifndef YYMALLOC
535 #   define YYMALLOC malloc
536 #   if ! defined malloc && ! defined EXIT_SUCCESS
537 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
538 #   endif
539 #  endif
540 #  ifndef YYFREE
541 #   define YYFREE free
542 #   if ! defined free && ! defined EXIT_SUCCESS
543 void free (void *); /* INFRINGES ON USER NAME SPACE */
544 #   endif
545 #  endif
546 # endif
547 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
548 
549 
550 #if (! defined yyoverflow \
551      && (! defined __cplusplus \
552          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
553 
554 /* A type that is properly aligned for any stack member.  */
555 union yyalloc
556 {
557   yytype_int16 yyss_alloc;
558   YYSTYPE yyvs_alloc;
559 };
560 
561 /* The size of the maximum gap between one aligned stack and the next.  */
562 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
563 
564 /* The size of an array large to enough to hold all stacks, each with
565    N elements.  */
566 # define YYSTACK_BYTES(N) \
567      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
568       + YYSTACK_GAP_MAXIMUM)
569 
570 # define YYCOPY_NEEDED 1
571 
572 /* Relocate STACK from its old location to the new one.  The
573    local variables YYSIZE and YYSTACKSIZE give the old and new number of
574    elements in the stack, and YYPTR gives the new location of the
575    stack.  Advance YYPTR to a properly aligned location for the next
576    stack.  */
577 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
578     do                                                                  \
579       {                                                                 \
580         YYSIZE_T yynewbytes;                                            \
581         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
582         Stack = &yyptr->Stack_alloc;                                    \
583         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
584         yyptr += yynewbytes / sizeof (*yyptr);                          \
585       }                                                                 \
586     while (0)
587 
588 #endif
589 
590 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
591 /* Copy COUNT objects from SRC to DST.  The source and destination do
592    not overlap.  */
593 # ifndef YYCOPY
594 #  if defined __GNUC__ && 1 < __GNUC__
595 #   define YYCOPY(Dst, Src, Count) \
596       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
597 #  else
598 #   define YYCOPY(Dst, Src, Count)              \
599       do                                        \
600         {                                       \
601           YYSIZE_T yyi;                         \
602           for (yyi = 0; yyi < (Count); yyi++)   \
603             (Dst)[yyi] = (Src)[yyi];            \
604         }                                       \
605       while (0)
606 #  endif
607 # endif
608 #endif /* !YYCOPY_NEEDED */
609 
610 /* YYFINAL -- State number of the termination state.  */
611 #define YYFINAL  3
612 /* YYLAST -- Last index in YYTABLE.  */
613 #define YYLAST   2307
614 
615 /* YYNTOKENS -- Number of terminals.  */
616 #define YYNTOKENS  131
617 /* YYNNTS -- Number of nonterminals.  */
618 #define YYNNTS  196
619 /* YYNRULES -- Number of rules.  */
620 #define YYNRULES  479
621 /* YYNSTATES -- Number of states.  */
622 #define YYNSTATES  654
623 
624 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
625    by yylex, with out-of-bounds checking.  */
626 #define YYUNDEFTOK  2
627 #define YYMAXUTOK   374
628 
629 #define YYTRANSLATE(YYX)                                                \
630   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
631 
632 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
633    as returned by yylex, without out-of-bounds checking.  */
634 static const yytype_uint8 yytranslate[] =
635 {
636        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
637        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
638        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
639        2,     2,     2,     2,     2,     2,     2,   125,   118,     2,
640      128,   129,   123,   121,   130,   122,     2,   124,     2,     2,
641        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
642        2,   119,     2,     2,     2,     2,     2,     2,     2,     2,
643        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
646        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
647        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
648        2,     2,     2,     2,   117,     2,     2,     2,     2,     2,
649        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
651        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
652        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
653        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
654        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
655        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
656        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
657        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
658        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
661        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
662        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
663       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
664       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
665       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
666       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
667       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
668       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
669       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
670       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
671       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
672      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
673      115,   116,   120,   126,   127
674 };
675 
676 #if YYDEBUG
677   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
678 static const yytype_uint16 yyrline[] =
679 {
680        0,   160,   160,   160,   170,   173,   179,   181,   184,   186,
681      189,   190,   193,   198,   199,   202,   203,   206,   207,   210,
682      211,   214,   215,   218,   222,   225,   226,   227,   228,   231,
683      232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
684      242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
685      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
686      262,   263,   264,   265,   268,   272,   277,   281,   286,   290,
687      294,   298,   302,   306,   310,   314,   318,   322,   326,   330,
688      334,   338,   342,   346,   350,   354,   359,   363,   367,   371,
689      375,   379,   379,   383,   386,   387,   388,   388,   390,   394,
690      400,   406,   406,   411,   411,   417,   418,   419,   420,   421,
691      427,   432,   433,   439,   440,   443,   451,   454,   460,   466,
692      468,   469,   472,   493,   497,   501,   505,   508,   509,   510,
693      512,   515,   516,   517,   520,   520,   526,   529,   530,   531,
694      534,   535,   536,   537,   540,   544,   548,   552,   553,   554,
695      555,   556,   559,   560,   561,   562,   563,   566,   567,   568,
696      569,   570,   573,   574,   577,   578,   581,   582,   585,   586,
697      588,   589,   594,   595,   597,   598,   599,   600,   605,   613,
698      614,   627,   628,   632,   633,   637,   640,   640,   644,   644,
699      648,   649,   652,   653,   656,   664,   672,   675,   676,   677,
700      680,   681,   682,   685,   686,   690,   691,   695,   699,   707,
701      717,   719,   721,   722,   725,   728,   731,   736,   738,   739,
702      742,   750,   754,   756,   757,   760,   761,   764,   767,   768,
703      769,   772,   774,   776,   777,   778,   781,   784,   785,   788,
704      791,   797,   803,   804,   807,   809,   811,   813,   815,   817,
705      819,   823,   825,   828,   829,   830,   831,   832,   833,   834,
706      836,   837,   840,   841,   842,   843,   844,   848,   852,   856,
707      860,   864,   868,   869,   870,   873,   878,   879,   881,   882,
708      883,   887,   888,   889,   892,   898,   900,   901,   911,   912,
709      915,   919,   925,   928,   929,   931,   932,   933,   934,   935,
710      941,   945,   946,   952,   953,   954,   957,   958,   959,   962,
711      963,   966,   969,   972,   973,   974,   975,   978,   979,   980,
712      981,   984,   986,   988,   989,   993,   997,  1013,  1019,  1024,
713     1030,  1035,  1041,  1046,  1052,  1057,  1063,  1068,  1074,  1079,
714     1085,  1090,  1096,  1101,  1107,  1112,  1118,  1123,  1130,  1130,
715     1163,  1163,  1166,  1166,  1169,  1169,  1172,  1173,  1173,  1176,
716     1177,  1177,  1180,  1181,  1181,  1184,  1185,  1185,  1188,  1189,
717     1189,  1192,  1193,  1193,  1196,  1197,  1197,  1200,  1201,  1201,
718     1204,  1205,  1205,  1208,  1209,  1211,  1212,  1212,  1216,  1217,
719     1217,  1221,  1222,  1222,  1226,  1227,  1227,  1231,  1232,  1232,
720     1236,  1237,  1237,  1241,  1242,  1242,  1245,  1246,  1246,  1249,
721     1250,  1250,  1253,  1254,  1254,  1257,  1258,  1258,  1261,  1262,
722     1262,  1265,  1266,  1266,  1269,  1270,  1270,  1273,  1274,  1275,
723     1277,  1281,  1285,  1287,  1288,  1290,  1292,  1293,  1296,  1297,
724     1298,  1301,  1305,  1307,  1311,  1311,  1318,  1321,  1324,  1325,
725     1326,  1329,  1331,  1333,  1335,  1337,  1339,  1341,  1343,  1345,
726     1349,  1350,  1359,  1360,  1364,  1370,  1371,  1372,  1382,  1382,
727     1462,  1506,  1507,  1510,  1512,  1514,  1516,  1520,  1523,  1524
728 };
729 #endif
730 
731 #if YYDEBUG || YYERROR_VERBOSE || 0
732 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
733    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
734 static const char *const yytname[] =
735 {
736   "$end", "error", "$undefined", "ADDRESS", "ARG", "CALL", "DO", "TO",
737   "BY", "FOR", "WHILE", "UNTIL", "EXIT", "IF", "THEN", "ELSE", "ITERATE",
738   "INTERPRET", "LEAVE", "NOP", "NUMERIC", "PARSE", "EXTERNAL", "SOURCE",
739   "VAR", "VALUE", "WITH", "PROCEDURE", "EXPOSE", "PULL", "PUSH", "QUEUE",
740   "SAY", "RETURN", "SELECT", "WHEN", "DROP", "OTHERWISE", "SIGNAL", "ON",
741   "OFF", "SYNTAX", "HALT", "NOVALUE", "TRACE", "END", "UPPER",
742   "ASSIGNMENTVARIABLE", "STATSEP", "FOREVER", "DIGITS", "FORM", "FUZZ",
743   "SCIENTIFIC", "ENGINEERING", "NOT", "CONCATENATE", "MODULUS", "GTE",
744   "GT", "LTE", "LT", "DIFFERENT", "EQUALEQUAL", "NOTEQUALEQUAL", "OFFSET",
745   "SPACE", "EXP", "XOR", "PLACEHOLDER", "NOTREADY", "CONSYMBOL",
746   "SIMSYMBOL", "EXFUNCNAME", "INFUNCNAME", "LABEL", "DOVARIABLE",
747   "HEXSTRING", "STRING", "VERSION", "LINEIN", "WHATEVER", "NAME",
748   "FAILURE", "BINSTRING", "OPTIONS", "ENVIRONMENT", "LOSTDIGITS", "GTGT",
749   "LTLT", "NOTGTGT", "NOTLTLT", "GTGTE", "LTLTE", "INPUT", "OUTPUT",
750   "ERROR", "NORMAL", "APPEND", "REPLACE", "STREAM", "STEM", "LIFO", "FIFO",
751   "NOEOL", "LOWER", "CASELESS", "PLUSASSIGNMENTVARIABLE",
752   "MINUSASSIGNMENTVARIABLE", "MULTASSIGNMENTVARIABLE",
753   "DIVASSIGNMENTVARIABLE", "MODULUSASSIGNMENTVARIABLE",
754   "INTDIVASSIGNMENTVARIABLE", "ORASSIGNMENTVARIABLE",
755   "XORASSIGNMENTVARIABLE", "ANDASSIGNMENTVARIABLE",
756   "CONCATASSIGNMENTVARIABLE", "'|'", "'&'", "'='", "CCAT", "'+'", "'-'",
757   "'*'", "'/'", "'%'", "UMINUS", "UPLUS", "'('", "')'", "','", "$accept",
758   "start", "$@1", "prog", "stats", "xstats", "ystatement", "lonely_end",
759   "nxstats", "ncl", "nlncl", "optLabels", "statement", "gruff",
760   "mttstatement", "mtstatement", "nclstatement", "call", "do", "exit",
761   "if", "iterate", "leave", "say", "return", "address", "arg", "drop",
762   "interpret", "label", "nop", "numeric", "options", "parse", "proc",
763   "pull", "push", "queue", "select", "signal", "when", "otherwise",
764   "trace", "upper", "address_stat", "@2", "address_stat2", "$@3",
765   "arg_stat", "call_stat", "$@4", "$@5", "call_name", "call_args",
766   "expr_stat", "end_stat", "end", "do_stat", "repetitor", "nvir",
767   "naddr_with", "@6", "addr_with", "connection", "inputstmts",
768   "outputstmts", "errorstmts", "adeo", "adei", "adio", "inputstmt",
769   "outputstmt", "errorstmt", "resourcei", "resourceo", "resources",
770   "nsimsymb", "$@7", "nnvir", "$@8", "nspace", "addrAll", "addrSim",
771   "addrString", "dovar", "tobyfor", "conditional", "drop_stat",
772   "upper_stat", "exit_stat", "if_stat", "unexp_then", "unexp_else",
773   "ipret_stat", "iterate_stat", "label_stat", "labelname", "leave_stat",
774   "nop_stat", "numeric_stat", "form_expr", "options_stat", "parse_stat",
775   "parse_flags", "templs", "parse_param", "proc_stat", "pull_stat",
776   "push_stat", "queue_stat", "say_stat", "return_stat", "sel_end",
777   "select_stat", "when_stats", "when_stat", "ex_when_stat",
778   "otherwise_stat", "signal_stat", "signal_name", "namespec", "asymbol",
779   "on", "off", "c_action", "s_action", "trace_stat", "whatever",
780   "assignment", "ass_part", "plusassignment", "plus_ass_part",
781   "minusassignment", "minus_ass_part", "multassignment", "mult_ass_part",
782   "divassignment", "div_ass_part", "intdivassignment", "intdiv_ass_part",
783   "modulusassignment", "modulus_ass_part", "andassignment", "and_ass_part",
784   "xorassignment", "xor_ass_part", "orassignment", "or_ass_part",
785   "concatassignment", "concat_ass_part", "expr", "$@9", "$@10", "$@11",
786   "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "$@18", "$@19", "$@20",
787   "$@21", "$@22", "$@23", "$@24", "$@25", "$@26", "$@27", "$@28", "$@29",
788   "$@30", "$@31", "$@32", "$@33", "$@34", "$@35", "exprs_sub", "symbtree",
789   "function", "func_args", "@36", "intfunc", "extfunc", "template",
790   "solid", "offset", "string", "pv", "exprs", "$@37", "nexpr", "anyvars",
791   "xsimsymb", "simsymb", YY_NULLPTR
792 };
793 #endif
794 
795 # ifdef YYPRINT
796 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
797    (internal) symbol number NUM (which must be that of a token).  */
798 static const yytype_uint16 yytoknum[] =
799 {
800        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
801      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
802      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
803      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
804      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
805      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
806      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
807      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
808      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
809      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
810      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
811      365,   366,   367,   368,   369,   370,   371,   124,    38,    61,
812      372,    43,    45,    42,    47,    37,   373,   374,    40,    41,
813       44
814 };
815 # endif
816 
817 #define YYPACT_NINF -532
818 
819 #define yypact_value_is_default(Yystate) \
820   (!!((Yystate) == (-532)))
821 
822 #define YYTABLE_NINF -473
823 
824 #define yytable_value_is_error(Yytable_value) \
825   0
826 
827   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
828      STATE-NUM.  */
829 static const yytype_int16 yypact[] =
830 {
831     -532,    38,  -532,  -532,  -532,    60,    91,    86,  -532,  -532,
832     -532,  1240,  -532,  -532,  -532,  -532,    -4,  -532,  -532,  -532,
833     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
834     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
835     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,   462,  -532,
836     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
837     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
838     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
839     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,   966,  1040,
840     -532,  -532,  -532,  -532,   207,  -532,    92,   267,  1868,  1985,
841     1713,    25,    84,  1985,  1985,  -532,    83,   -38,  1985,    70,
842      328,  1985,   195,    28,   109,  1985,  1985,   136,   420,  -532,
843     -532,  1566,   -38,  -532,  -532,  -532,  -532,   247,    92,  -532,
844     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
845     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
846     -532,  -532,  -532,  1985,  -532,  1985,  -532,  1985,  -532,  1985,
847     -532,  1985,  -532,  1985,  -532,  1985,  -532,  1985,  -532,  1985,
848     -532,  1985,  -532,  1985,  2068,  -532,  -532,  -532,  -532,    90,
849     -532,  -532,  -532,  -532,  -532,  -532,  1791,  -532,  -532,    -4,
850     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
851       94,   105,  -532,   376,  -532,   379,    49,  2106,  2068,  -532,
852       -4,  2068,  -532,  -532,   194,   206,  -532,  -532,   137,  -532,
853      -11,    29,   -11,  -532,  1595,  -532,   101,   213,   -38,  2068,
854     -532,  -532,  1985,   209,  1985,  -532,  -532,  -532,  -532,  -532,
855       32,   892,  -532,    77,  -532,  -532,   110,   -24,   471,    83,
856     -532,    30,  -532,  -532,  -532,  -532,  1034,  -532,  1985,  -532,
857      225,  -532,   285,   436,  1985,  -532,   228,  -532,   231,   270,
858       -4,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
859     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
860     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
861     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  1791,
862     -532,    90,  -532,  -532,    24,    46,  1985,  -532,  -532,  -532,
863     -532,  -532,    26,  -532,   321,  1985,  -532,  -532,  -532,  1985,
864     1985,    92,  1985,   474,  -532,    41,  -532,  -532,  -532,  1985,
865       48,  -532,  -532,  -532,  1985,  -532,  1985,  -532,  -532,    83,
866     -532,  -532,  -532,   -41,   -30,    -3,   120,    83,  -532,  -532,
867       98,  -532,  -532,  2068,  -532,  1985,  -532,  -532,   323,  2068,
868     -532,  -532,   214,  -532,  -532,  -532,  -532,  -532,    83,    29,
869     -532,   340,  -532,  -532,   251,  1114,   259,    40,  -532,  2068,
870     -532,  -532,  -532,  -532,  -532,  -532,    44,  -532,   391,  2068,
871     -532,  -532,  -532,  1985,  1985,  1985,  1985,  1985,  1985,  1985,
872     1985,  1985,  1985,  1985,  1985,  1985,  1985,  1985,  1985,  1985,
873     1985,  1985,  1985,  1985,  1985,  1985,  1985,  1985,  1985,  -532,
874     -532,  -532,  -532,  -532,   135,  -532,    56,   442,  -532,  -532,
875     2106,  2106,    -4,  2106,  -532,  -532,   219,  1914,  -532,   454,
876     -532,  -532,  -532,   266,   266,   266,   -29,  2026,   219,  -532,
877      120,  -532,   120,  -532,   120,  -532,   221,  -532,   -38,  2068,
878     -532,  -532,    29,  -532,  -532,  -532,  1641,  -532,   566,  -532,
879      280,  -532,   461,  -532,   440,   286,   939,   939,   939,   939,
880      939,   939,   939,   440,  -532,  2144,   939,   939,   939,   939,
881      939,   939,  2144,  2182,   939,   390,   390,   286,   286,   286,
882     1985,  -532,  -532,  -532,  -532,  -532,  -532,  -532,   318,   320,
883     -532,  1366,   496,   692,  -532,   341,  -532,  -532,  -532,   266,
884      266,   140,  -532,   266,   266,   104,  -532,   266,   266,   288,
885      181,   190,   211,   266,  -532,   241,   245,   256,  -532,  -532,
886      406,  -532,  -532,   268,  -532,  -532,  -532,  -532,  1492,  -532,
887     -532,  1985,  1985,  1985,   496,  -532,   378,  -532,   266,   345,
888      266,   353,   266,   345,   266,   359,   266,   353,   266,   359,
889     -532,   257,  -532,   428,  -532,   428,   219,  -532,  -532,  -532,
890     -532,  -532,   472,  2106,  2106,  2106,   496,  -532,  -532,  -532,
891     -532,  -532,  -532,  -532,  -532,   265,    22,   372,   374,    69,
892     -532,  -532,  -532,   196,   202,  -532,  -532,  -532,  -532,  -532,
893     -532,  -532,  -532,  -532,  -532,   818,  -532,  -532,   266,  -532,
894     -532,   266,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
895     -532,  -532,   450,  -532,  -532,   166,   101,  -532,  -532,  -532,
896     -532,  -532,  -532,  -532
897 };
898 
899   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
900      Performed when YYTABLE does not specify something else to do.  Zero
901      means the default is an error.  */
902 static const yytype_uint16 yydefact[] =
903 {
904        2,     0,    20,     1,     3,    23,    18,    23,     7,    11,
905       10,    23,    21,    22,    20,    76,    17,   221,    19,   220,
906        6,    72,    73,    64,    65,    66,    67,    68,    75,    69,
907       77,    78,    80,    81,    82,    83,    84,    70,    71,    85,
908       87,    74,    88,    86,    89,   118,    90,   327,   385,   383,
909      362,   391,   397,   394,   400,   403,   406,   409,   380,   377,
910      374,   429,   441,   447,   446,   430,   432,   431,    79,   412,
911      415,   418,   421,   424,   427,   329,   331,   333,   335,   339,
912      337,   345,   343,   341,   347,   368,   371,   388,     0,     0,
913      356,   359,   365,   348,     0,    24,     0,     0,   130,   472,
914        0,     0,     0,   472,   472,    91,     0,     0,     0,     0,
915        0,   472,     0,     0,     0,   472,   472,     0,     0,   288,
916      289,   472,     0,    29,    31,    32,    30,     0,     0,    33,
917       34,    52,    35,    26,    27,    28,    36,    37,    38,    39,
918       40,    41,    42,    43,    44,    45,    46,    48,    47,    49,
919       50,    51,    63,   472,    53,   472,    54,   472,    55,   472,
920       56,   472,    57,   472,    58,   472,    61,   472,    59,   472,
921       60,   472,    62,   472,   117,   428,   433,   444,   444,    16,
922       20,   384,   436,   434,   437,   435,   472,   214,   215,    25,
923      114,   311,   312,   309,   310,   463,   462,   464,   101,   113,
924        0,     0,   103,     0,   196,   202,     0,   191,   471,   207,
925      212,    20,   479,   478,     0,     0,   270,   271,     0,   450,
926      467,   100,   467,   252,   449,   477,     0,     0,   474,   216,
927      226,   236,   228,     0,   234,   239,   243,   253,   255,   258,
928        0,     0,   257,   244,   256,   254,   247,   250,     0,     0,
929      263,     0,   267,   268,   269,   278,     0,   305,     0,   304,
930        0,   303,     0,     0,     0,   325,     0,   322,     0,     0,
931       12,   326,   328,   330,   332,   334,   336,   338,   340,   342,
932      344,   346,   381,   360,   389,   395,   392,   398,   401,   404,
933      407,   378,   375,   372,   410,   413,   416,   419,   422,   425,
934      366,   369,   386,   350,   352,   354,   357,   363,   443,   472,
935      442,    15,   440,   349,     0,   470,   472,   105,   314,   315,
936      316,   313,     0,   106,     0,   472,   128,   190,   127,     0,
937        0,     0,     0,   378,   129,     0,   218,   223,    96,     0,
938        0,   131,   132,   133,     0,    92,   472,    94,   465,     0,
939      466,   460,   461,     0,     0,     0,     0,     0,   453,   459,
940        0,   203,   473,   227,   233,     0,   237,   238,     0,   235,
941      259,   261,     0,   245,   248,   246,   249,   242,     0,   241,
942      264,     0,   283,   279,     0,     0,     0,   291,   282,   292,
943      293,   295,   319,   318,   320,   317,     0,   296,     0,   321,
944      323,   205,   121,     0,     0,     0,     0,     0,     0,     0,
945        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
946        0,     0,     0,     0,     0,     0,     0,     0,     0,   445,
947      439,   438,   468,   102,   115,   107,     0,     0,   111,   104,
948      191,   191,    23,   191,   213,    20,   134,   134,   143,     0,
949      140,   141,   142,   191,   191,   191,   139,     0,   134,   251,
950        0,   454,     0,   452,     0,   451,     0,   448,   476,   232,
951      229,   260,   240,   265,   276,   287,    20,   277,     0,   281,
952        0,   297,     0,   301,   382,   361,   390,   396,   393,   399,
953      402,   405,   408,   379,   376,   373,   411,   414,   417,   420,
954      423,   426,   367,   370,   387,   351,   353,   355,   358,   364,
955      472,   116,   308,   306,   307,   108,   200,   201,    23,     0,
956       23,    23,   126,     0,    97,     0,    93,   138,   144,   191,
957      191,   151,   145,   191,   191,   156,   146,   191,   191,   161,
958        0,     0,     0,   191,    98,     0,     0,     0,   455,   475,
959        0,   280,    23,     0,   275,   298,   469,     8,    23,   122,
960        9,     0,     0,     0,   125,   211,   208,   135,   191,   147,
961      191,   149,   191,   152,   191,   154,   191,   157,   191,   159,
962      163,     0,   165,     0,   167,     0,   134,   458,   457,   456,
963       20,   290,     0,   191,   191,   191,   124,    20,   148,   150,
964      153,   155,   158,   160,   171,     0,     0,     0,     0,     0,
965      162,   168,   177,     0,     0,   164,   172,   166,    99,    23,
966      273,   197,   199,   198,   123,     0,   179,   178,   191,   181,
967      180,   191,   183,   182,   185,   184,   170,   169,   174,   173,
968      176,   175,   284,   210,   209,     0,     0,   285,   189,   192,
969      193,   195,   194,   187
970 };
971 
972   /* YYPGOTO[NTERM-NUM].  */
973 static const yytype_int16 yypgoto[] =
974 {
975     -532,  -532,  -532,  -532,  -532,  -532,    -7,  -532,   -86,   -85,
976     -206,    -1,  -425,   -10,  -532,  -532,  -532,  -532,  -532,  -532,
977     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
978     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
979     -242,  -237,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
980     -532,  -532,  -532,   143,  -532,  -532,   -49,  -532,  -532,  -532,
981     -440,  -532,   -51,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
982     -418,  -407,  -400,  -532,  -109,  -531,  -532,  -532,   -70,  -532,
983     -107,  -532,  -166,  -532,  -532,  -524,  -532,  -532,  -532,  -532,
984     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
985     -532,  -532,  -532,  -532,  -229,   253,  -532,  -532,  -532,  -532,
986     -532,  -532,  -532,  -532,  -532,   102,  -532,  -532,  -532,  -532,
987      103,   400,   423,   427,   343,   284,  -532,  -532,  -532,  -532,
988     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
989     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
990       -9,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
991     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,
992     -532,  -532,  -532,  -532,  -532,  -532,  -532,  -532,   246,   -98,
993     -532,   381,  -532,  -532,  -532,  -104,  -532,   203,  -220,    95,
994     -304,  -532,   -52,  -116,  -217,   -99
995 };
996 
997   /* YYDEFGOTO[NTERM-NUM].  */
998 static const yytype_int16 yydefgoto[] =
999 {
1000       -1,     1,     2,     4,     7,   518,     8,     9,   519,    16,
1001        5,     6,    10,    11,    12,    95,    96,    97,    98,    99,
1002      100,   101,   102,   103,   104,   105,   106,   107,   108,    17,
1003      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
1004      119,   120,   121,   122,   123,   218,   345,   446,   124,   125,
1005      316,   325,   198,   433,   126,   127,   128,   129,   205,   346,
1006      524,   525,   347,   449,   450,   451,   452,   528,   532,   536,
1007      453,   454,   455,   610,   615,   616,   630,   631,   627,   628,
1008      328,   648,   649,   650,   206,   564,   331,   130,   131,   132,
1009      133,   134,   135,   136,   137,    18,    19,   138,   139,   140,
1010      368,   141,   142,   248,   221,   249,   143,   144,   145,   146,
1011      147,   148,   554,   149,   387,   388,    13,   480,   150,   260,
1012      437,   199,   200,   201,   395,   396,   151,   266,   152,   153,
1013      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
1014      164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
1015      208,   186,   424,   425,   426,   427,   404,   428,   421,   422,
1016      414,   413,   412,   403,   423,   405,   407,   406,   408,   409,
1017      410,   411,   415,   416,   417,   418,   419,   420,   313,   175,
1018      176,   308,   309,   177,   178,   223,   357,   358,   202,   224,
1019      314,   510,   315,   227,   228,   214
1020 };
1021 
1022   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1023      positive, shift that token.  If negative, reduce the rule whose
1024      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1025 static const yytype_int16 yytable[] =
1026 {
1027       20,    94,   174,   215,   359,   335,   268,   526,   222,   360,
1028      252,   189,   434,   179,   385,   210,   222,   520,   544,   386,
1029      379,   434,   375,   629,   351,   430,   212,   435,   269,   250,
1030      352,   380,   256,   212,   225,   351,   533,   537,     3,   181,
1031      596,   352,   444,   270,   180,   481,   529,   209,   538,   448,
1032      611,   216,   217,   530,   534,   445,   251,   512,   220,   235,
1033       -5,    62,   351,   253,   254,   540,   541,   542,   352,   267,
1034      636,   230,   624,  -219,  -110,    40,  -262,    42,   637,   183,
1035      185,   376,   639,   641,   219,   212,    -4,   460,  -186,   207,
1036      226,   211,  -300,   557,  -186,   317,  -191,   213,   462,   229,
1037      334,   271,   225,   272,   213,   273,   323,   274,   436,   275,
1038      219,   276,   362,   277,   327,   278,   574,   279,  -225,   280,
1039      578,   281,   222,   570,   222,   464,   436,   520,   513,   568,
1040      576,  -467,  -224,   572,   514,   381,   318,   255,   338,    14,
1041       14,   370,  -191,  -191,  -191,   385,   618,   318,  -467,   472,
1042      478,   222,   220,   431,  -467,    62,   213,  -467,   226,   349,
1043     -467,  -467,   339,   340,   319,    15,    15,  -467,   332,   605,
1044      606,   607,   608,   225,  -467,   319,   432,   320,   220,   311,
1045     -467,    62,   580,   373,    14,   -95,  -467,  -467,   320,   372,
1046      321,   582,    62,  -467,   642,   336,   236,   638,   540,   237,
1047      542,   321,  -467,   640,  -467,  -467,   556,   337,   341,   342,
1048      364,  -467,   584,  -467,   361,   343,   374,   238,   239,   240,
1049      241,   187,   188,   363,   242,   369,   390,   468,  -467,   400,
1050     -467,  -467,   401,   456,   365,   541,   542,  -467,   225,   523,
1051      471,   243,  -217,   195,   196,   459,   442,   327,   212,   389,
1052      197,   222,   474,   467,  -222,   399,   327,  -231,   466,   222,
1053      477,  -204,   366,   367,   511,   344,   626,  -136,   190,   212,
1054      550,   402,   552,  -294,   244,   245,  -324,   327,  -191,  -206,
1055      222,  -191,  -191,  -191,  -191,  -191,   391,  -191,  -191,  -191,
1056     -191,  -191,  -191,  -191,   458,  -120,   605,   606,   607,   608,
1057      246,   247,   605,   606,   607,   608,   191,   192,  -191,  -191,
1058     -191,  -191,  -191,  -191,  -191,   348,  -274,   350,  -119,   213,
1059      440,   441,   438,   443,   470,   553,   392,   318,   393,   231,
1060      447,  -188,   327,   516,   517,   457,   522,  -188,   193,   194,
1061      213,   473,  -188,  -188,   195,   196,   531,   535,   539,  -188,
1062      548,   197,   549,   292,   604,   319,   469,   605,   606,   607,
1063      608,   609,   545,   -13,   546,    45,   547,   340,   320,  -112,
1064      587,  -230,   394,   632,   588,   634,   476,   326,   232,   233,
1065      234,   321,   540,   541,   619,   589,  -191,  -191,  -266,   329,
1066      330,   625,   483,   597,   484,   485,   486,   487,   488,   489,
1067      490,   491,   492,   493,   494,   495,   496,   497,   498,   499,
1068      500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
1069      590,   257,   569,   571,  -191,   651,   573,   575,   652,   652,
1070      577,   579,   521,   581,   583,   585,   586,   397,  -188,  -302,
1071     -188,   542,   327,   515,  -188,   258,  -188,   283,   541,  -188,
1072     -188,  -188,  -188,   540,   592,   527,  -188,   292,  -188,   191,
1073      192,   598,   555,   599,   647,   600,   591,   601,   439,   602,
1074      559,   603,   377,   620,   567,   237,   617,   392,   318,   393,
1075      653,  -190,  -190,  -190,  -190,  -190,   621,   622,   623,   479,
1076     -109,   193,   194,   238,   239,   240,   241,   283,   259,   482,
1077      242,   378,  -137,   561,   562,   563,   319,   292,   558,  -299,
1078      560,    94,   174,   305,   306,   307,   566,    48,   261,   320,
1079     -272,   645,  -190,   394,   646,   612,   613,   614,   605,   606,
1080      607,   608,   321,    61,    62,    63,    64,   633,   635,    65,
1081       66,   262,   521,   322,   324,   263,    67,   398,    94,   174,
1082      244,   245,   593,   594,   595,   429,   461,   463,   465,   310,
1083        0,   303,   304,   305,   306,   307,     0,   551,     0,   -20,
1084      -20,   -20,   -20,     0,     0,     0,     0,     0,   -20,   -20,
1085      -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,     0,     0,
1086       93,     0,     0,   -20,     0,   -20,   -20,   -20,   -20,   -20,
1087      -20,   -20,   -20,   -20,   -20,     0,     0,     0,     0,   558,
1088      -20,   -20,   -20,   -20,   -20,     0,     0,     0,   644,     0,
1089        0,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
1090      -20,     0,   -20,   -20,   -20,     0,     0,   -20,   -20,   -20,
1091      -20,   -20,     0,   -20,   -20,     0,     0,     0,     0,     0,
1092      -20,   -20,     0,     0,   -20,   -20,   -20,   -20,   -20,   -20,
1093        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1094        0,     0,     0,   -20,   -20,   -20,   -20,   -20,   -20,   -20,
1095      -20,   -20,   -20,   -20,   -20,   -20,     0,   -20,   -20,   -20,
1096      -20,   -20,     0,   565,   -20,   -23,   -23,   -23,   -23,     0,
1097        0,     0,     0,     0,   -23,   -23,   -23,   -23,   -23,   -23,
1098      -23,   -23,   -23,   -23,     0,     0,     0,     0,     0,   -23,
1099        0,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
1100      -23,     0,     0,     0,     0,     0,   -23,   -23,   -23,   -23,
1101        0,     0,     0,     0,     0,     0,     0,   -23,   -23,   -23,
1102      -23,   -23,   -23,   -23,   -23,   -23,   -23,     0,   -23,   -23,
1103      -23,     0,     0,   -23,   -23,   -23,   -23,     0,     0,   -23,
1104      -23,     0,     0,     0,     0,     0,   -23,   -23,     0,     0,
1105      -23,   -23,   -23,   -23,   -23,   -23,     0,     0,     0,     0,
1106        0,     0,     0,     0,     0,     0,     0,     0,     0,   -23,
1107      -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
1108      -23,   -23,     0,   -23,   -23,   -23,   -23,   -23,     0,   643,
1109      -23,   -23,   -23,   -23,   -23,     0,     0,     0,     0,     0,
1110      -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
1111        0,     0,     0,     0,     0,   -23,     0,   -23,   -23,   -23,
1112      -23,   -23,   -23,   -23,   -23,   -23,   -23,     0,     0,     0,
1113        0,     0,   -23,   -23,   -23,   -23,     0,     0,     0,     0,
1114        0,     0,     0,   -23,   -23,   -23,   -23,   -23,   -23,   -23,
1115      -23,   -23,   -23,     0,   -23,   -23,   -23,     0,     0,   -23,
1116      -23,   -23,   -23,   371,     0,   -23,   -23,     0,     0,     0,
1117        0,     0,   -23,   -23,     0,     0,   -23,   -23,   -23,   -23,
1118      -23,   -23,     0,     0,     0,     0,     0,     0,  -472,     0,
1119        0,     0,     0,     0,     0,   -23,   -23,   -23,   -23,   -23,
1120      -23,   -23,   -23,   -23,   -23,   -23,   -23,   -23,     0,   -23,
1121      -23,   -23,   -23,   -23,     0,     0,   -23,    48,    49,    50,
1122       51,    52,    53,    54,    55,    56,    57,     0,    58,    59,
1123       60,     0,     0,    61,    62,    63,    64,   182,     0,    65,
1124       66,     0,     0,     0,     0,     0,    67,     0,     0,     0,
1125       69,    70,    71,    72,    73,    74,     0,     0,     0,     0,
1126        0,     0,     0,     0,     0,   282,   283,     0,     0,     0,
1127        0,     0,     0,     0,     0,   291,   292,     0,     0,    85,
1128       86,    87,     0,    88,    89,    90,    91,    92,     0,     0,
1129       93,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1130       57,     0,    58,    59,    60,   382,     0,    61,    62,    63,
1131       64,   184,     0,    65,    66,     0,     0,     0,   383,     0,
1132       67,     0,     0,     0,    69,    70,    71,    72,    73,    74,
1133      303,   304,   305,   306,   307,     0,     0,     0,     0,    40,
1134        0,    42,     0,     0,     0,     0,     0,     0,     0,   384,
1135        0,     0,   180,    85,    86,    87,     0,    88,    89,    90,
1136       91,    92,     0,     0,    93,    48,    49,    50,    51,    52,
1137       53,    54,    55,    56,    57,     0,    58,    59,    60,     0,
1138        0,    61,    62,    63,    64,   475,     0,    65,    66,     0,
1139        0,     0,     0,     0,    67,     0,     0,     0,    69,    70,
1140       71,    72,    73,    74,     0,     0,     0,     0,     0,     0,
1141        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1142        0,     0,     0,     0,     0,     0,     0,    85,    86,    87,
1143        0,    88,    89,    90,    91,    92,     0,     0,    93,    48,
1144       49,    50,    51,    52,    53,    54,    55,    56,    57,     0,
1145       58,    59,    60,     0,     0,    61,    62,    63,    64,     0,
1146        0,    65,    66,     0,     0,     0,     0,     0,    67,     0,
1147        0,     0,    69,    70,    71,    72,    73,    74,     0,     0,
1148        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1149        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1150        0,    85,    86,    87,     0,    88,    89,    90,    91,    92,
1151        0,     0,    93,    21,    22,    23,    24,     0,     0,     0,
1152        0,     0,    25,    26,     0,     0,    27,    28,    29,    30,
1153       31,    32,     0,     0,     0,     0,     0,    33,     0,    34,
1154       35,    36,    37,    38,    39,    40,    41,    42,    43,     0,
1155        0,     0,     0,     0,    44,    45,    46,    47,     0,     0,
1156        0,     0,     0,     0,     0,    48,    49,    50,    51,    52,
1157       53,    54,    55,    56,    57,     0,    58,    59,    60,     0,
1158        0,    61,    62,    63,    64,     0,     0,    65,    66,     0,
1159        0,     0,     0,     0,    67,    68,     0,     0,    69,    70,
1160       71,    72,    73,    74,     0,     0,     0,     0,     0,     0,
1161        0,     0,     0,     0,     0,     0,     0,    75,    76,    77,
1162       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
1163        0,    88,    89,    90,    91,    92,     0,     0,    93,    21,
1164       22,    23,    24,     0,     0,     0,     0,     0,    25,    26,
1165        0,     0,    27,    28,    29,    30,    31,    32,     0,     0,
1166        0,     0,     0,    33,     0,    34,    35,    36,    37,    38,
1167       39,    40,    41,    42,    43,     0,     0,     0,     0,     0,
1168       44,   -14,    46,    47,     0,     0,     0,     0,     0,     0,
1169        0,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1170       57,     0,    58,    59,    60,     0,     0,    61,    62,    63,
1171       64,     0,     0,    65,    66,     0,     0,     0,     0,     0,
1172       67,    68,     0,     0,    69,    70,    71,    72,    73,    74,
1173        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1174        0,     0,     0,    75,    76,    77,    78,    79,    80,    81,
1175       82,    83,    84,    85,    86,    87,     0,    88,    89,    90,
1176       91,    92,     0,     0,    93,    21,    22,    23,    24,     0,
1177        0,     0,     0,     0,    25,    26,     0,     0,    27,    28,
1178       29,    30,    31,    32,     0,     0,     0,     0,     0,    33,
1179        0,    34,    35,    36,    37,    38,    39,    40,    41,    42,
1180       43,     0,     0,     0,     0,     0,    44,     0,    46,    47,
1181        0,     0,     0,     0,     0,     0,     0,    48,    49,    50,
1182       51,    52,    53,    54,    55,    56,    57,     0,    58,    59,
1183       60,     0,     0,    61,    62,    63,    64,     0,     0,    65,
1184       66,     0,     0,     0,     0,     0,    67,    68,     0,     0,
1185       69,    70,    71,    72,    73,    74,     0,     0,     0,     0,
1186        0,   264,     0,     0,     0,     0,     0,     0,     0,    75,
1187       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1188       86,    87,     0,    88,    89,    90,    91,    92,     0,     0,
1189       93,    48,    49,    50,    51,    52,    53,    54,    55,    56,
1190       57,     0,    58,    59,    60,     0,     0,    61,    62,    63,
1191       64,     0,     0,    65,    66,     0,     0,   265,     0,     0,
1192       67,     0,     0,     0,    69,    70,    71,    72,    73,    74,
1193      351,     0,     0,     0,     0,     0,   352,     0,     0,     0,
1194        0,     0,   195,   196,     0,     0,  -286,     0,  -286,   197,
1195        0,     0,     0,    85,    86,    87,  -286,    88,    89,    90,
1196       91,    92,     0,     0,    93,     0,     0,   282,   283,   284,
1197      285,   286,   287,   288,   289,   290,     0,   291,   292,   293,
1198        0,     0,     0,     0,   353,     0,   354,   355,     0,     0,
1199        0,     0,     0,   356,     0,     0,     0,     0,     0,   294,
1200      295,   296,   297,   298,   299,     0,     0,     0,     0,     0,
1201        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1202        0,     0,     0,     0,     0,     0,     0,     0,   300,   301,
1203      302,    14,   303,   304,   305,   306,   307,     0,    48,    49,
1204       50,    51,    52,    53,    54,    55,    56,    57,     0,    58,
1205       59,    60,     0,     0,    61,    62,    63,    64,     0,     0,
1206       65,    66,     0,     0,     0,     0,     0,    67,     0,     0,
1207        0,    69,    70,    71,    72,    73,    74,     0,     0,     0,
1208        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1209        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1210       85,    86,    87,     0,    88,    89,    90,    91,    92,   312,
1211        0,    93,     0,     0,     0,     0,    48,    49,    50,    51,
1212       52,    53,    54,    55,    56,    57,     0,    58,    59,    60,
1213        0,     0,    61,    62,    63,    64,     0,     0,    65,    66,
1214        0,     0,     0,     0,     0,    67,     0,     0,     0,    69,
1215       70,    71,    72,    73,    74,     0,     0,     0,     0,     0,
1216        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1217        0,     0,     0,     0,     0,     0,     0,     0,    85,    86,
1218       87,     0,    88,    89,    90,    91,    92,   203,     0,    93,
1219        0,     0,     0,    48,    49,    50,    51,    52,    53,    54,
1220       55,    56,    57,     0,    58,    59,    60,     0,     0,    61,
1221       62,    63,    64,     0,   204,    65,    66,     0,     0,     0,
1222        0,     0,    67,     0,     0,     0,    69,    70,    71,    72,
1223       73,    74,  -136,     0,     0,     0,     0,     0,     0,     0,
1224      282,   283,   284,   285,   286,   287,   288,   289,   290,     0,
1225      291,   292,   293,     0,     0,    85,    86,    87,     0,    88,
1226       89,    90,    91,    92,     0,     0,    93,     0,     0,     0,
1227        0,     0,   294,   295,   296,   297,   298,   299,     0,     0,
1228        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1229        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1230        0,   300,   301,   302,     0,   303,   304,   305,   306,   307,
1231       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
1232        0,    58,    59,    60,     0,     0,    61,    62,    63,    64,
1233        0,     0,    65,    66,     0,     0,     0,     0,     0,    67,
1234        0,     0,     0,    69,    70,    71,    72,    73,    74,     0,
1235        0,     0,   282,   283,   284,   285,   286,   287,   288,   289,
1236      290,     0,   291,   292,   293,     0,     0,     0,     0,     0,
1237        0,     0,    85,    86,    87,     0,    88,    89,    90,    91,
1238       92,     0,     0,    93,   294,   295,   296,   297,   298,   299,
1239        0,     0,     0,     0,   282,   283,   284,   285,   286,   287,
1240      288,   289,   290,     0,   291,   292,   293,     0,     0,     0,
1241        0,     0,     0,   300,   301,   302,     0,   303,   304,   305,
1242      306,   307,     0,     0,     0,   543,   294,   295,   296,   297,
1243      298,   299,   282,   283,   284,   285,   286,   287,   288,   289,
1244      290,     0,   333,   292,   293,     0,     0,     0,     0,     0,
1245        0,     0,     0,     0,     0,   300,   301,   302,     0,   303,
1246      304,   305,   306,   307,   294,   295,   296,   297,   298,   299,
1247      282,   283,   284,   285,   286,   287,   288,   289,   290,     0,
1248      291,   292,     0,     0,     0,     0,     0,     0,     0,     0,
1249        0,     0,     0,   300,   301,   302,     0,   303,   304,   305,
1250      306,   307,   294,   295,   296,   297,   298,   299,   282,   283,
1251      284,   285,   286,   287,   288,   289,   290,     0,   291,   292,
1252        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1253        0,     0,   301,   302,     0,   303,   304,   305,   306,   307,
1254      294,   295,   296,   297,   298,   299,     0,     0,     0,     0,
1255        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1256        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1257        0,   302,     0,   303,   304,   305,   306,   307
1258 };
1259 
1260 static const yytype_int16 yycheck[] =
1261 {
1262        7,    11,    11,   102,   224,   211,   122,   447,   106,   226,
1263      114,    96,   316,    14,   256,   100,   114,   442,   458,   256,
1264      249,   325,    46,     1,    65,     1,     1,     1,   127,     1,
1265       71,     1,   117,     1,    72,    65,   454,   455,     0,    48,
1266      564,    71,     1,   128,    48,     1,   453,    99,   455,     1,
1267      581,   103,   104,   453,   454,    14,    28,     1,    69,   111,
1268        0,    72,    65,   115,   116,    94,    95,    96,    71,   121,
1269        1,     1,   596,    48,    48,    35,    48,    37,   609,    88,
1270       89,   105,   613,   614,     1,     1,     0,   128,    66,    98,
1271      128,   100,    48,   518,    72,     1,    48,    72,   128,   108,
1272      207,   153,    72,   155,    72,   157,     1,   159,    82,   161,
1273        1,   163,   228,   165,    66,   167,   534,   169,    48,   171,
1274      538,   173,   220,   530,   222,   128,    82,   552,    72,   529,
1275      537,    48,    48,   533,    78,   251,    42,     1,     1,    48,
1276       48,   240,    94,    95,    96,   387,   586,    42,    65,   378,
1277      387,   249,    69,   129,    71,    72,    72,    48,   128,   130,
1278       77,    78,    25,    26,    70,    75,    75,    84,   119,   100,
1279      101,   102,   103,    72,    65,    70,   130,    83,    69,   180,
1280       71,    72,     1,   106,    48,    48,    77,    78,    83,   241,
1281       96,     1,    72,    84,   619,     1,     1,     1,    94,     4,
1282       96,    96,   119,     1,   121,   122,   510,     1,    71,    72,
1283        1,   128,     1,   130,     1,    78,   106,    22,    23,    24,
1284       25,    14,    15,   232,    29,   234,     1,   129,   119,     1,
1285      121,   122,     1,   340,    25,    95,    96,   128,    72,   445,
1286       26,    46,    48,    77,    78,   349,   331,    66,     1,   258,
1287       84,   349,     1,   357,    48,   264,    66,    48,   356,   357,
1288        1,    48,    53,    54,   129,   128,     1,    48,     1,     1,
1289      476,     1,   478,    48,    79,    80,    48,    66,    97,    48,
1290      378,   100,   101,   102,   103,   104,     1,    97,    98,    99,
1291      100,   101,   102,   103,   346,    48,   100,   101,   102,   103,
1292      105,   106,   100,   101,   102,   103,    39,    40,    97,    98,
1293       99,   100,   101,   102,   103,   220,    48,   222,    48,    72,
1294      329,   330,     1,   332,     1,    45,    41,    42,    43,     1,
1295      339,    66,    66,   440,   441,   344,   443,    72,    71,    72,
1296       72,     1,    77,    78,    77,    78,   453,   454,   455,    84,
1297      129,    84,   468,    67,    97,    70,   365,   100,   101,   102,
1298      103,   104,   460,    45,   462,    45,   464,    26,    83,    48,
1299      129,    48,    87,     1,   129,     1,   385,     1,    50,    51,
1300       52,    96,    94,    95,   590,   129,    10,    11,    48,    10,
1301       11,   597,     1,    15,   403,   404,   405,   406,   407,   408,
1302      409,   410,   411,   412,   413,   414,   415,   416,   417,   418,
1303      419,   420,   421,   422,   423,   424,   425,   426,   427,   428,
1304       14,     1,   529,   530,    48,   645,   533,   534,   645,   646,
1305      537,   538,   442,   540,   541,   542,   543,     1,    66,    48,
1306       66,    96,    66,     1,    72,    25,    72,    57,    95,    77,
1307       78,    77,    78,    94,   553,     1,    84,    67,    84,    39,
1308       40,   568,     1,   570,    14,   572,   552,   574,   325,   576,
1309      519,   578,     1,     1,   525,     4,   585,    41,    42,    43,
1310      646,     7,     8,     9,    10,    11,   593,   594,   595,   387,
1311       48,    71,    72,    22,    23,    24,    25,    57,    78,   396,
1312       29,   248,    48,     7,     8,     9,    70,    67,   518,    48,
1313      520,   521,   521,   123,   124,   125,   523,    55,   118,    83,
1314       48,   628,    48,    87,   631,    97,    98,    99,   100,   101,
1315      102,   103,    96,    71,    72,    73,    74,   607,   608,    77,
1316       78,   118,   552,   200,   201,   118,    84,   263,   558,   558,
1317       79,    80,   561,   562,   563,   309,   353,   354,   355,   178,
1318       -1,   121,   122,   123,   124,   125,    -1,     1,    -1,     3,
1319        4,     5,     6,    -1,    -1,    -1,    -1,    -1,    12,    13,
1320       14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
1321      128,    -1,    -1,    27,    -1,    29,    30,    31,    32,    33,
1322       34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,   619,
1323       44,    45,    46,    47,    48,    -1,    -1,    -1,   625,    -1,
1324       -1,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1325       64,    -1,    66,    67,    68,    -1,    -1,    71,    72,    73,
1326       74,    75,    -1,    77,    78,    -1,    -1,    -1,    -1,    -1,
1327       84,    85,    -1,    -1,    88,    89,    90,    91,    92,    93,
1328       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1329       -1,    -1,    -1,   107,   108,   109,   110,   111,   112,   113,
1330      114,   115,   116,   117,   118,   119,    -1,   121,   122,   123,
1331      124,   125,    -1,     1,   128,     3,     4,     5,     6,    -1,
1332       -1,    -1,    -1,    -1,    12,    13,    14,    15,    16,    17,
1333       18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    27,
1334       -1,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1335       38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
1336       -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
1337       58,    59,    60,    61,    62,    63,    64,    -1,    66,    67,
1338       68,    -1,    -1,    71,    72,    73,    74,    -1,    -1,    77,
1339       78,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
1340       88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
1341       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
1342      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
1343      118,   119,    -1,   121,   122,   123,   124,   125,    -1,     1,
1344      128,     3,     4,     5,     6,    -1,    -1,    -1,    -1,    -1,
1345       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1346       -1,    -1,    -1,    -1,    -1,    27,    -1,    29,    30,    31,
1347       32,    33,    34,    35,    36,    37,    38,    -1,    -1,    -1,
1348       -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
1349       -1,    -1,    -1,    55,    56,    57,    58,    59,    60,    61,
1350       62,    63,    64,    -1,    66,    67,    68,    -1,    -1,    71,
1351       72,    73,    74,     1,    -1,    77,    78,    -1,    -1,    -1,
1352       -1,    -1,    84,    85,    -1,    -1,    88,    89,    90,    91,
1353       92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    26,    -1,
1354       -1,    -1,    -1,    -1,    -1,   107,   108,   109,   110,   111,
1355      112,   113,   114,   115,   116,   117,   118,   119,    -1,   121,
1356      122,   123,   124,   125,    -1,    -1,   128,    55,    56,    57,
1357       58,    59,    60,    61,    62,    63,    64,    -1,    66,    67,
1358       68,    -1,    -1,    71,    72,    73,    74,     1,    -1,    77,
1359       78,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,
1360       88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
1361       -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    -1,    -1,
1362       -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,   117,
1363      118,   119,    -1,   121,   122,   123,   124,   125,    -1,    -1,
1364      128,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1365       64,    -1,    66,    67,    68,     1,    -1,    71,    72,    73,
1366       74,     1,    -1,    77,    78,    -1,    -1,    -1,    14,    -1,
1367       84,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
1368      121,   122,   123,   124,   125,    -1,    -1,    -1,    -1,    35,
1369       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,
1370       -1,    -1,    48,   117,   118,   119,    -1,   121,   122,   123,
1371      124,   125,    -1,    -1,   128,    55,    56,    57,    58,    59,
1372       60,    61,    62,    63,    64,    -1,    66,    67,    68,    -1,
1373       -1,    71,    72,    73,    74,     1,    -1,    77,    78,    -1,
1374       -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    88,    89,
1375       90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
1376       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1377       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
1378       -1,   121,   122,   123,   124,   125,    -1,    -1,   128,    55,
1379       56,    57,    58,    59,    60,    61,    62,    63,    64,    -1,
1380       66,    67,    68,    -1,    -1,    71,    72,    73,    74,    -1,
1381       -1,    77,    78,    -1,    -1,    -1,    -1,    -1,    84,    -1,
1382       -1,    -1,    88,    89,    90,    91,    92,    93,    -1,    -1,
1383       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1384       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1385       -1,   117,   118,   119,    -1,   121,   122,   123,   124,   125,
1386       -1,    -1,   128,     3,     4,     5,     6,    -1,    -1,    -1,
1387       -1,    -1,    12,    13,    -1,    -1,    16,    17,    18,    19,
1388       20,    21,    -1,    -1,    -1,    -1,    -1,    27,    -1,    29,
1389       30,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
1390       -1,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
1391       -1,    -1,    -1,    -1,    -1,    55,    56,    57,    58,    59,
1392       60,    61,    62,    63,    64,    -1,    66,    67,    68,    -1,
1393       -1,    71,    72,    73,    74,    -1,    -1,    77,    78,    -1,
1394       -1,    -1,    -1,    -1,    84,    85,    -1,    -1,    88,    89,
1395       90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
1396       -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,   108,   109,
1397      110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
1398       -1,   121,   122,   123,   124,   125,    -1,    -1,   128,     3,
1399        4,     5,     6,    -1,    -1,    -1,    -1,    -1,    12,    13,
1400       -1,    -1,    16,    17,    18,    19,    20,    21,    -1,    -1,
1401       -1,    -1,    -1,    27,    -1,    29,    30,    31,    32,    33,
1402       34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
1403       44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
1404       -1,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1405       64,    -1,    66,    67,    68,    -1,    -1,    71,    72,    73,
1406       74,    -1,    -1,    77,    78,    -1,    -1,    -1,    -1,    -1,
1407       84,    85,    -1,    -1,    88,    89,    90,    91,    92,    93,
1408       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1409       -1,    -1,    -1,   107,   108,   109,   110,   111,   112,   113,
1410      114,   115,   116,   117,   118,   119,    -1,   121,   122,   123,
1411      124,   125,    -1,    -1,   128,     3,     4,     5,     6,    -1,
1412       -1,    -1,    -1,    -1,    12,    13,    -1,    -1,    16,    17,
1413       18,    19,    20,    21,    -1,    -1,    -1,    -1,    -1,    27,
1414       -1,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1415       38,    -1,    -1,    -1,    -1,    -1,    44,    -1,    46,    47,
1416       -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    56,    57,
1417       58,    59,    60,    61,    62,    63,    64,    -1,    66,    67,
1418       68,    -1,    -1,    71,    72,    73,    74,    -1,    -1,    77,
1419       78,    -1,    -1,    -1,    -1,    -1,    84,    85,    -1,    -1,
1420       88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
1421       -1,    25,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
1422      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
1423      118,   119,    -1,   121,   122,   123,   124,   125,    -1,    -1,
1424      128,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1425       64,    -1,    66,    67,    68,    -1,    -1,    71,    72,    73,
1426       74,    -1,    -1,    77,    78,    -1,    -1,    81,    -1,    -1,
1427       84,    -1,    -1,    -1,    88,    89,    90,    91,    92,    93,
1428       65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
1429       -1,    -1,    77,    78,    -1,    -1,    35,    -1,    37,    84,
1430       -1,    -1,    -1,   117,   118,   119,    45,   121,   122,   123,
1431      124,   125,    -1,    -1,   128,    -1,    -1,    56,    57,    58,
1432       59,    60,    61,    62,    63,    64,    -1,    66,    67,    68,
1433       -1,    -1,    -1,    -1,   119,    -1,   121,   122,    -1,    -1,
1434       -1,    -1,    -1,   128,    -1,    -1,    -1,    -1,    -1,    88,
1435       89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,
1436       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1437       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
1438      119,    48,   121,   122,   123,   124,   125,    -1,    55,    56,
1439       57,    58,    59,    60,    61,    62,    63,    64,    -1,    66,
1440       67,    68,    -1,    -1,    71,    72,    73,    74,    -1,    -1,
1441       77,    78,    -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,
1442       -1,    88,    89,    90,    91,    92,    93,    -1,    -1,    -1,
1443       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1444       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1445      117,   118,   119,    -1,   121,   122,   123,   124,   125,    48,
1446       -1,   128,    -1,    -1,    -1,    -1,    55,    56,    57,    58,
1447       59,    60,    61,    62,    63,    64,    -1,    66,    67,    68,
1448       -1,    -1,    71,    72,    73,    74,    -1,    -1,    77,    78,
1449       -1,    -1,    -1,    -1,    -1,    84,    -1,    -1,    -1,    88,
1450       89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,    -1,
1451       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1452       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,   118,
1453      119,    -1,   121,   122,   123,   124,   125,    49,    -1,   128,
1454       -1,    -1,    -1,    55,    56,    57,    58,    59,    60,    61,
1455       62,    63,    64,    -1,    66,    67,    68,    -1,    -1,    71,
1456       72,    73,    74,    -1,    76,    77,    78,    -1,    -1,    -1,
1457       -1,    -1,    84,    -1,    -1,    -1,    88,    89,    90,    91,
1458       92,    93,    48,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1459       56,    57,    58,    59,    60,    61,    62,    63,    64,    -1,
1460       66,    67,    68,    -1,    -1,   117,   118,   119,    -1,   121,
1461      122,   123,   124,   125,    -1,    -1,   128,    -1,    -1,    -1,
1462       -1,    -1,    88,    89,    90,    91,    92,    93,    -1,    -1,
1463       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1464       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1465       -1,   117,   118,   119,    -1,   121,   122,   123,   124,   125,
1466       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1467       -1,    66,    67,    68,    -1,    -1,    71,    72,    73,    74,
1468       -1,    -1,    77,    78,    -1,    -1,    -1,    -1,    -1,    84,
1469       -1,    -1,    -1,    88,    89,    90,    91,    92,    93,    -1,
1470       -1,    -1,    56,    57,    58,    59,    60,    61,    62,    63,
1471       64,    -1,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
1472       -1,    -1,   117,   118,   119,    -1,   121,   122,   123,   124,
1473      125,    -1,    -1,   128,    88,    89,    90,    91,    92,    93,
1474       -1,    -1,    -1,    -1,    56,    57,    58,    59,    60,    61,
1475       62,    63,    64,    -1,    66,    67,    68,    -1,    -1,    -1,
1476       -1,    -1,    -1,   117,   118,   119,    -1,   121,   122,   123,
1477      124,   125,    -1,    -1,    -1,   129,    88,    89,    90,    91,
1478       92,    93,    56,    57,    58,    59,    60,    61,    62,    63,
1479       64,    -1,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
1480       -1,    -1,    -1,    -1,    -1,   117,   118,   119,    -1,   121,
1481      122,   123,   124,   125,    88,    89,    90,    91,    92,    93,
1482       56,    57,    58,    59,    60,    61,    62,    63,    64,    -1,
1483       66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1484       -1,    -1,    -1,   117,   118,   119,    -1,   121,   122,   123,
1485      124,   125,    88,    89,    90,    91,    92,    93,    56,    57,
1486       58,    59,    60,    61,    62,    63,    64,    -1,    66,    67,
1487       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1488       -1,    -1,   118,   119,    -1,   121,   122,   123,   124,   125,
1489       88,    89,    90,    91,    92,    93,    -1,    -1,    -1,    -1,
1490       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1491       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1492       -1,   119,    -1,   121,   122,   123,   124,   125
1493 };
1494 
1495   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1496      symbol of state STATE-NUM.  */
1497 static const yytype_uint16 yystos[] =
1498 {
1499        0,   132,   133,     0,   134,   141,   142,   135,   137,   138,
1500      143,   144,   145,   247,    48,    75,   140,   160,   226,   227,
1501      137,     3,     4,     5,     6,    12,    13,    16,    17,    18,
1502       19,    20,    21,    27,    29,    30,    31,    32,    33,    34,
1503       35,    36,    37,    38,    44,    45,    46,    47,    55,    56,
1504       57,    58,    59,    60,    61,    62,    63,    64,    66,    67,
1505       68,    71,    72,    73,    74,    77,    78,    84,    85,    88,
1506       89,    90,    91,    92,    93,   107,   108,   109,   110,   111,
1507      112,   113,   114,   115,   116,   117,   118,   119,   121,   122,
1508      123,   124,   125,   128,   144,   146,   147,   148,   149,   150,
1509      151,   152,   153,   154,   155,   156,   157,   158,   159,   161,
1510      162,   163,   164,   165,   166,   167,   168,   169,   170,   171,
1511      172,   173,   174,   175,   179,   180,   185,   186,   187,   188,
1512      218,   219,   220,   221,   222,   223,   224,   225,   228,   229,
1513      230,   232,   233,   237,   238,   239,   240,   241,   242,   244,
1514      249,   257,   259,   260,   261,   262,   263,   264,   265,   266,
1515      267,   268,   269,   270,   271,   272,   273,   274,   275,   276,
1516      277,   278,   279,   280,   281,   310,   311,   314,   315,   142,
1517       48,   281,     1,   281,     1,   281,   282,    14,    15,   140,
1518        1,    39,    40,    71,    72,    77,    78,    84,   183,   252,
1519      253,   254,   319,    49,    76,   189,   215,   281,   281,   323,
1520      140,   281,     1,    72,   326,   326,   323,   323,   176,     1,
1521       69,   235,   310,   316,   320,    72,   128,   324,   325,   281,
1522        1,     1,    50,    51,    52,   323,     1,     4,    22,    23,
1523       24,    25,    29,    46,    79,    80,   105,   106,   234,   236,
1524        1,    28,   316,   323,   323,     1,   140,     1,    25,    78,
1525      250,   252,   253,   254,    25,    81,   258,   323,   324,   326,
1526      140,   323,   323,   323,   323,   323,   323,   323,   323,   323,
1527      323,   323,    56,    57,    58,    59,    60,    61,    62,    63,
1528       64,    66,    67,    68,    88,    89,    90,    91,    92,    93,
1529      117,   118,   119,   121,   122,   123,   124,   125,   312,   313,
1530      312,   142,    48,   309,   321,   323,   181,     1,    42,    70,
1531       83,    96,   255,     1,   255,   182,     1,    66,   211,    10,
1532       11,   217,   119,    66,   211,   141,     1,     1,     1,    25,
1533       26,    71,    72,    78,   128,   177,   190,   193,   320,   130,
1534      320,    65,    71,   119,   121,   122,   128,   317,   318,   319,
1535      325,     1,   324,   281,     1,    25,    53,    54,   231,   281,
1536      326,     1,   323,   106,   106,    46,   105,     1,   236,   235,
1537        1,   324,     1,    14,    45,   171,   172,   245,   246,   281,
1538        1,     1,    41,    43,    87,   255,   256,     1,   256,   281,
1539        1,     1,     1,   294,   287,   296,   298,   297,   299,   300,
1540      301,   302,   293,   292,   291,   303,   304,   305,   306,   307,
1541      308,   289,   290,   295,   283,   284,   285,   286,   288,   309,
1542        1,   129,   130,   184,   321,     1,    82,   251,     1,   184,
1543      281,   281,   140,   281,     1,    14,   178,   281,     1,   194,
1544      195,   196,   197,   201,   202,   203,   211,   281,   323,   316,
1545      128,   318,   128,   318,   128,   318,   310,   316,   129,   281,
1546        1,    26,   235,     1,     1,     1,   281,     1,   172,   246,
1547      248,     1,   251,     1,   281,   281,   281,   281,   281,   281,
1548      281,   281,   281,   281,   281,   281,   281,   281,   281,   281,
1549      281,   281,   281,   281,   281,   281,   281,   281,   281,   281,
1550      322,   129,     1,    72,    78,     1,   211,   211,   136,   139,
1551      143,   144,   211,   141,   191,   192,   191,     1,   198,   202,
1552      203,   211,   199,   201,   203,   211,   200,   201,   202,   211,
1553       94,    95,    96,   129,   191,   310,   310,   310,   129,   324,
1554      141,     1,   141,    45,   243,     1,   321,   143,   144,   187,
1555      144,     7,     8,     9,   216,     1,   137,   193,   203,   211,
1556      202,   211,   203,   211,   201,   211,   202,   211,   201,   211,
1557        1,   211,     1,   211,     1,   211,   211,   129,   129,   129,
1558       14,   139,   326,   281,   281,   281,   216,    15,   211,   211,
1559      211,   211,   211,   211,    97,   100,   101,   102,   103,   104,
1560      204,   206,    97,    98,    99,   205,   206,   205,   191,   141,
1561        1,   211,   211,   211,   216,   141,     1,   209,   210,     1,
1562      207,   208,     1,   209,     1,   209,     1,   206,     1,   206,
1563        1,   206,   143,     1,   137,   211,   211,    14,   212,   213,
1564      214,   319,   325,   213
1565 };
1566 
1567   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1568 static const yytype_uint16 yyr1[] =
1569 {
1570        0,   131,   133,   132,   134,   134,   135,   135,   136,   136,
1571      137,   137,   138,   139,   139,   140,   140,   141,   141,   142,
1572      142,   143,   143,   144,   145,   146,   146,   146,   146,   147,
1573      147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
1574      147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
1575      147,   147,   147,   147,   147,   147,   147,   147,   147,   147,
1576      147,   147,   147,   147,   148,   149,   150,   151,   152,   153,
1577      154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
1578      164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
1579      174,   176,   175,   177,   177,   177,   178,   177,   177,   177,
1580      179,   181,   180,   182,   180,   180,   180,   180,   180,   180,
1581      180,   180,   180,   183,   183,   184,   184,   185,   186,   187,
1582      187,   187,   188,   189,   189,   189,   189,   189,   189,   189,
1583      189,   190,   190,   190,   192,   191,   191,   193,   193,   193,
1584      194,   194,   194,   194,   195,   196,   197,   198,   198,   198,
1585      198,   198,   199,   199,   199,   199,   199,   200,   200,   200,
1586      200,   200,   201,   201,   202,   202,   203,   203,   204,   204,
1587      204,   204,   205,   205,   205,   205,   205,   205,   206,   206,
1588      206,   206,   206,   206,   206,   206,   208,   207,   210,   209,
1589      211,   211,   212,   212,   213,   214,   215,   216,   216,   216,
1590      217,   217,   217,   218,   218,   219,   219,   220,   221,   221,
1591      221,   221,   221,   221,   222,   223,   224,   225,   225,   225,
1592      226,   227,   228,   228,   228,   229,   229,   230,   230,   230,
1593      230,   230,   230,   230,   230,   230,   230,   231,   231,   232,
1594      233,   233,   233,   233,   234,   234,   234,   234,   234,   234,
1595      234,   235,   235,   236,   236,   236,   236,   236,   236,   236,
1596      236,   236,   237,   237,   237,   237,   237,   238,   239,   240,
1597      241,   242,   243,   243,   243,   244,   244,   244,   244,   244,
1598      244,   245,   245,   245,   246,   246,   246,   246,   247,   247,
1599      248,   248,   249,   249,   249,   249,   249,   249,   249,   249,
1600      249,   249,   249,   250,   250,   250,   251,   251,   251,   252,
1601      252,   253,   254,   255,   255,   255,   255,   256,   256,   256,
1602      256,   257,   257,   257,   257,   258,   259,   260,   261,   262,
1603      263,   264,   265,   266,   267,   268,   269,   270,   271,   272,
1604      273,   274,   275,   276,   277,   278,   279,   280,   282,   281,
1605      283,   281,   284,   281,   285,   281,   281,   286,   281,   281,
1606      287,   281,   281,   288,   281,   281,   289,   281,   281,   290,
1607      281,   281,   291,   281,   281,   292,   281,   281,   293,   281,
1608      281,   294,   281,   281,   281,   281,   295,   281,   281,   296,
1609      281,   281,   297,   281,   281,   298,   281,   281,   299,   281,
1610      281,   300,   281,   281,   301,   281,   281,   302,   281,   281,
1611      303,   281,   281,   304,   281,   281,   305,   281,   281,   306,
1612      281,   281,   307,   281,   281,   308,   281,   281,   281,   281,
1613      281,   281,   281,   281,   281,   281,   281,   281,   309,   309,
1614      309,   310,   311,   311,   313,   312,   314,   315,   316,   316,
1615      316,   317,   317,   317,   317,   317,   317,   317,   317,   317,
1616      318,   318,   319,   319,   319,   320,   320,   320,   322,   321,
1617      321,   323,   323,   324,   324,   324,   324,   325,   326,   326
1618 };
1619 
1620   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1621 static const yytype_uint8 yyr2[] =
1622 {
1623        0,     2,     0,     2,     2,     1,     2,     1,     2,     2,
1624        1,     1,     3,     1,     1,     3,     2,     2,     1,     2,
1625        0,     1,     1,     0,     2,     2,     1,     1,     1,     1,
1626        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1627        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1628        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1629        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1630        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1631        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1632        1,     0,     3,     3,     1,     0,     0,     3,     3,     5,
1633        2,     0,     4,     0,     4,     3,     3,     4,     5,     4,
1634        3,     4,     3,     1,     1,     1,     2,     1,     1,     2,
1635        1,     3,     6,     7,     6,     5,     4,     2,     2,     2,
1636        0,     1,     1,     1,     0,     2,     0,     2,     3,     2,
1637        1,     1,     1,     1,     2,     2,     2,     2,     3,     2,
1638        3,     1,     2,     3,     2,     3,     1,     2,     3,     2,
1639        3,     1,     4,     3,     4,     3,     4,     3,     1,     2,
1640        2,     1,     1,     2,     2,     2,     2,     1,     2,     2,
1641        2,     2,     2,     2,     2,     2,     0,     3,     0,     3,
1642        1,     0,     1,     1,     1,     1,     1,     3,     3,     3,
1643        3,     3,     0,     3,     2,     3,     2,     2,     6,     9,
1644        9,     6,     2,     4,     2,     2,     2,     2,     3,     1,
1645        1,     1,     2,     3,     1,     1,     2,     3,     2,     4,
1646        3,     2,     4,     3,     2,     3,     2,     1,     1,     2,
1647        4,     3,     3,     2,     1,     2,     2,     1,     2,     2,
1648        1,     3,     1,     1,     1,     1,     1,     1,     1,     2,
1649        3,     2,     1,     2,     3,     4,     3,     2,     2,     2,
1650        2,     2,     2,     3,     1,     5,     4,     4,     2,     3,
1651        5,     2,     1,     1,     6,     7,     2,     2,     2,     2,
1652        3,     0,     3,     3,     2,     3,     3,     4,     5,     4,
1653        3,     4,     3,     1,     1,     1,     2,     2,     2,     1,
1654        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1655        1,     3,     2,     3,     2,     1,     2,     1,     2,     1,
1656        2,     1,     2,     1,     2,     1,     2,     1,     2,     1,
1657        2,     1,     2,     1,     2,     1,     2,     1,     0,     3,
1658        0,     4,     0,     4,     0,     4,     1,     0,     4,     1,
1659        0,     4,     1,     0,     4,     1,     0,     4,     1,     0,
1660        4,     1,     0,     4,     1,     0,     4,     1,     0,     4,
1661        1,     0,     4,     1,     2,     1,     0,     4,     1,     0,
1662        4,     1,     0,     4,     1,     0,     4,     1,     0,     4,
1663        1,     0,     4,     1,     0,     4,     1,     0,     4,     1,
1664        0,     4,     1,     0,     4,     1,     0,     4,     1,     0,
1665        4,     1,     0,     4,     1,     0,     4,     1,     1,     1,
1666        1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
1667        1,     1,     2,     2,     0,     2,     1,     1,     3,     1,
1668        1,     2,     2,     1,     2,     3,     4,     4,     4,     1,
1669        1,     1,     1,     1,     1,     2,     2,     0,     0,     4,
1670        1,     1,     0,     2,     1,     4,     3,     1,     1,     1
1671 };
1672 
1673 
1674 #define yyerrok         (yyerrstatus = 0)
1675 #define yyclearin       (yychar = YYEMPTY)
1676 #define YYEMPTY         (-2)
1677 #define YYEOF           0
1678 
1679 #define YYACCEPT        goto yyacceptlab
1680 #define YYABORT         goto yyabortlab
1681 #define YYERROR         goto yyerrorlab
1682 
1683 
1684 #define YYRECOVERING()  (!!yyerrstatus)
1685 
1686 #define YYBACKUP(Token, Value)                                  \
1687 do                                                              \
1688   if (yychar == YYEMPTY)                                        \
1689     {                                                           \
1690       yychar = (Token);                                         \
1691       yylval = (Value);                                         \
1692       YYPOPSTACK (yylen);                                       \
1693       yystate = *yyssp;                                         \
1694       goto yybackup;                                            \
1695     }                                                           \
1696   else                                                          \
1697     {                                                           \
1698       yyerror (YY_("syntax error: cannot back up")); \
1699       YYERROR;                                                  \
1700     }                                                           \
1701 while (0)
1702 
1703 /* Error token number */
1704 #define YYTERROR        1
1705 #define YYERRCODE       256
1706 
1707 
1708 
1709 /* Enable debugging if requested.  */
1710 #if YYDEBUG
1711 
1712 # ifndef YYFPRINTF
1713 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1714 #  define YYFPRINTF fprintf
1715 # endif
1716 
1717 # define YYDPRINTF(Args)                        \
1718 do {                                            \
1719   if (yydebug)                                  \
1720     YYFPRINTF Args;                             \
1721 } while (0)
1722 
1723 /* This macro is provided for backward compatibility. */
1724 #ifndef YY_LOCATION_PRINT
1725 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1726 #endif
1727 
1728 
1729 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1730 do {                                                                      \
1731   if (yydebug)                                                            \
1732     {                                                                     \
1733       YYFPRINTF (stderr, "%s ", Title);                                   \
1734       yy_symbol_print (stderr,                                            \
1735                   Type, Value); \
1736       YYFPRINTF (stderr, "\n");                                           \
1737     }                                                                     \
1738 } while (0)
1739 
1740 
1741 /*----------------------------------------.
1742 | Print this symbol's value on YYOUTPUT.  |
1743 `----------------------------------------*/
1744 
1745 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1746 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1747 {
1748   FILE *yyo = yyoutput;
1749   YYUSE (yyo);
1750   if (!yyvaluep)
1751     return;
1752 # ifdef YYPRINT
1753   if (yytype < YYNTOKENS)
1754     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1755 # endif
1756   YYUSE (yytype);
1757 }
1758 
1759 
1760 /*--------------------------------.
1761 | Print this symbol on YYOUTPUT.  |
1762 `--------------------------------*/
1763 
1764 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1765 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1766 {
1767   YYFPRINTF (yyoutput, "%s %s (",
1768              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1769 
1770   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1771   YYFPRINTF (yyoutput, ")");
1772 }
1773 
1774 /*------------------------------------------------------------------.
1775 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1776 | TOP (included).                                                   |
1777 `------------------------------------------------------------------*/
1778 
1779 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)1780 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1781 {
1782   YYFPRINTF (stderr, "Stack now");
1783   for (; yybottom <= yytop; yybottom++)
1784     {
1785       int yybot = *yybottom;
1786       YYFPRINTF (stderr, " %d", yybot);
1787     }
1788   YYFPRINTF (stderr, "\n");
1789 }
1790 
1791 # define YY_STACK_PRINT(Bottom, Top)                            \
1792 do {                                                            \
1793   if (yydebug)                                                  \
1794     yy_stack_print ((Bottom), (Top));                           \
1795 } while (0)
1796 
1797 
1798 /*------------------------------------------------.
1799 | Report that the YYRULE is going to be reduced.  |
1800 `------------------------------------------------*/
1801 
1802 static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)1803 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1804 {
1805   unsigned long int yylno = yyrline[yyrule];
1806   int yynrhs = yyr2[yyrule];
1807   int yyi;
1808   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1809              yyrule - 1, yylno);
1810   /* The symbols being reduced.  */
1811   for (yyi = 0; yyi < yynrhs; yyi++)
1812     {
1813       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1814       yy_symbol_print (stderr,
1815                        yystos[yyssp[yyi + 1 - yynrhs]],
1816                        &(yyvsp[(yyi + 1) - (yynrhs)])
1817                                               );
1818       YYFPRINTF (stderr, "\n");
1819     }
1820 }
1821 
1822 # define YY_REDUCE_PRINT(Rule)          \
1823 do {                                    \
1824   if (yydebug)                          \
1825     yy_reduce_print (yyssp, yyvsp, Rule); \
1826 } while (0)
1827 
1828 /* Nonzero means print parse trace.  It is left uninitialized so that
1829    multiple parsers can coexist.  */
1830 int yydebug;
1831 #else /* !YYDEBUG */
1832 # define YYDPRINTF(Args)
1833 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1834 # define YY_STACK_PRINT(Bottom, Top)
1835 # define YY_REDUCE_PRINT(Rule)
1836 #endif /* !YYDEBUG */
1837 
1838 
1839 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1840 #ifndef YYINITDEPTH
1841 # define YYINITDEPTH 200
1842 #endif
1843 
1844 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1845    if the built-in stack extension method is used).
1846 
1847    Do not make this value too large; the results are undefined if
1848    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1849    evaluated with infinite-precision integer arithmetic.  */
1850 
1851 #ifndef YYMAXDEPTH
1852 # define YYMAXDEPTH 10000
1853 #endif
1854 
1855 
1856 #if YYERROR_VERBOSE
1857 
1858 # ifndef yystrlen
1859 #  if defined __GLIBC__ && defined _STRING_H
1860 #   define yystrlen strlen
1861 #  else
1862 /* Return the length of YYSTR.  */
1863 static YYSIZE_T
yystrlen(const char * yystr)1864 yystrlen (const char *yystr)
1865 {
1866   YYSIZE_T yylen;
1867   for (yylen = 0; yystr[yylen]; yylen++)
1868     continue;
1869   return yylen;
1870 }
1871 #  endif
1872 # endif
1873 
1874 # ifndef yystpcpy
1875 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1876 #   define yystpcpy stpcpy
1877 #  else
1878 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1879    YYDEST.  */
1880 static char *
yystpcpy(char * yydest,const char * yysrc)1881 yystpcpy (char *yydest, const char *yysrc)
1882 {
1883   char *yyd = yydest;
1884   const char *yys = yysrc;
1885 
1886   while ((*yyd++ = *yys++) != '\0')
1887     continue;
1888 
1889   return yyd - 1;
1890 }
1891 #  endif
1892 # endif
1893 
1894 # ifndef yytnamerr
1895 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1896    quotes and backslashes, so that it's suitable for yyerror.  The
1897    heuristic is that double-quoting is unnecessary unless the string
1898    contains an apostrophe, a comma, or backslash (other than
1899    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1900    null, do not copy; instead, return the length of what the result
1901    would have been.  */
1902 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)1903 yytnamerr (char *yyres, const char *yystr)
1904 {
1905   if (*yystr == '"')
1906     {
1907       YYSIZE_T yyn = 0;
1908       char const *yyp = yystr;
1909 
1910       for (;;)
1911         switch (*++yyp)
1912           {
1913           case '\'':
1914           case ',':
1915             goto do_not_strip_quotes;
1916 
1917           case '\\':
1918             if (*++yyp != '\\')
1919               goto do_not_strip_quotes;
1920             /* Fall through.  */
1921           default:
1922             if (yyres)
1923               yyres[yyn] = *yyp;
1924             yyn++;
1925             break;
1926 
1927           case '"':
1928             if (yyres)
1929               yyres[yyn] = '\0';
1930             return yyn;
1931           }
1932     do_not_strip_quotes: ;
1933     }
1934 
1935   if (! yyres)
1936     return yystrlen (yystr);
1937 
1938   return yystpcpy (yyres, yystr) - yyres;
1939 }
1940 # endif
1941 
1942 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1943    about the unexpected token YYTOKEN for the state stack whose top is
1944    YYSSP.
1945 
1946    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1947    not large enough to hold the message.  In that case, also set
1948    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1949    required number of bytes is too large to store.  */
1950 static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)1951 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1952                 yytype_int16 *yyssp, int yytoken)
1953 {
1954   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1955   YYSIZE_T yysize = yysize0;
1956   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1957   /* Internationalized format string. */
1958   const char *yyformat = YY_NULLPTR;
1959   /* Arguments of yyformat. */
1960   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1961   /* Number of reported tokens (one for the "unexpected", one per
1962      "expected"). */
1963   int yycount = 0;
1964 
1965   /* There are many possibilities here to consider:
1966      - If this state is a consistent state with a default action, then
1967        the only way this function was invoked is if the default action
1968        is an error action.  In that case, don't check for expected
1969        tokens because there are none.
1970      - The only way there can be no lookahead present (in yychar) is if
1971        this state is a consistent state with a default action.  Thus,
1972        detecting the absence of a lookahead is sufficient to determine
1973        that there is no unexpected or expected token to report.  In that
1974        case, just report a simple "syntax error".
1975      - Don't assume there isn't a lookahead just because this state is a
1976        consistent state with a default action.  There might have been a
1977        previous inconsistent state, consistent state with a non-default
1978        action, or user semantic action that manipulated yychar.
1979      - Of course, the expected token list depends on states to have
1980        correct lookahead information, and it depends on the parser not
1981        to perform extra reductions after fetching a lookahead from the
1982        scanner and before detecting a syntax error.  Thus, state merging
1983        (from LALR or IELR) and default reductions corrupt the expected
1984        token list.  However, the list is correct for canonical LR with
1985        one exception: it will still contain any token that will not be
1986        accepted due to an error action in a later state.
1987   */
1988   if (yytoken != YYEMPTY)
1989     {
1990       int yyn = yypact[*yyssp];
1991       yyarg[yycount++] = yytname[yytoken];
1992       if (!yypact_value_is_default (yyn))
1993         {
1994           /* Start YYX at -YYN if negative to avoid negative indexes in
1995              YYCHECK.  In other words, skip the first -YYN actions for
1996              this state because they are default actions.  */
1997           int yyxbegin = yyn < 0 ? -yyn : 0;
1998           /* Stay within bounds of both yycheck and yytname.  */
1999           int yychecklim = YYLAST - yyn + 1;
2000           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2001           int yyx;
2002 
2003           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2004             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2005                 && !yytable_value_is_error (yytable[yyx + yyn]))
2006               {
2007                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2008                   {
2009                     yycount = 1;
2010                     yysize = yysize0;
2011                     break;
2012                   }
2013                 yyarg[yycount++] = yytname[yyx];
2014                 {
2015                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2016                   if (! (yysize <= yysize1
2017                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2018                     return 2;
2019                   yysize = yysize1;
2020                 }
2021               }
2022         }
2023     }
2024 
2025   switch (yycount)
2026     {
2027 # define YYCASE_(N, S)                      \
2028       case N:                               \
2029         yyformat = S;                       \
2030       break
2031       YYCASE_(0, YY_("syntax error"));
2032       YYCASE_(1, YY_("syntax error, unexpected %s"));
2033       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2034       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2035       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2036       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2037 # undef YYCASE_
2038     }
2039 
2040   {
2041     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2042     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2043       return 2;
2044     yysize = yysize1;
2045   }
2046 
2047   if (*yymsg_alloc < yysize)
2048     {
2049       *yymsg_alloc = 2 * yysize;
2050       if (! (yysize <= *yymsg_alloc
2051              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2052         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2053       return 1;
2054     }
2055 
2056   /* Avoid sprintf, as that infringes on the user's name space.
2057      Don't have undefined behavior even if the translation
2058      produced a string with the wrong number of "%s"s.  */
2059   {
2060     char *yyp = *yymsg;
2061     int yyi = 0;
2062     while ((*yyp = *yyformat) != '\0')
2063       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2064         {
2065           yyp += yytnamerr (yyp, yyarg[yyi++]);
2066           yyformat += 2;
2067         }
2068       else
2069         {
2070           yyp++;
2071           yyformat++;
2072         }
2073   }
2074   return 0;
2075 }
2076 #endif /* YYERROR_VERBOSE */
2077 
2078 /*-----------------------------------------------.
2079 | Release the memory associated to this symbol.  |
2080 `-----------------------------------------------*/
2081 
2082 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)2083 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2084 {
2085   YYUSE (yyvaluep);
2086   if (!yymsg)
2087     yymsg = "Deleting";
2088   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2089 
2090   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2091   YYUSE (yytype);
2092   YY_IGNORE_MAYBE_UNINITIALIZED_END
2093 }
2094 
2095 
2096 
2097 
2098 /* The lookahead symbol.  */
2099 int yychar;
2100 
2101 /* The semantic value of the lookahead symbol.  */
2102 YYSTYPE yylval;
2103 /* Number of syntax errors so far.  */
2104 int yynerrs;
2105 
2106 
2107 /*----------.
2108 | yyparse.  |
2109 `----------*/
2110 
2111 int
yyparse(void)2112 yyparse (void)
2113 {
2114     int yystate;
2115     /* Number of tokens to shift before error messages enabled.  */
2116     int yyerrstatus;
2117 
2118     /* The stacks and their tools:
2119        'yyss': related to states.
2120        'yyvs': related to semantic values.
2121 
2122        Refer to the stacks through separate pointers, to allow yyoverflow
2123        to reallocate them elsewhere.  */
2124 
2125     /* The state stack.  */
2126     yytype_int16 yyssa[YYINITDEPTH];
2127     yytype_int16 *yyss;
2128     yytype_int16 *yyssp;
2129 
2130     /* The semantic value stack.  */
2131     YYSTYPE yyvsa[YYINITDEPTH];
2132     YYSTYPE *yyvs;
2133     YYSTYPE *yyvsp;
2134 
2135     YYSIZE_T yystacksize;
2136 
2137   int yyn;
2138   int yyresult;
2139   /* Lookahead token as an internal (translated) token number.  */
2140   int yytoken = 0;
2141   /* The variables used to return semantic value and location from the
2142      action routines.  */
2143   YYSTYPE yyval;
2144 
2145 #if YYERROR_VERBOSE
2146   /* Buffer for error messages, and its allocated size.  */
2147   char yymsgbuf[128];
2148   char *yymsg = yymsgbuf;
2149   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2150 #endif
2151 
2152 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2153 
2154   /* The number of symbols on the RHS of the reduced rule.
2155      Keep to zero when no symbol should be popped.  */
2156   int yylen = 0;
2157 
2158   yyssp = yyss = yyssa;
2159   yyvsp = yyvs = yyvsa;
2160   yystacksize = YYINITDEPTH;
2161 
2162   YYDPRINTF ((stderr, "Starting parse\n"));
2163 
2164   yystate = 0;
2165   yyerrstatus = 0;
2166   yynerrs = 0;
2167   yychar = YYEMPTY; /* Cause a token to be read.  */
2168   goto yysetstate;
2169 
2170 /*------------------------------------------------------------.
2171 | yynewstate -- Push a new state, which is found in yystate.  |
2172 `------------------------------------------------------------*/
2173  yynewstate:
2174   /* In all cases, when you get here, the value and location stacks
2175      have just been pushed.  So pushing a state here evens the stacks.  */
2176   yyssp++;
2177 
2178  yysetstate:
2179   *yyssp = yystate;
2180 
2181   if (yyss + yystacksize - 1 <= yyssp)
2182     {
2183       /* Get the current used size of the three stacks, in elements.  */
2184       YYSIZE_T yysize = yyssp - yyss + 1;
2185 
2186 #ifdef yyoverflow
2187       {
2188         /* Give user a chance to reallocate the stack.  Use copies of
2189            these so that the &'s don't force the real ones into
2190            memory.  */
2191         YYSTYPE *yyvs1 = yyvs;
2192         yytype_int16 *yyss1 = yyss;
2193 
2194         /* Each stack pointer address is followed by the size of the
2195            data in use in that stack, in bytes.  This used to be a
2196            conditional around just the two extra args, but that might
2197            be undefined if yyoverflow is a macro.  */
2198         yyoverflow (YY_("memory exhausted"),
2199                     &yyss1, yysize * sizeof (*yyssp),
2200                     &yyvs1, yysize * sizeof (*yyvsp),
2201                     &yystacksize);
2202 
2203         yyss = yyss1;
2204         yyvs = yyvs1;
2205       }
2206 #else /* no yyoverflow */
2207 # ifndef YYSTACK_RELOCATE
2208       goto yyexhaustedlab;
2209 # else
2210       /* Extend the stack our own way.  */
2211       if (YYMAXDEPTH <= yystacksize)
2212         goto yyexhaustedlab;
2213       yystacksize *= 2;
2214       if (YYMAXDEPTH < yystacksize)
2215         yystacksize = YYMAXDEPTH;
2216 
2217       {
2218         yytype_int16 *yyss1 = yyss;
2219         union yyalloc *yyptr =
2220           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2221         if (! yyptr)
2222           goto yyexhaustedlab;
2223         YYSTACK_RELOCATE (yyss_alloc, yyss);
2224         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2225 #  undef YYSTACK_RELOCATE
2226         if (yyss1 != yyssa)
2227           YYSTACK_FREE (yyss1);
2228       }
2229 # endif
2230 #endif /* no yyoverflow */
2231 
2232       yyssp = yyss + yysize - 1;
2233       yyvsp = yyvs + yysize - 1;
2234 
2235       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2236                   (unsigned long int) yystacksize));
2237 
2238       if (yyss + yystacksize - 1 <= yyssp)
2239         YYABORT;
2240     }
2241 
2242   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2243 
2244   if (yystate == YYFINAL)
2245     YYACCEPT;
2246 
2247   goto yybackup;
2248 
2249 /*-----------.
2250 | yybackup.  |
2251 `-----------*/
2252 yybackup:
2253 
2254   /* Do appropriate processing given the current state.  Read a
2255      lookahead token if we need one and don't already have one.  */
2256 
2257   /* First try to decide what to do without reference to lookahead token.  */
2258   yyn = yypact[yystate];
2259   if (yypact_value_is_default (yyn))
2260     goto yydefault;
2261 
2262   /* Not known => get a lookahead token if don't already have one.  */
2263 
2264   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2265   if (yychar == YYEMPTY)
2266     {
2267       YYDPRINTF ((stderr, "Reading a token: "));
2268       yychar = yylex ();
2269     }
2270 
2271   if (yychar <= YYEOF)
2272     {
2273       yychar = yytoken = YYEOF;
2274       YYDPRINTF ((stderr, "Now at end of input.\n"));
2275     }
2276   else
2277     {
2278       yytoken = YYTRANSLATE (yychar);
2279       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2280     }
2281 
2282   /* If the proper action on seeing token YYTOKEN is to reduce or to
2283      detect an error, take that action.  */
2284   yyn += yytoken;
2285   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2286     goto yydefault;
2287   yyn = yytable[yyn];
2288   if (yyn <= 0)
2289     {
2290       if (yytable_value_is_error (yyn))
2291         goto yyerrlab;
2292       yyn = -yyn;
2293       goto yyreduce;
2294     }
2295 
2296   /* Count tokens shifted since error; after three, turn off error
2297      status.  */
2298   if (yyerrstatus)
2299     yyerrstatus--;
2300 
2301   /* Shift the lookahead token.  */
2302   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2303 
2304   /* Discard the shifted token.  */
2305   yychar = YYEMPTY;
2306 
2307   yystate = yyn;
2308   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2309   *++yyvsp = yylval;
2310   YY_IGNORE_MAYBE_UNINITIALIZED_END
2311 
2312   goto yynewstate;
2313 
2314 
2315 /*-----------------------------------------------------------.
2316 | yydefault -- do the default action for the current state.  |
2317 `-----------------------------------------------------------*/
2318 yydefault:
2319   yyn = yydefact[yystate];
2320   if (yyn == 0)
2321     goto yyerrlab;
2322   goto yyreduce;
2323 
2324 
2325 /*-----------------------------.
2326 | yyreduce -- Do a reduction.  |
2327 `-----------------------------*/
2328 yyreduce:
2329   /* yyn is the number of a rule to reduce with.  */
2330   yylen = yyr2[yyn];
2331 
2332   /* If YYLEN is nonzero, implement the default value of the action:
2333      '$$ = $1'.
2334 
2335      Otherwise, the following line sets YYVAL to garbage.
2336      This behavior is undocumented and Bison
2337      users should not rely upon it.  Assigning to YYVAL
2338      unconditionally makes the parser a bit smaller, and it avoids a
2339      GCC warning that YYVAL may be used uninitialized.  */
2340   yyval = yyvsp[1-yylen];
2341 
2342 
2343   YY_REDUCE_PRINT (yyn);
2344   switch (yyn)
2345     {
2346         case 2:
2347 #line 160 "../yaccsrc.y" /* yacc.c:1646  */
2348     { level = 0;
2349                                          if ( get_options_flag( parser_data.TSD->currlevel, EXT_CALLS_AS_FUNCS )
2350                                            && !get_options_flag( parser_data.TSD->currlevel, EXT_STRICT_ANSI ) )
2351                                             start_parendepth = 1;
2352                                          else
2353                                             start_parendepth = 0;
2354                                          parendepth = 0; }
2355 #line 2354 "../yaccsrc.c" /* yacc.c:1646  */
2356     break;
2357 
2358   case 4:
2359 #line 170 "../yaccsrc.y" /* yacc.c:1646  */
2360     { (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) );
2361                                          (yyval)->o.last = NULL;
2362                                          EndProg( (yyval) ) ; }
2363 #line 2362 "../yaccsrc.c" /* yacc.c:1646  */
2364     break;
2365 
2366   case 5:
2367 #line 173 "../yaccsrc.y" /* yacc.c:1646  */
2368     { (yyval) = (yyvsp[0]);
2369                                          if ( (yyval) != NULL )
2370                                             (yyval)->o.last = NULL;
2371                                          EndProg( (yyval) ); }
2372 #line 2371 "../yaccsrc.c" /* yacc.c:1646  */
2373     break;
2374 
2375   case 6:
2376 #line 179 "../yaccsrc.y" /* yacc.c:1646  */
2377     { /* fixes bug 579711 */
2378                                          (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
2379 #line 2378 "../yaccsrc.c" /* yacc.c:1646  */
2380     break;
2381 
2382   case 7:
2383 #line 181 "../yaccsrc.y" /* yacc.c:1646  */
2384     { (yyval) = (yyvsp[0]); }
2385 #line 2384 "../yaccsrc.c" /* yacc.c:1646  */
2386     break;
2387 
2388   case 8:
2389 #line 184 "../yaccsrc.y" /* yacc.c:1646  */
2390     { /* fixes bug 579711 */
2391                                          (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
2392 #line 2391 "../yaccsrc.c" /* yacc.c:1646  */
2393     break;
2394 
2395   case 9:
2396 #line 186 "../yaccsrc.y" /* yacc.c:1646  */
2397     { (yyval) = (yyvsp[-1]); }
2398 #line 2397 "../yaccsrc.c" /* yacc.c:1646  */
2399     break;
2400 
2401   case 10:
2402 #line 189 "../yaccsrc.y" /* yacc.c:1646  */
2403     { (yyval) = (yyvsp[0]) ; }
2404 #line 2403 "../yaccsrc.c" /* yacc.c:1646  */
2405     break;
2406 
2407   case 11:
2408 #line 190 "../yaccsrc.y" /* yacc.c:1646  */
2409     { exiterror( ERR_UNMATCHED_END, 1 ); }
2410 #line 2409 "../yaccsrc.c" /* yacc.c:1646  */
2411     break;
2412 
2413   case 13:
2414 #line 198 "../yaccsrc.y" /* yacc.c:1646  */
2415     { (yyval) = (yyvsp[0]); }
2416 #line 2415 "../yaccsrc.c" /* yacc.c:1646  */
2417     break;
2418 
2419   case 14:
2420 #line 199 "../yaccsrc.y" /* yacc.c:1646  */
2421     { (yyval) = NULL; }
2422 #line 2421 "../yaccsrc.c" /* yacc.c:1646  */
2423     break;
2424 
2425   case 15:
2426 #line 202 "../yaccsrc.y" /* yacc.c:1646  */
2427     { (yyval) = optgluelast( (yyvsp[-2]), (yyvsp[0]) ); }
2428 #line 2427 "../yaccsrc.c" /* yacc.c:1646  */
2429     break;
2430 
2431   case 16:
2432 #line 203 "../yaccsrc.y" /* yacc.c:1646  */
2433     { (yyval) = (yyvsp[0]); }
2434 #line 2433 "../yaccsrc.c" /* yacc.c:1646  */
2435     break;
2436 
2437   case 17:
2438 #line 206 "../yaccsrc.y" /* yacc.c:1646  */
2439     { (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
2440 #line 2439 "../yaccsrc.c" /* yacc.c:1646  */
2441     break;
2442 
2443   case 18:
2444 #line 207 "../yaccsrc.y" /* yacc.c:1646  */
2445     { (yyval) = (yyvsp[0]); }
2446 #line 2445 "../yaccsrc.c" /* yacc.c:1646  */
2447     break;
2448 
2449   case 19:
2450 #line 210 "../yaccsrc.y" /* yacc.c:1646  */
2451     { (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
2452 #line 2451 "../yaccsrc.c" /* yacc.c:1646  */
2453     break;
2454 
2455   case 20:
2456 #line 211 "../yaccsrc.y" /* yacc.c:1646  */
2457     { (yyval) = NULL; }
2458 #line 2457 "../yaccsrc.c" /* yacc.c:1646  */
2459     break;
2460 
2461   case 23:
2462 #line 218 "../yaccsrc.y" /* yacc.c:1646  */
2463     { tmpchr=parser_data.tstart;
2464                                          tmplno=parser_data.tline; }
2465 #line 2464 "../yaccsrc.c" /* yacc.c:1646  */
2466     break;
2467 
2468   case 24:
2469 #line 222 "../yaccsrc.y" /* yacc.c:1646  */
2470     { (yyval)=(yyvsp[0]); }
2471 #line 2470 "../yaccsrc.c" /* yacc.c:1646  */
2472     break;
2473 
2474   case 25:
2475 #line 225 "../yaccsrc.y" /* yacc.c:1646  */
2476     { (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
2477 #line 2476 "../yaccsrc.c" /* yacc.c:1646  */
2478     break;
2479 
2480   case 64:
2481 #line 268 "../yaccsrc.y" /* yacc.c:1646  */
2482     { (yyval) = makenode(X_CALL,0) ;
2483                                          (yyval)->lineno = parser_data.tline ;
2484                                          (yyval)->charnr = parser_data.tstart ; }
2485 #line 2484 "../yaccsrc.c" /* yacc.c:1646  */
2486     break;
2487 
2488   case 65:
2489 #line 272 "../yaccsrc.y" /* yacc.c:1646  */
2490     { (yyval) = makenode(X_DO,0) ;
2491                                          (yyval)->lineno = parser_data.tline ;
2492                                          (yyval)->charnr = parser_data.tstart ;
2493                                          level++; }
2494 #line 2493 "../yaccsrc.c" /* yacc.c:1646  */
2495     break;
2496 
2497   case 66:
2498 #line 277 "../yaccsrc.y" /* yacc.c:1646  */
2499     { (yyval) = makenode(X_EXIT,0) ;
2500                                          (yyval)->lineno = parser_data.tline ;
2501                                          (yyval)->charnr = parser_data.tstart ; }
2502 #line 2501 "../yaccsrc.c" /* yacc.c:1646  */
2503     break;
2504 
2505   case 67:
2506 #line 281 "../yaccsrc.y" /* yacc.c:1646  */
2507     { (yyval) = makenode(X_IF,0) ;
2508                                          (yyval)->lineno = parser_data.tline ;
2509                                          (yyval)->charnr = parser_data.tstart ;
2510                                          level++; }
2511 #line 2510 "../yaccsrc.c" /* yacc.c:1646  */
2512     break;
2513 
2514   case 68:
2515 #line 286 "../yaccsrc.y" /* yacc.c:1646  */
2516     { (yyval) = makenode(X_ITERATE,0) ;
2517                                          (yyval)->lineno = parser_data.tline ;
2518                                          (yyval)->charnr = parser_data.tstart ; }
2519 #line 2518 "../yaccsrc.c" /* yacc.c:1646  */
2520     break;
2521 
2522   case 69:
2523 #line 290 "../yaccsrc.y" /* yacc.c:1646  */
2524     { (yyval) = makenode(X_LEAVE,0) ;
2525                                          (yyval)->lineno = parser_data.tline ;
2526                                          (yyval)->charnr = parser_data.tstart ; }
2527 #line 2526 "../yaccsrc.c" /* yacc.c:1646  */
2528     break;
2529 
2530   case 70:
2531 #line 294 "../yaccsrc.y" /* yacc.c:1646  */
2532     { (yyval) = makenode(X_SAY,0) ;
2533                                          (yyval)->lineno = parser_data.tline ;
2534                                          (yyval)->charnr = parser_data.tstart ; }
2535 #line 2534 "../yaccsrc.c" /* yacc.c:1646  */
2536     break;
2537 
2538   case 71:
2539 #line 298 "../yaccsrc.y" /* yacc.c:1646  */
2540     { (yyval) = makenode(X_RETURN,0) ;
2541                                          (yyval)->lineno = parser_data.tline ;
2542                                          (yyval)->charnr = parser_data.tstart ; }
2543 #line 2542 "../yaccsrc.c" /* yacc.c:1646  */
2544     break;
2545 
2546   case 72:
2547 #line 302 "../yaccsrc.y" /* yacc.c:1646  */
2548     { (yyval) = makenode(X_ADDR_N,0) ;
2549                                          (yyval)->lineno = parser_data.tline ;
2550                                          (yyval)->charnr = parser_data.tstart ; }
2551 #line 2550 "../yaccsrc.c" /* yacc.c:1646  */
2552     break;
2553 
2554   case 73:
2555 #line 306 "../yaccsrc.y" /* yacc.c:1646  */
2556     { (yyval) = makenode(X_PARSE_ARG,0) ;
2557                                          (yyval)->lineno = parser_data.tline ;
2558                                          (yyval)->charnr = parser_data.tstart ; }
2559 #line 2558 "../yaccsrc.c" /* yacc.c:1646  */
2560     break;
2561 
2562   case 74:
2563 #line 310 "../yaccsrc.y" /* yacc.c:1646  */
2564     { (yyval) = makenode(X_DROP,0) ;
2565                                          (yyval)->lineno = parser_data.tline ;
2566                                          (yyval)->charnr = parser_data.tstart ; }
2567 #line 2566 "../yaccsrc.c" /* yacc.c:1646  */
2568     break;
2569 
2570   case 75:
2571 #line 314 "../yaccsrc.y" /* yacc.c:1646  */
2572     { (yyval) = makenode(X_IPRET,0) ;
2573                                          (yyval)->lineno = parser_data.tline ;
2574                                          (yyval)->charnr = parser_data.tstart ; }
2575 #line 2574 "../yaccsrc.c" /* yacc.c:1646  */
2576     break;
2577 
2578   case 76:
2579 #line 318 "../yaccsrc.y" /* yacc.c:1646  */
2580     { (yyval) = makenode(X_LABEL,0) ;
2581                                          (yyval)->lineno = parser_data.tline ;
2582                                          (yyval)->charnr = parser_data.tstart ; }
2583 #line 2582 "../yaccsrc.c" /* yacc.c:1646  */
2584     break;
2585 
2586   case 77:
2587 #line 322 "../yaccsrc.y" /* yacc.c:1646  */
2588     { (yyval) = makenode(X_NULL,0) ;
2589                                          (yyval)->lineno = parser_data.tline ;
2590                                          (yyval)->charnr = parser_data.tstart ; }
2591 #line 2590 "../yaccsrc.c" /* yacc.c:1646  */
2592     break;
2593 
2594   case 78:
2595 #line 326 "../yaccsrc.y" /* yacc.c:1646  */
2596     { (yyval) = makenode(0,0) ;
2597                                          (yyval)->lineno = parser_data.tline ;
2598                                          (yyval)->charnr = parser_data.tstart ; }
2599 #line 2598 "../yaccsrc.c" /* yacc.c:1646  */
2600     break;
2601 
2602   case 79:
2603 #line 330 "../yaccsrc.y" /* yacc.c:1646  */
2604     { (yyval) = makenode(X_OPTIONS,0) ;
2605                                          (yyval)->lineno = parser_data.tline ;
2606                                          (yyval)->charnr = parser_data.tstart ; }
2607 #line 2606 "../yaccsrc.c" /* yacc.c:1646  */
2608     break;
2609 
2610   case 80:
2611 #line 334 "../yaccsrc.y" /* yacc.c:1646  */
2612     { (yyval) = makenode(0,0) ;
2613                                          (yyval)->lineno = parser_data.tline ;
2614                                          (yyval)->charnr = parser_data.tstart ; }
2615 #line 2614 "../yaccsrc.c" /* yacc.c:1646  */
2616     break;
2617 
2618   case 81:
2619 #line 338 "../yaccsrc.y" /* yacc.c:1646  */
2620     { (yyval) = makenode(X_PROC,0) ;
2621                                          (yyval)->lineno = parser_data.tline ;
2622                                          (yyval)->charnr = parser_data.tstart ; }
2623 #line 2622 "../yaccsrc.c" /* yacc.c:1646  */
2624     break;
2625 
2626   case 82:
2627 #line 342 "../yaccsrc.y" /* yacc.c:1646  */
2628     { (yyval) = makenode(X_PULL,0) ;
2629                                          (yyval)->lineno = parser_data.tline ;
2630                                          (yyval)->charnr = parser_data.tstart ; }
2631 #line 2630 "../yaccsrc.c" /* yacc.c:1646  */
2632     break;
2633 
2634   case 83:
2635 #line 346 "../yaccsrc.y" /* yacc.c:1646  */
2636     { (yyval) = makenode(X_PUSH,0) ;
2637                                          (yyval)->lineno = parser_data.tline ;
2638                                          (yyval)->charnr = parser_data.tstart ; }
2639 #line 2638 "../yaccsrc.c" /* yacc.c:1646  */
2640     break;
2641 
2642   case 84:
2643 #line 350 "../yaccsrc.y" /* yacc.c:1646  */
2644     { (yyval) = makenode(X_QUEUE,0) ;
2645                                          (yyval)->lineno = parser_data.tline ;
2646                                          (yyval)->charnr = parser_data.tstart ; }
2647 #line 2646 "../yaccsrc.c" /* yacc.c:1646  */
2648     break;
2649 
2650   case 85:
2651 #line 354 "../yaccsrc.y" /* yacc.c:1646  */
2652     { (yyval) = makenode(X_SELECT,0) ;
2653                                          (yyval)->lineno = parser_data.tline ;
2654                                          (yyval)->charnr = parser_data.tstart ;
2655                                          level++; }
2656 #line 2655 "../yaccsrc.c" /* yacc.c:1646  */
2657     break;
2658 
2659   case 86:
2660 #line 359 "../yaccsrc.y" /* yacc.c:1646  */
2661     { (yyval) = makenode(X_SIG_LAB,0) ;
2662                                          (yyval)->lineno = parser_data.tline ;
2663                                          (yyval)->charnr = parser_data.tstart ; }
2664 #line 2663 "../yaccsrc.c" /* yacc.c:1646  */
2665     break;
2666 
2667   case 87:
2668 #line 363 "../yaccsrc.y" /* yacc.c:1646  */
2669     { (yyval) = makenode(X_WHEN,0) ;
2670                                          (yyval)->lineno = parser_data.tline ;
2671                                          (yyval)->charnr = parser_data.tstart ; }
2672 #line 2671 "../yaccsrc.c" /* yacc.c:1646  */
2673     break;
2674 
2675   case 88:
2676 #line 367 "../yaccsrc.y" /* yacc.c:1646  */
2677     { (yyval) = makenode(X_OTHERWISE,0) ;
2678                                          (yyval)->lineno = parser_data.tline ;
2679                                          (yyval)->charnr = parser_data.tstart ; }
2680 #line 2679 "../yaccsrc.c" /* yacc.c:1646  */
2681     break;
2682 
2683   case 89:
2684 #line 371 "../yaccsrc.y" /* yacc.c:1646  */
2685     { (yyval) = makenode(X_TRACE,0) ;
2686                                          (yyval)->lineno = parser_data.tline ;
2687                                          (yyval)->charnr = parser_data.tstart ; }
2688 #line 2687 "../yaccsrc.c" /* yacc.c:1646  */
2689     break;
2690 
2691   case 90:
2692 #line 375 "../yaccsrc.y" /* yacc.c:1646  */
2693     { (yyval) = makenode(X_UPPER_VAR,0) ;
2694                                          (yyval)->lineno = parser_data.tline ;
2695                                          (yyval)->charnr = parser_data.tstart ; }
2696 #line 2695 "../yaccsrc.c" /* yacc.c:1646  */
2697     break;
2698 
2699   case 91:
2700 #line 379 "../yaccsrc.y" /* yacc.c:1646  */
2701     { (yyval) = current = (yyvsp[0]) ; }
2702 #line 2701 "../yaccsrc.c" /* yacc.c:1646  */
2703     break;
2704 
2705   case 93:
2706 #line 383 "../yaccsrc.y" /* yacc.c:1646  */
2707     { current->type = X_ADDR_V ;
2708                                          current->p[0] = (yyvsp[-1]) ;
2709                                          current->p[1] = (yyvsp[0]) ; }
2710 #line 2709 "../yaccsrc.c" /* yacc.c:1646  */
2711     break;
2712 
2713   case 94:
2714 #line 386 "../yaccsrc.y" /* yacc.c:1646  */
2715     { exiterror( ERR_STRING_EXPECTED, 1, __reginatext ) ;}
2716 #line 2715 "../yaccsrc.c" /* yacc.c:1646  */
2717     break;
2718 
2719   case 95:
2720 #line 387 "../yaccsrc.y" /* yacc.c:1646  */
2721     { current->type = X_ADDR_S ; }
2722 #line 2721 "../yaccsrc.c" /* yacc.c:1646  */
2723     break;
2724 
2725   case 96:
2726 #line 388 "../yaccsrc.y" /* yacc.c:1646  */
2727     { exiterror( ERR_STRING_EXPECTED, 1, __reginatext ) ;}
2728 #line 2727 "../yaccsrc.c" /* yacc.c:1646  */
2729     break;
2730 
2731   case 98:
2732 #line 390 "../yaccsrc.y" /* yacc.c:1646  */
2733     { current->name = (streng *)(yyvsp[-2]) ;
2734                                          current->type = X_ADDR_N ;
2735                                          current->p[0] = (yyvsp[-1]) ;
2736                                          current->p[1] = (yyvsp[0]) ; }
2737 #line 2736 "../yaccsrc.c" /* yacc.c:1646  */
2738     break;
2739 
2740   case 99:
2741 #line 394 "../yaccsrc.y" /* yacc.c:1646  */
2742     { current->type = X_ADDR_V ;
2743                                          current->p[0] = (yyvsp[-3]) ;
2744                                          current->p[1] = (yyvsp[0]) ;
2745                                          current->u.nonansi = 1 ; }
2746 #line 2745 "../yaccsrc.c" /* yacc.c:1646  */
2747     break;
2748 
2749   case 100:
2750 #line 400 "../yaccsrc.y" /* yacc.c:1646  */
2751     { (yyval) = makenode( X_PARSE, 2, (yyvsp[-1]), (yyvsp[0]) );
2752                                          (yyval)->u.parseflags = PARSE_UPPER;
2753                                          (yyval)->lineno = (yyvsp[-1])->lineno;
2754                                          (yyval)->charnr = (yyvsp[-1])->charnr; }
2755 #line 2754 "../yaccsrc.c" /* yacc.c:1646  */
2756     break;
2757 
2758   case 101:
2759 #line 406 "../yaccsrc.y" /* yacc.c:1646  */
2760     { parendepth = start_parendepth; }
2761 #line 2760 "../yaccsrc.c" /* yacc.c:1646  */
2762     break;
2763 
2764   case 102:
2765 #line 407 "../yaccsrc.y" /* yacc.c:1646  */
2766     { (yyval) = (yyvsp[-3]);
2767                                          (yyval)->p[0] = (yyvsp[0]);
2768                                          (yyval)->name = (streng *) (yyvsp[-2]);
2769                                          parendepth = 0; }
2770 #line 2769 "../yaccsrc.c" /* yacc.c:1646  */
2771     break;
2772 
2773   case 103:
2774 #line 411 "../yaccsrc.y" /* yacc.c:1646  */
2775     { parendepth = start_parendepth; }
2776 #line 2775 "../yaccsrc.c" /* yacc.c:1646  */
2777     break;
2778 
2779   case 104:
2780 #line 412 "../yaccsrc.y" /* yacc.c:1646  */
2781     { (yyval) = (yyvsp[-3]);
2782                                          (yyval)->type = X_EX_FUNC;
2783                                          (yyval)->p[0] = (yyvsp[0]);
2784                                          (yyval)->name = (streng *) (yyvsp[-2]);
2785                                          parendepth = 0; }
2786 #line 2785 "../yaccsrc.c" /* yacc.c:1646  */
2787     break;
2788 
2789   case 105:
2790 #line 417 "../yaccsrc.y" /* yacc.c:1646  */
2791     { exiterror( ERR_INV_SUBKEYWORD, 1, "ERROR FAILURE HALT NOTREADY", __reginatext ) ;}
2792 #line 2791 "../yaccsrc.c" /* yacc.c:1646  */
2793     break;
2794 
2795   case 106:
2796 #line 418 "../yaccsrc.y" /* yacc.c:1646  */
2797     { exiterror( ERR_INV_SUBKEYWORD, 2, "ERROR FAILURE HALT NOTREADY", __reginatext ) ;}
2798 #line 2797 "../yaccsrc.c" /* yacc.c:1646  */
2799     break;
2800 
2801   case 107:
2802 #line 419 "../yaccsrc.y" /* yacc.c:1646  */
2803     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
2804 #line 2803 "../yaccsrc.c" /* yacc.c:1646  */
2805     break;
2806 
2807   case 108:
2808 #line 420 "../yaccsrc.y" /* yacc.c:1646  */
2809     { exiterror( ERR_STRING_EXPECTED, 3, __reginatext ) ;}
2810 #line 2809 "../yaccsrc.c" /* yacc.c:1646  */
2811     break;
2812 
2813   case 109:
2814 #line 422 "../yaccsrc.y" /* yacc.c:1646  */
2815     { (yyval) = (yyvsp[-3]) ;
2816                                          (yyval)->type = X_CALL_SET ;
2817                                          (yyval)->p[0] = (yyvsp[-2]) ;
2818                                          (yyval)->name = (streng *)(yyvsp[0]) ;
2819                                          (yyval)->p[1] = (yyvsp[-1]) ; }
2820 #line 2819 "../yaccsrc.c" /* yacc.c:1646  */
2821     break;
2822 
2823   case 110:
2824 #line 427 "../yaccsrc.y" /* yacc.c:1646  */
2825     { (yyval) = (yyvsp[-2]) ;
2826                                          (yyval)->type = X_CALL_SET ;
2827                                          (yyval)->p[0] = (yyvsp[-1]) ;
2828                                          (yyval)->name = NULL ;
2829                                          (yyval)->p[1] = (yyvsp[0]) ; }
2830 #line 2829 "../yaccsrc.c" /* yacc.c:1646  */
2831     break;
2832 
2833   case 111:
2834 #line 432 "../yaccsrc.y" /* yacc.c:1646  */
2835     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
2836 #line 2835 "../yaccsrc.c" /* yacc.c:1646  */
2837     break;
2838 
2839   case 112:
2840 #line 433 "../yaccsrc.y" /* yacc.c:1646  */
2841     { (yyval) = (yyvsp[-2]) ;
2842                                          (yyval)->type = X_CALL_SET ;
2843                                          (yyval)->p[0] = (yyvsp[-1]) ;
2844                                          (yyval)->p[1] = (yyvsp[0]) ; }
2845 #line 2844 "../yaccsrc.c" /* yacc.c:1646  */
2846     break;
2847 
2848   case 113:
2849 #line 439 "../yaccsrc.y" /* yacc.c:1646  */
2850     { (yyval) = (yyvsp[0]); }
2851 #line 2850 "../yaccsrc.c" /* yacc.c:1646  */
2852     break;
2853 
2854   case 114:
2855 #line 440 "../yaccsrc.y" /* yacc.c:1646  */
2856     { exiterror( ERR_STRING_EXPECTED, 2, __reginatext );}
2857 #line 2856 "../yaccsrc.c" /* yacc.c:1646  */
2858     break;
2859 
2860   case 115:
2861 #line 443 "../yaccsrc.y" /* yacc.c:1646  */
2862     {
2863                                          /*
2864                                           * "call_args" accepted probably with
2865                                           * surrounding parentheses. Strip them.
2866                                           */
2867                                          (yyval) = reduce_expr_list( (yyvsp[0]),
2868                                                                 REDUCE_CALL );
2869                                        }
2870 #line 2869 "../yaccsrc.c" /* yacc.c:1646  */
2871     break;
2872 
2873   case 116:
2874 #line 451 "../yaccsrc.y" /* yacc.c:1646  */
2875     { exiterror(ERR_UNEXPECTED_PARAN, 2); }
2876 #line 2875 "../yaccsrc.c" /* yacc.c:1646  */
2877     break;
2878 
2879   case 117:
2880 #line 454 "../yaccsrc.y" /* yacc.c:1646  */
2881     { (yyval) = makenode(X_COMMAND,0) ;
2882                                          (yyval)->charnr = tmpchr ;
2883                                          (yyval)->lineno = tmplno;
2884                                          (yyval)->p[0] = (yyvsp[0]) ; }
2885 #line 2884 "../yaccsrc.c" /* yacc.c:1646  */
2886     break;
2887 
2888   case 118:
2889 #line 460 "../yaccsrc.y" /* yacc.c:1646  */
2890     { (yyval) = makenode(X_END,0) ;
2891                                          (yyval)->lineno = parser_data.tline ;
2892                                          (yyval)->charnr = parser_data.tstart ;
2893                                          level--; }
2894 #line 2893 "../yaccsrc.c" /* yacc.c:1646  */
2895     break;
2896 
2897   case 119:
2898 #line 466 "../yaccsrc.y" /* yacc.c:1646  */
2899     { (yyval) = (yyvsp[-1]) ;
2900                                          (yyval)->name = (streng*)((yyvsp[0])) ; }
2901 #line 2900 "../yaccsrc.c" /* yacc.c:1646  */
2902     break;
2903 
2904   case 120:
2905 #line 468 "../yaccsrc.y" /* yacc.c:1646  */
2906     { (yyval) = (yyvsp[0]) ; }
2907 #line 2906 "../yaccsrc.c" /* yacc.c:1646  */
2908     break;
2909 
2910   case 121:
2911 #line 469 "../yaccsrc.y" /* yacc.c:1646  */
2912     {  exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
2913 #line 2912 "../yaccsrc.c" /* yacc.c:1646  */
2914     break;
2915 
2916   case 122:
2917 #line 473 "../yaccsrc.y" /* yacc.c:1646  */
2918     { (yyval) = (yyvsp[-5]);
2919                                          (yyval)->p[0] = (yyvsp[-4]);
2920                                          (yyval)->p[1] = (yyvsp[-3]);
2921                                          (yyval)->p[2] = optgluelast( (yyvsp[-2]), (yyvsp[-1]) );
2922                                          if ( (yyval)->p[2] )
2923                                             (yyval)->p[2]->o.last = NULL;
2924                                          (yyval)->p[3] = (yyvsp[0]);
2925                           if (((yyval)->p[0]==NULL || (yyval)->p[0]->name==NULL)
2926                               && (yyval)->p[3]->name)
2927                                             exiterror( ERR_UNMATCHED_END, 0 );
2928                           if (((yyval)->p[0])&&((yyval)->p[0]->name)&&
2929                               ((yyval)->p[3]->name)&&
2930                               (((yyval)->p[3]->name->len != (yyval)->p[0]->name->len)||
2931                                (strncmp((yyval)->p[3]->name->value,
2932                                         (yyval)->p[0]->name->value,
2933                                         (yyval)->p[0]->name->len))))
2934                                             exiterror( ERR_UNMATCHED_END, 0 );
2935                                        }
2936 #line 2935 "../yaccsrc.c" /* yacc.c:1646  */
2937     break;
2938 
2939   case 123:
2940 #line 494 "../yaccsrc.y" /* yacc.c:1646  */
2941     { (yyval) =makenode(X_REP,4,(yyvsp[-4]),(yyvsp[-2]),(yyvsp[-1]),(yyvsp[0])) ;
2942                                          (yyval)->name = (streng *)(yyvsp[-6]) ;
2943                                          checkdosyntax((yyval)) ; }
2944 #line 2943 "../yaccsrc.c" /* yacc.c:1646  */
2945     break;
2946 
2947   case 124:
2948 #line 498 "../yaccsrc.y" /* yacc.c:1646  */
2949     { (yyval) =makenode(X_REP,3,(yyvsp[-3]),(yyvsp[-1]),(yyvsp[0])) ;
2950                                          (yyval)->name = (streng *)(yyvsp[-5]) ;
2951                                          checkdosyntax((yyval)) ; }
2952 #line 2951 "../yaccsrc.c" /* yacc.c:1646  */
2953     break;
2954 
2955   case 125:
2956 #line 502 "../yaccsrc.y" /* yacc.c:1646  */
2957     { (yyval) = makenode(X_REP,2,(yyvsp[-2]),(yyvsp[0])) ;
2958                                          (yyval)->name = (streng *)(yyvsp[-4]) ;
2959                                          checkdosyntax((yyval)) ; }
2960 #line 2959 "../yaccsrc.c" /* yacc.c:1646  */
2961     break;
2962 
2963   case 126:
2964 #line 505 "../yaccsrc.y" /* yacc.c:1646  */
2965     { (yyval) = makenode(X_REP,1,(yyvsp[-1])) ;
2966                                          (yyval)->name = (streng *)(yyvsp[-3]) ;
2967                                          checkdosyntax((yyval)) ; }
2968 #line 2967 "../yaccsrc.c" /* yacc.c:1646  */
2969     break;
2970 
2971   case 127:
2972 #line 508 "../yaccsrc.y" /* yacc.c:1646  */
2973     { (yyval) = makenode(X_REP_FOREVER,0) ; }
2974 #line 2973 "../yaccsrc.c" /* yacc.c:1646  */
2975     break;
2976 
2977   case 128:
2978 #line 509 "../yaccsrc.y" /* yacc.c:1646  */
2979     { exiterror( ERR_INV_SUBKEYWORD, 16, "WHILE UNTIL", __reginatext ) ; }
2980 #line 2979 "../yaccsrc.c" /* yacc.c:1646  */
2981     break;
2982 
2983   case 129:
2984 #line 510 "../yaccsrc.y" /* yacc.c:1646  */
2985     { (yyvsp[-1]) = makenode(X_DO_EXPR,1,(yyvsp[-1])) ;
2986                                          (yyval) = makenode(X_REP,2,NULL,(yyvsp[-1])) ; }
2987 #line 2986 "../yaccsrc.c" /* yacc.c:1646  */
2988     break;
2989 
2990   case 130:
2991 #line 512 "../yaccsrc.y" /* yacc.c:1646  */
2992     { (yyval) = NULL ; }
2993 #line 2992 "../yaccsrc.c" /* yacc.c:1646  */
2994     break;
2995 
2996   case 131:
2997 #line 515 "../yaccsrc.y" /* yacc.c:1646  */
2998     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
2999 #line 2998 "../yaccsrc.c" /* yacc.c:1646  */
3000     break;
3001 
3002   case 132:
3003 #line 516 "../yaccsrc.y" /* yacc.c:1646  */
3004     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
3005 #line 3004 "../yaccsrc.c" /* yacc.c:1646  */
3006     break;
3007 
3008   case 133:
3009 #line 517 "../yaccsrc.y" /* yacc.c:1646  */
3010     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
3011 #line 3010 "../yaccsrc.c" /* yacc.c:1646  */
3012     break;
3013 
3014   case 134:
3015 #line 520 "../yaccsrc.y" /* yacc.c:1646  */
3016     { SymbolDetect |= SD_ADDRWITH ;
3017                                          (yyval) = with = makenode(X_ADDR_WITH,0) ;
3018                                          (yyval)->lineno = parser_data.tline ;
3019                                          (yyval)->charnr = parser_data.tstart ; }
3020 #line 3019 "../yaccsrc.c" /* yacc.c:1646  */
3021     break;
3022 
3023   case 135:
3024 #line 524 "../yaccsrc.y" /* yacc.c:1646  */
3025     { with = NULL ;
3026                                          SymbolDetect &= ~SD_ADDRWITH ; }
3027 #line 3026 "../yaccsrc.c" /* yacc.c:1646  */
3028     break;
3029 
3030   case 136:
3031 #line 526 "../yaccsrc.y" /* yacc.c:1646  */
3032     { (yyval) = NULL ; }
3033 #line 3032 "../yaccsrc.c" /* yacc.c:1646  */
3034     break;
3035 
3036   case 137:
3037 #line 529 "../yaccsrc.y" /* yacc.c:1646  */
3038     { (yyval) = (yyvsp[0]); }
3039 #line 3038 "../yaccsrc.c" /* yacc.c:1646  */
3040     break;
3041 
3042   case 138:
3043 #line 530 "../yaccsrc.y" /* yacc.c:1646  */
3044     { exiterror( ERR_INV_SUBKEYWORD, 5, __reginatext ) ; }
3045 #line 3044 "../yaccsrc.c" /* yacc.c:1646  */
3046     break;
3047 
3048   case 139:
3049 #line 531 "../yaccsrc.y" /* yacc.c:1646  */
3050     { exiterror( ERR_INV_SUBKEYWORD, 5, __reginatext ) ; }
3051 #line 3050 "../yaccsrc.c" /* yacc.c:1646  */
3052     break;
3053 
3054   case 143:
3055 #line 537 "../yaccsrc.y" /* yacc.c:1646  */
3056     { exiterror( ERR_INV_SUBKEYWORD, 5, __reginatext ) ; }
3057 #line 3056 "../yaccsrc.c" /* yacc.c:1646  */
3058     break;
3059 
3060   case 162:
3061 #line 573 "../yaccsrc.y" /* yacc.c:1646  */
3062     { with->p[0] = (yyvsp[0]); }
3063 #line 3062 "../yaccsrc.c" /* yacc.c:1646  */
3064     break;
3065 
3066   case 163:
3067 #line 574 "../yaccsrc.y" /* yacc.c:1646  */
3068     { exiterror( ERR_INV_SUBKEYWORD, 6, __reginatext ) ; }
3069 #line 3068 "../yaccsrc.c" /* yacc.c:1646  */
3070     break;
3071 
3072   case 164:
3073 #line 577 "../yaccsrc.y" /* yacc.c:1646  */
3074     { with->p[1] = (yyvsp[0]); }
3075 #line 3074 "../yaccsrc.c" /* yacc.c:1646  */
3076     break;
3077 
3078   case 165:
3079 #line 578 "../yaccsrc.y" /* yacc.c:1646  */
3080     { exiterror( ERR_INV_SUBKEYWORD, 7, __reginatext ) ; }
3081 #line 3080 "../yaccsrc.c" /* yacc.c:1646  */
3082     break;
3083 
3084   case 166:
3085 #line 581 "../yaccsrc.y" /* yacc.c:1646  */
3086     { with->p[2] = (yyvsp[0]); }
3087 #line 3086 "../yaccsrc.c" /* yacc.c:1646  */
3088     break;
3089 
3090   case 167:
3091 #line 582 "../yaccsrc.y" /* yacc.c:1646  */
3092     { exiterror( ERR_INV_SUBKEYWORD, 14, __reginatext ) ; }
3093 #line 3092 "../yaccsrc.c" /* yacc.c:1646  */
3094     break;
3095 
3096   case 168:
3097 #line 585 "../yaccsrc.y" /* yacc.c:1646  */
3098     { (yyval) = (yyvsp[0]) ; }
3099 #line 3098 "../yaccsrc.c" /* yacc.c:1646  */
3100     break;
3101 
3102   case 169:
3103 #line 586 "../yaccsrc.y" /* yacc.c:1646  */
3104     { (yyval) = (yyvsp[0]) ;
3105                                          (yyval)->u.of.noeol = 1 ; }
3106 #line 3105 "../yaccsrc.c" /* yacc.c:1646  */
3107     break;
3108 
3109   case 170:
3110 #line 588 "../yaccsrc.y" /* yacc.c:1646  */
3111     { exiterror( ERR_INV_SUBKEYWORD, 8, __reginatext ) ; }
3112 #line 3111 "../yaccsrc.c" /* yacc.c:1646  */
3113     break;
3114 
3115   case 171:
3116 #line 589 "../yaccsrc.y" /* yacc.c:1646  */
3117     { (yyval) = makenode(X_ADDR_WITH, 0) ;
3118                                          (yyval)->lineno = parser_data.tline ;
3119                                          (yyval)->charnr = parser_data.tstart ; }
3120 #line 3119 "../yaccsrc.c" /* yacc.c:1646  */
3121     break;
3122 
3123   case 172:
3124 #line 594 "../yaccsrc.y" /* yacc.c:1646  */
3125     { (yyval) = (yyvsp[0]) ; }
3126 #line 3125 "../yaccsrc.c" /* yacc.c:1646  */
3127     break;
3128 
3129   case 173:
3130 #line 595 "../yaccsrc.y" /* yacc.c:1646  */
3131     { (yyval) = (yyvsp[0]) ;
3132                                          (yyval)->u.of.append = 1 ; }
3133 #line 3132 "../yaccsrc.c" /* yacc.c:1646  */
3134     break;
3135 
3136   case 174:
3137 #line 597 "../yaccsrc.y" /* yacc.c:1646  */
3138     { exiterror( ERR_INV_SUBKEYWORD, 8, __reginatext ) ; }
3139 #line 3138 "../yaccsrc.c" /* yacc.c:1646  */
3140     break;
3141 
3142   case 175:
3143 #line 598 "../yaccsrc.y" /* yacc.c:1646  */
3144     { (yyval) = (yyvsp[0]) ; }
3145 #line 3144 "../yaccsrc.c" /* yacc.c:1646  */
3146     break;
3147 
3148   case 176:
3149 #line 599 "../yaccsrc.y" /* yacc.c:1646  */
3150     { exiterror( ERR_INV_SUBKEYWORD, 9, __reginatext ) ; }
3151 #line 3150 "../yaccsrc.c" /* yacc.c:1646  */
3152     break;
3153 
3154   case 177:
3155 #line 600 "../yaccsrc.y" /* yacc.c:1646  */
3156     { (yyval) = makenode(X_ADDR_WITH, 0) ;
3157                                          (yyval)->lineno = parser_data.tline ;
3158                                          (yyval)->charnr = parser_data.tstart ; }
3159 #line 3158 "../yaccsrc.c" /* yacc.c:1646  */
3160     break;
3161 
3162   case 178:
3163 #line 605 "../yaccsrc.y" /* yacc.c:1646  */
3164     { /* ANSI extension: nsimsymb is
3165                                           * used by the standard, but I think
3166                                           * there are no reasons why using
3167                                           * it here as a must. FGC
3168                                           */
3169                                          (yyval) = (yyvsp[0]) ;
3170                                          (yyval)->u.of.awt = awtSTREAM;
3171                                          SymbolDetect |= SD_ADDRWITH ; }
3172 #line 3171 "../yaccsrc.c" /* yacc.c:1646  */
3173     break;
3174 
3175   case 179:
3176 #line 613 "../yaccsrc.y" /* yacc.c:1646  */
3177     { exiterror( ERR_INVALID_OPTION, 1, __reginatext ) ; }
3178 #line 3177 "../yaccsrc.c" /* yacc.c:1646  */
3179     break;
3180 
3181   case 180:
3182 #line 614 "../yaccsrc.y" /* yacc.c:1646  */
3183     {
3184                                          streng *tmp = (yyvsp[0])->name;
3185                                          char *p;
3186 
3187                                          /*
3188                                           * expect a single dot as the last character
3189                                           */
3190                                          p = (char *)memchr( tmp->value, '.', tmp->len );
3191                                          if ( p != tmp->value + tmp->len - 1 )
3192                                             exiterror( ERR_INVALID_OPTION, 3, __reginatext );
3193                                          (yyval) = (yyvsp[0]) ;
3194                                          (yyval)->u.of.awt = awtSTEM ;
3195                                          SymbolDetect |= SD_ADDRWITH ; }
3196 #line 3195 "../yaccsrc.c" /* yacc.c:1646  */
3197     break;
3198 
3199   case 181:
3200 #line 627 "../yaccsrc.y" /* yacc.c:1646  */
3201     { exiterror( ERR_INVALID_OPTION, 2, __reginatext ) ; }
3202 #line 3201 "../yaccsrc.c" /* yacc.c:1646  */
3203     break;
3204 
3205   case 182:
3206 #line 628 "../yaccsrc.y" /* yacc.c:1646  */
3207     {
3208                                          (yyval) = (yyvsp[0]) ;
3209                                          (yyval)->u.of.awt = awtLIFO ;
3210                                          SymbolDetect |= SD_ADDRWITH ; }
3211 #line 3210 "../yaccsrc.c" /* yacc.c:1646  */
3212     break;
3213 
3214   case 183:
3215 #line 632 "../yaccsrc.y" /* yacc.c:1646  */
3216     { exiterror( ERR_INVALID_OPTION, 100, __reginatext ) ; }
3217 #line 3216 "../yaccsrc.c" /* yacc.c:1646  */
3218     break;
3219 
3220   case 184:
3221 #line 633 "../yaccsrc.y" /* yacc.c:1646  */
3222     {
3223                                          (yyval) = (yyvsp[0]) ;
3224                                          (yyval)->u.of.awt = awtFIFO ;
3225                                          SymbolDetect |= SD_ADDRWITH ; }
3226 #line 3225 "../yaccsrc.c" /* yacc.c:1646  */
3227     break;
3228 
3229   case 185:
3230 #line 637 "../yaccsrc.y" /* yacc.c:1646  */
3231     { exiterror( ERR_INVALID_OPTION, 101, __reginatext ) ; }
3232 #line 3231 "../yaccsrc.c" /* yacc.c:1646  */
3233     break;
3234 
3235   case 186:
3236 #line 640 "../yaccsrc.y" /* yacc.c:1646  */
3237     { SymbolDetect &= ~SD_ADDRWITH ; }
3238 #line 3237 "../yaccsrc.c" /* yacc.c:1646  */
3239     break;
3240 
3241   case 187:
3242 #line 641 "../yaccsrc.y" /* yacc.c:1646  */
3243     { (yyval) = (yyvsp[0]) ; }
3244 #line 3243 "../yaccsrc.c" /* yacc.c:1646  */
3245     break;
3246 
3247   case 188:
3248 #line 644 "../yaccsrc.y" /* yacc.c:1646  */
3249     { SymbolDetect &= ~SD_ADDRWITH ; }
3250 #line 3249 "../yaccsrc.c" /* yacc.c:1646  */
3251     break;
3252 
3253   case 189:
3254 #line 645 "../yaccsrc.y" /* yacc.c:1646  */
3255     { (yyval) = (yyvsp[0]) ; }
3256 #line 3255 "../yaccsrc.c" /* yacc.c:1646  */
3257     break;
3258 
3259   case 192:
3260 #line 652 "../yaccsrc.y" /* yacc.c:1646  */
3261     { (yyval) = (yyvsp[0]) ; }
3262 #line 3261 "../yaccsrc.c" /* yacc.c:1646  */
3263     break;
3264 
3265   case 193:
3266 #line 653 "../yaccsrc.y" /* yacc.c:1646  */
3267     { (yyval) = (yyvsp[0]) ; }
3268 #line 3267 "../yaccsrc.c" /* yacc.c:1646  */
3269     break;
3270 
3271   case 194:
3272 #line 656 "../yaccsrc.y" /* yacc.c:1646  */
3273     { (yyval) = makenode(X_ADDR_WITH, 0) ;
3274                                          (yyval)->name = (streng *) (yyvsp[0]) ;
3275                                          (yyval)->lineno = parser_data.tline ;
3276                                          (yyval)->charnr = parser_data.tstart ;
3277                                          (yyval)->u.of.ant = antSIMSYMBOL;
3278                                        }
3279 #line 3278 "../yaccsrc.c" /* yacc.c:1646  */
3280     break;
3281 
3282   case 195:
3283 #line 664 "../yaccsrc.y" /* yacc.c:1646  */
3284     { (yyval) = makenode(X_ADDR_WITH, 0) ;
3285                                          (yyval)->name = (streng *) (yyvsp[0]) ;
3286                                          (yyval)->lineno = parser_data.tline ;
3287                                          (yyval)->charnr = parser_data.tstart ;
3288                                          (yyval)->u.of.ant = antSTRING;
3289                                        }
3290 #line 3289 "../yaccsrc.c" /* yacc.c:1646  */
3291     break;
3292 
3293   case 196:
3294 #line 672 "../yaccsrc.y" /* yacc.c:1646  */
3295     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
3296 #line 3295 "../yaccsrc.c" /* yacc.c:1646  */
3297     break;
3298 
3299   case 197:
3300 #line 675 "../yaccsrc.y" /* yacc.c:1646  */
3301     { (yyval) = makenode(X_DO_TO,1,(yyvsp[-1])) ; }
3302 #line 3301 "../yaccsrc.c" /* yacc.c:1646  */
3303     break;
3304 
3305   case 198:
3306 #line 676 "../yaccsrc.y" /* yacc.c:1646  */
3307     { (yyval) = makenode(X_DO_FOR,1,(yyvsp[-1])) ; }
3308 #line 3307 "../yaccsrc.c" /* yacc.c:1646  */
3309     break;
3310 
3311   case 199:
3312 #line 677 "../yaccsrc.y" /* yacc.c:1646  */
3313     { (yyval) = makenode(X_DO_BY,1,(yyvsp[-1])) ; }
3314 #line 3313 "../yaccsrc.c" /* yacc.c:1646  */
3315     break;
3316 
3317   case 200:
3318 #line 680 "../yaccsrc.y" /* yacc.c:1646  */
3319     { (yyval) = makenode(X_WHILE,1,(yyvsp[-1])) ; }
3320 #line 3319 "../yaccsrc.c" /* yacc.c:1646  */
3321     break;
3322 
3323   case 201:
3324 #line 681 "../yaccsrc.y" /* yacc.c:1646  */
3325     { (yyval) = makenode(X_UNTIL,1,(yyvsp[-1])) ; }
3326 #line 3325 "../yaccsrc.c" /* yacc.c:1646  */
3327     break;
3328 
3329   case 202:
3330 #line 682 "../yaccsrc.y" /* yacc.c:1646  */
3331     { (yyval) = NULL ; }
3332 #line 3331 "../yaccsrc.c" /* yacc.c:1646  */
3333     break;
3334 
3335   case 203:
3336 #line 685 "../yaccsrc.y" /* yacc.c:1646  */
3337     { exiterror( ERR_SYMBOL_EXPECTED, 1, __reginatext ) ;}
3338 #line 3337 "../yaccsrc.c" /* yacc.c:1646  */
3339     break;
3340 
3341   case 204:
3342 #line 686 "../yaccsrc.y" /* yacc.c:1646  */
3343     { (yyval) = (yyvsp[-1]) ;
3344                                          (yyval)->p[0] = (yyvsp[0]) ; }
3345 #line 3344 "../yaccsrc.c" /* yacc.c:1646  */
3346     break;
3347 
3348   case 205:
3349 #line 690 "../yaccsrc.y" /* yacc.c:1646  */
3350     { exiterror( ERR_SYMBOL_EXPECTED, 1, __reginatext ) ;}
3351 #line 3350 "../yaccsrc.c" /* yacc.c:1646  */
3352     break;
3353 
3354   case 206:
3355 #line 691 "../yaccsrc.y" /* yacc.c:1646  */
3356     { (yyval) = (yyvsp[-1]) ;
3357                                          (yyval)->p[0] = (yyvsp[0]) ; }
3358 #line 3357 "../yaccsrc.c" /* yacc.c:1646  */
3359     break;
3360 
3361   case 207:
3362 #line 695 "../yaccsrc.y" /* yacc.c:1646  */
3363     { (yyval) = (yyvsp[-1]) ;
3364                                          (yyval)->p[0] = (yyvsp[0]) ; }
3365 #line 3364 "../yaccsrc.c" /* yacc.c:1646  */
3366     break;
3367 
3368   case 208:
3369 #line 700 "../yaccsrc.y" /* yacc.c:1646  */
3370     { move_labels( (yyvsp[-5]), (yyvsp[0]), level - 1 );
3371                                          (yyval) = (yyvsp[-5]);
3372                                          (yyval)->p[0] = optgluelast( (yyvsp[-4]), (yyvsp[-3]) );
3373                                          (yyval)->p[0]->o.last = NULL;
3374                                          (yyval)->p[1] = optgluelast( (yyvsp[-1]), (yyvsp[0]) );
3375                                          (yyval)->p[1]->o.last = NULL;
3376                                          level--; }
3377 #line 3376 "../yaccsrc.c" /* yacc.c:1646  */
3378     break;
3379 
3380   case 209:
3381 #line 708 "../yaccsrc.y" /* yacc.c:1646  */
3382     { move_labels( (yyvsp[-8]), (yyvsp[0]), level - 1 );
3383                                          (yyval) = (yyvsp[-8]);
3384                                          (yyval)->p[0] = optgluelast( (yyvsp[-7]), (yyvsp[-6]) );
3385                                          (yyval)->p[0]->o.last = NULL;
3386                                          (yyval)->p[1] = optgluelast( (yyvsp[-4]), (yyvsp[-3]) );
3387                                          (yyval)->p[1]->o.last = NULL;
3388                                          (yyval)->p[2] = optgluelast( (yyvsp[-1]), (yyvsp[0]) );
3389                                          (yyval)->p[2]->o.last = NULL;
3390                                          level--; }
3391 #line 3390 "../yaccsrc.c" /* yacc.c:1646  */
3392     break;
3393 
3394   case 210:
3395 #line 718 "../yaccsrc.y" /* yacc.c:1646  */
3396     {  exiterror( ERR_INCOMPLETE_STRUCT, 4 ) ;}
3397 #line 3396 "../yaccsrc.c" /* yacc.c:1646  */
3398     break;
3399 
3400   case 211:
3401 #line 720 "../yaccsrc.y" /* yacc.c:1646  */
3402     {  exiterror( ERR_INCOMPLETE_STRUCT, 3 ) ;}
3403 #line 3402 "../yaccsrc.c" /* yacc.c:1646  */
3404     break;
3405 
3406   case 212:
3407 #line 721 "../yaccsrc.y" /* yacc.c:1646  */
3408     {  exiterror( ERR_INCOMPLETE_STRUCT, 0 ) ;}
3409 #line 3408 "../yaccsrc.c" /* yacc.c:1646  */
3410     break;
3411 
3412   case 213:
3413 #line 722 "../yaccsrc.y" /* yacc.c:1646  */
3414     {  exiterror( ERR_THEN_EXPECTED, 1, parser_data.if_linenr, __reginatext )  ; }
3415 #line 3414 "../yaccsrc.c" /* yacc.c:1646  */
3416     break;
3417 
3418   case 214:
3419 #line 725 "../yaccsrc.y" /* yacc.c:1646  */
3420     {  exiterror( ERR_THEN_UNEXPECTED, 1 )  ; }
3421 #line 3420 "../yaccsrc.c" /* yacc.c:1646  */
3422     break;
3423 
3424   case 215:
3425 #line 728 "../yaccsrc.y" /* yacc.c:1646  */
3426     {  exiterror( ERR_THEN_UNEXPECTED, 2 )  ; }
3427 #line 3426 "../yaccsrc.c" /* yacc.c:1646  */
3428     break;
3429 
3430   case 216:
3431 #line 731 "../yaccsrc.y" /* yacc.c:1646  */
3432     { (yyval) = (yyvsp[-1]) ;
3433                                          (yyval)->p[0] = (yyvsp[0]) ; }
3434 #line 3433 "../yaccsrc.c" /* yacc.c:1646  */
3435     break;
3436 
3437   case 217:
3438 #line 736 "../yaccsrc.y" /* yacc.c:1646  */
3439     { (yyval) = (yyvsp[-1]) ;
3440                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
3441 #line 3440 "../yaccsrc.c" /* yacc.c:1646  */
3442     break;
3443 
3444   case 218:
3445 #line 738 "../yaccsrc.y" /* yacc.c:1646  */
3446     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3447 #line 3446 "../yaccsrc.c" /* yacc.c:1646  */
3448     break;
3449 
3450   case 219:
3451 #line 739 "../yaccsrc.y" /* yacc.c:1646  */
3452     { (yyval) = (yyvsp[0]) ; }
3453 #line 3452 "../yaccsrc.c" /* yacc.c:1646  */
3454     break;
3455 
3456   case 220:
3457 #line 742 "../yaccsrc.y" /* yacc.c:1646  */
3458     { (yyval) = (yyvsp[0]) ;
3459                                          (yyval)->u.trace_only =
3460                                                          (level == 0) ? 0 : 1;
3461                                          newlabel( (const tsd_t *)parser_data.TSD,
3462                                                    &parser_data,
3463                                                    (yyvsp[0]) ) ; }
3464 #line 3463 "../yaccsrc.c" /* yacc.c:1646  */
3465     break;
3466 
3467   case 221:
3468 #line 750 "../yaccsrc.y" /* yacc.c:1646  */
3469     { (yyval) = (yyvsp[0]) ;
3470                                          (yyval)->name = Str_cre_TSD(parser_data.TSD,retvalue) ; }
3471 #line 3470 "../yaccsrc.c" /* yacc.c:1646  */
3472     break;
3473 
3474   case 222:
3475 #line 754 "../yaccsrc.y" /* yacc.c:1646  */
3476     { (yyval) = (yyvsp[-1]) ;
3477                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
3478 #line 3477 "../yaccsrc.c" /* yacc.c:1646  */
3479     break;
3480 
3481   case 223:
3482 #line 756 "../yaccsrc.y" /* yacc.c:1646  */
3483     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3484 #line 3483 "../yaccsrc.c" /* yacc.c:1646  */
3485     break;
3486 
3487   case 224:
3488 #line 757 "../yaccsrc.y" /* yacc.c:1646  */
3489     { (yyval) = (yyvsp[0]) ; }
3490 #line 3489 "../yaccsrc.c" /* yacc.c:1646  */
3491     break;
3492 
3493   case 225:
3494 #line 760 "../yaccsrc.y" /* yacc.c:1646  */
3495     { (yyval) = (yyvsp[0]) ; }
3496 #line 3495 "../yaccsrc.c" /* yacc.c:1646  */
3497     break;
3498 
3499   case 226:
3500 #line 761 "../yaccsrc.y" /* yacc.c:1646  */
3501     {  exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3502 #line 3501 "../yaccsrc.c" /* yacc.c:1646  */
3503     break;
3504 
3505   case 227:
3506 #line 764 "../yaccsrc.y" /* yacc.c:1646  */
3507     { (yyval) = (yyvsp[-2]) ;
3508                                          (yyval)->type = X_NUM_D ;
3509                                          (yyval)->p[0] = (yyvsp[0]) ; }
3510 #line 3509 "../yaccsrc.c" /* yacc.c:1646  */
3511     break;
3512 
3513   case 228:
3514 #line 767 "../yaccsrc.y" /* yacc.c:1646  */
3515     { (yyval) = (yyvsp[-1]); (yyval)->type = X_NUM_DDEF ; }
3516 #line 3515 "../yaccsrc.c" /* yacc.c:1646  */
3517     break;
3518 
3519   case 229:
3520 #line 768 "../yaccsrc.y" /* yacc.c:1646  */
3521     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3522 #line 3521 "../yaccsrc.c" /* yacc.c:1646  */
3523     break;
3524 
3525   case 230:
3526 #line 769 "../yaccsrc.y" /* yacc.c:1646  */
3527     { (yyval) = (yyvsp[-2]) ;
3528                                          (yyval)->type = X_NUM_F ;
3529                                          (yyval)->p[0] = (yyvsp[0]) ; }
3530 #line 3529 "../yaccsrc.c" /* yacc.c:1646  */
3531     break;
3532 
3533   case 231:
3534 #line 772 "../yaccsrc.y" /* yacc.c:1646  */
3535     { /* NOTE! This clashes ANSI! */
3536                                          (yyval) = (yyvsp[-1]) ; (yyval)->type=X_NUM_FRMDEF ;}
3537 #line 3536 "../yaccsrc.c" /* yacc.c:1646  */
3538     break;
3539 
3540   case 232:
3541 #line 774 "../yaccsrc.y" /* yacc.c:1646  */
3542     { (yyval) = (yyvsp[-3]) ; (yyval)->type=X_NUM_V ;
3543                                          (yyval)->p[0] = (yyvsp[0]) ; }
3544 #line 3543 "../yaccsrc.c" /* yacc.c:1646  */
3545     break;
3546 
3547   case 233:
3548 #line 776 "../yaccsrc.y" /* yacc.c:1646  */
3549     { exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", __reginatext ) ;}
3550 #line 3549 "../yaccsrc.c" /* yacc.c:1646  */
3551     break;
3552 
3553   case 234:
3554 #line 777 "../yaccsrc.y" /* yacc.c:1646  */
3555     { (yyval) = (yyvsp[-1]); (yyval)->type = X_NUM_FDEF ;}
3556 #line 3555 "../yaccsrc.c" /* yacc.c:1646  */
3557     break;
3558 
3559   case 235:
3560 #line 778 "../yaccsrc.y" /* yacc.c:1646  */
3561     { (yyval) = (yyvsp[-2]) ;
3562                                          (yyval)->type = X_NUM_FUZZ ;
3563                                          (yyval)->p[0] = (yyvsp[0]) ; }
3564 #line 3563 "../yaccsrc.c" /* yacc.c:1646  */
3565     break;
3566 
3567   case 236:
3568 #line 781 "../yaccsrc.y" /* yacc.c:1646  */
3569     { exiterror( ERR_INV_SUBKEYWORD, 15, "DIGITS FORM FUZZ", __reginatext ) ;}
3570 #line 3569 "../yaccsrc.c" /* yacc.c:1646  */
3571     break;
3572 
3573   case 237:
3574 #line 784 "../yaccsrc.y" /* yacc.c:1646  */
3575     { (yyval) = makenode(X_NUM_SCI,0) ; }
3576 #line 3575 "../yaccsrc.c" /* yacc.c:1646  */
3577     break;
3578 
3579   case 238:
3580 #line 785 "../yaccsrc.y" /* yacc.c:1646  */
3581     { (yyval) = makenode(X_NUM_ENG,0) ; }
3582 #line 3581 "../yaccsrc.c" /* yacc.c:1646  */
3583     break;
3584 
3585   case 239:
3586 #line 788 "../yaccsrc.y" /* yacc.c:1646  */
3587     { ((yyval)=(yyvsp[-1]))->p[0]=(yyvsp[0]) ; }
3588 #line 3587 "../yaccsrc.c" /* yacc.c:1646  */
3589     break;
3590 
3591   case 240:
3592 #line 792 "../yaccsrc.y" /* yacc.c:1646  */
3593     { (yyval) = (yyvsp[-3]) ;
3594                                          (yyval)->type = X_PARSE ;
3595                                          (yyval)->u.parseflags = (int) (yyvsp[-2]) ;
3596                                          (yyval)->p[0] = (yyvsp[-1]) ;
3597                                          (yyval)->p[1] = (yyvsp[0]) ; }
3598 #line 3597 "../yaccsrc.c" /* yacc.c:1646  */
3599     break;
3600 
3601   case 241:
3602 #line 798 "../yaccsrc.y" /* yacc.c:1646  */
3603     { (yyval) = (yyvsp[-2]) ;
3604                                          (yyval)->type = X_PARSE ;
3605                                          (yyval)->u.parseflags = 0;
3606                                          (yyval)->p[0] = (yyvsp[-1]) ;
3607                                          (yyval)->p[1] = (yyvsp[0]) ; }
3608 #line 3607 "../yaccsrc.c" /* yacc.c:1646  */
3609     break;
3610 
3611   case 242:
3612 #line 803 "../yaccsrc.y" /* yacc.c:1646  */
3613     { exiterror( ERR_INV_SUBKEYWORD, 12, "ARG EXTERNAL LINEIN PULL SOURCE VAR VALUE VERSION", __reginatext ) ;}
3614 #line 3613 "../yaccsrc.c" /* yacc.c:1646  */
3615     break;
3616 
3617   case 243:
3618 #line 804 "../yaccsrc.y" /* yacc.c:1646  */
3619     { exiterror( ERR_INV_SUBKEYWORD, 12, "ARG CASELESS EXTERNAL LINEIN LOWER PULL SOURCE UPPER VAR VALUE VERSION", __reginatext ) ;}
3620 #line 3619 "../yaccsrc.c" /* yacc.c:1646  */
3621     break;
3622 
3623   case 244:
3624 #line 807 "../yaccsrc.y" /* yacc.c:1646  */
3625     { (yyval) = (nodeptr) (PARSE_UPPER  |
3626                                                          PARSE_NORMAL); }
3627 #line 3626 "../yaccsrc.c" /* yacc.c:1646  */
3628     break;
3629 
3630   case 245:
3631 #line 809 "../yaccsrc.y" /* yacc.c:1646  */
3632     { (yyval) = (nodeptr) (PARSE_UPPER  |
3633                                                          PARSE_CASELESS); }
3634 #line 3633 "../yaccsrc.c" /* yacc.c:1646  */
3635     break;
3636 
3637   case 246:
3638 #line 811 "../yaccsrc.y" /* yacc.c:1646  */
3639     { (yyval) = (nodeptr) (PARSE_UPPER  |
3640                                                          PARSE_CASELESS); }
3641 #line 3640 "../yaccsrc.c" /* yacc.c:1646  */
3642     break;
3643 
3644   case 247:
3645 #line 813 "../yaccsrc.y" /* yacc.c:1646  */
3646     { (yyval) = (nodeptr) (PARSE_LOWER  |
3647                                                          PARSE_NORMAL); }
3648 #line 3647 "../yaccsrc.c" /* yacc.c:1646  */
3649     break;
3650 
3651   case 248:
3652 #line 815 "../yaccsrc.y" /* yacc.c:1646  */
3653     { (yyval) = (nodeptr) (PARSE_LOWER  |
3654                                                          PARSE_CASELESS); }
3655 #line 3654 "../yaccsrc.c" /* yacc.c:1646  */
3656     break;
3657 
3658   case 249:
3659 #line 817 "../yaccsrc.y" /* yacc.c:1646  */
3660     { (yyval) = (nodeptr) (PARSE_LOWER  |
3661                                                          PARSE_CASELESS); }
3662 #line 3661 "../yaccsrc.c" /* yacc.c:1646  */
3663     break;
3664 
3665   case 250:
3666 #line 819 "../yaccsrc.y" /* yacc.c:1646  */
3667     { (yyval) = (nodeptr) (PARSE_NORMAL |
3668                                                          PARSE_CASELESS); }
3669 #line 3668 "../yaccsrc.c" /* yacc.c:1646  */
3670     break;
3671 
3672   case 251:
3673 #line 823 "../yaccsrc.y" /* yacc.c:1646  */
3674     { /* fixes bugs like bug 579711 */
3675                                          (yyval) = optgluelast( (yyvsp[-2]), (yyvsp[0]) ); }
3676 #line 3675 "../yaccsrc.c" /* yacc.c:1646  */
3677     break;
3678 
3679   case 252:
3680 #line 825 "../yaccsrc.y" /* yacc.c:1646  */
3681     { (yyval) = (yyvsp[0]) ; }
3682 #line 3681 "../yaccsrc.c" /* yacc.c:1646  */
3683     break;
3684 
3685   case 253:
3686 #line 828 "../yaccsrc.y" /* yacc.c:1646  */
3687     { (yyval) = makenode(X_PARSE_ARG,0) ; }
3688 #line 3687 "../yaccsrc.c" /* yacc.c:1646  */
3689     break;
3690 
3691   case 254:
3692 #line 829 "../yaccsrc.y" /* yacc.c:1646  */
3693     { (yyval) = makenode(X_PARSE_EXT,0) ; }
3694 #line 3693 "../yaccsrc.c" /* yacc.c:1646  */
3695     break;
3696 
3697   case 255:
3698 #line 830 "../yaccsrc.y" /* yacc.c:1646  */
3699     { (yyval) = makenode(X_PARSE_EXT,0) ; }
3700 #line 3699 "../yaccsrc.c" /* yacc.c:1646  */
3701     break;
3702 
3703   case 256:
3704 #line 831 "../yaccsrc.y" /* yacc.c:1646  */
3705     { (yyval) = makenode(X_PARSE_VER,0) ; }
3706 #line 3705 "../yaccsrc.c" /* yacc.c:1646  */
3707     break;
3708 
3709   case 257:
3710 #line 832 "../yaccsrc.y" /* yacc.c:1646  */
3711     { (yyval) = makenode(X_PARSE_PULL,0) ; }
3712 #line 3711 "../yaccsrc.c" /* yacc.c:1646  */
3713     break;
3714 
3715   case 258:
3716 #line 833 "../yaccsrc.y" /* yacc.c:1646  */
3717     { (yyval) = makenode(X_PARSE_SRC,0) ; }
3718 #line 3717 "../yaccsrc.c" /* yacc.c:1646  */
3719     break;
3720 
3721   case 259:
3722 #line 834 "../yaccsrc.y" /* yacc.c:1646  */
3723     { (yyval) = makenode(X_PARSE_VAR,0) ;
3724                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
3725 #line 3724 "../yaccsrc.c" /* yacc.c:1646  */
3726     break;
3727 
3728   case 260:
3729 #line 836 "../yaccsrc.y" /* yacc.c:1646  */
3730     { (yyval) = makenode(X_PARSE_VAL,1,(yyvsp[-1])) ; }
3731 #line 3730 "../yaccsrc.c" /* yacc.c:1646  */
3732     break;
3733 
3734   case 261:
3735 #line 837 "../yaccsrc.y" /* yacc.c:1646  */
3736     { exiterror( ERR_INVALID_TEMPLATE, 3 ) ;}
3737 #line 3736 "../yaccsrc.c" /* yacc.c:1646  */
3738     break;
3739 
3740   case 262:
3741 #line 840 "../yaccsrc.y" /* yacc.c:1646  */
3742     { (yyval) = (yyvsp[0]) ; }
3743 #line 3742 "../yaccsrc.c" /* yacc.c:1646  */
3744     break;
3745 
3746   case 263:
3747 #line 841 "../yaccsrc.y" /* yacc.c:1646  */
3748     { exiterror( ERR_INV_SUBKEYWORD, 17, __reginatext ) ;}
3749 #line 3748 "../yaccsrc.c" /* yacc.c:1646  */
3750     break;
3751 
3752   case 264:
3753 #line 842 "../yaccsrc.y" /* yacc.c:1646  */
3754     { exiterror( ERR_SYMBOL_EXPECTED, 1, __reginatext ) ;}
3755 #line 3754 "../yaccsrc.c" /* yacc.c:1646  */
3756     break;
3757 
3758   case 265:
3759 #line 843 "../yaccsrc.y" /* yacc.c:1646  */
3760     { exiterror( ERR_SYMBOL_EXPECTED, 1, __reginatext ) ;}
3761 #line 3760 "../yaccsrc.c" /* yacc.c:1646  */
3762     break;
3763 
3764   case 266:
3765 #line 844 "../yaccsrc.y" /* yacc.c:1646  */
3766     { (yyval) = (yyvsp[-2]) ;
3767                                          (yyval)->p[0] = (yyvsp[0]) ; }
3768 #line 3767 "../yaccsrc.c" /* yacc.c:1646  */
3769     break;
3770 
3771   case 267:
3772 #line 848 "../yaccsrc.y" /* yacc.c:1646  */
3773     { (yyval) = (yyvsp[-1]) ;
3774                                          (yyval)->p[0] = (yyvsp[0]) ; }
3775 #line 3774 "../yaccsrc.c" /* yacc.c:1646  */
3776     break;
3777 
3778   case 268:
3779 #line 852 "../yaccsrc.y" /* yacc.c:1646  */
3780     { (yyval) = (yyvsp[-1]) ;
3781                                          (yyval)->p[0] = (yyvsp[0]) ; }
3782 #line 3781 "../yaccsrc.c" /* yacc.c:1646  */
3783     break;
3784 
3785   case 269:
3786 #line 856 "../yaccsrc.y" /* yacc.c:1646  */
3787     { (yyval) = (yyvsp[-1]) ;
3788                                          (yyval)->p[0] = (yyvsp[0]) ; }
3789 #line 3788 "../yaccsrc.c" /* yacc.c:1646  */
3790     break;
3791 
3792   case 270:
3793 #line 860 "../yaccsrc.y" /* yacc.c:1646  */
3794     { (yyval) = (yyvsp[-1]) ;
3795                                          (yyval)->p[0] = (yyvsp[0]) ; }
3796 #line 3795 "../yaccsrc.c" /* yacc.c:1646  */
3797     break;
3798 
3799   case 271:
3800 #line 864 "../yaccsrc.y" /* yacc.c:1646  */
3801     { (yyval) = (yyvsp[-1]) ;
3802                                          (yyval)->p[0] = (yyvsp[0]) ; }
3803 #line 3802 "../yaccsrc.c" /* yacc.c:1646  */
3804     break;
3805 
3806   case 272:
3807 #line 868 "../yaccsrc.y" /* yacc.c:1646  */
3808     { exiterror( ERR_UNMATCHED_END, 0 ) ;}
3809 #line 3808 "../yaccsrc.c" /* yacc.c:1646  */
3810     break;
3811 
3812   case 273:
3813 #line 869 "../yaccsrc.y" /* yacc.c:1646  */
3814     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3815 #line 3814 "../yaccsrc.c" /* yacc.c:1646  */
3816     break;
3817 
3818   case 274:
3819 #line 870 "../yaccsrc.y" /* yacc.c:1646  */
3820     { level--; }
3821 #line 3820 "../yaccsrc.c" /* yacc.c:1646  */
3822     break;
3823 
3824   case 275:
3825 #line 874 "../yaccsrc.y" /* yacc.c:1646  */
3826     { (yyval) = (yyvsp[-4]);
3827                                          (yyval)->p[0] = optgluelast( (yyvsp[-3]), (yyvsp[-2]) );
3828                                          (yyval)->p[0]->o.last = NULL;
3829                                          (yyval)->p[1] = (yyvsp[-1]); }
3830 #line 3829 "../yaccsrc.c" /* yacc.c:1646  */
3831     break;
3832 
3833   case 276:
3834 #line 878 "../yaccsrc.y" /* yacc.c:1646  */
3835     {  exiterror( ERR_WHEN_EXPECTED, 1, parser_data.select_linenr, __reginatext ) ;}
3836 #line 3835 "../yaccsrc.c" /* yacc.c:1646  */
3837     break;
3838 
3839   case 277:
3840 #line 880 "../yaccsrc.y" /* yacc.c:1646  */
3841     {  exiterror( ERR_WHEN_EXPECTED, 2, parser_data.select_linenr, __reginatext ) ;}
3842 #line 3841 "../yaccsrc.c" /* yacc.c:1646  */
3843     break;
3844 
3845   case 278:
3846 #line 881 "../yaccsrc.y" /* yacc.c:1646  */
3847     {  exiterror( ERR_EXTRA_DATA, 1, __reginatext )  ;}
3848 #line 3847 "../yaccsrc.c" /* yacc.c:1646  */
3849     break;
3850 
3851   case 279:
3852 #line 882 "../yaccsrc.y" /* yacc.c:1646  */
3853     {  exiterror( ERR_THEN_UNEXPECTED, 0 ) ;}
3854 #line 3853 "../yaccsrc.c" /* yacc.c:1646  */
3855     break;
3856 
3857   case 280:
3858 #line 884 "../yaccsrc.y" /* yacc.c:1646  */
3859     {  exiterror( ERR_INCOMPLETE_STRUCT, 0 ) ;}
3860 #line 3859 "../yaccsrc.c" /* yacc.c:1646  */
3861     break;
3862 
3863   case 281:
3864 #line 887 "../yaccsrc.y" /* yacc.c:1646  */
3865     { (yyval) = optgluelast( (yyvsp[-1]), (yyvsp[0]) ); }
3866 #line 3865 "../yaccsrc.c" /* yacc.c:1646  */
3867     break;
3868 
3869   case 282:
3870 #line 888 "../yaccsrc.y" /* yacc.c:1646  */
3871     { (yyval) = (yyvsp[0]) ; }
3872 #line 3871 "../yaccsrc.c" /* yacc.c:1646  */
3873     break;
3874 
3875   case 283:
3876 #line 889 "../yaccsrc.y" /* yacc.c:1646  */
3877     {  exiterror( ERR_WHEN_EXPECTED, 2, parser_data.select_linenr, __reginatext )  ;}
3878 #line 3877 "../yaccsrc.c" /* yacc.c:1646  */
3879     break;
3880 
3881   case 284:
3882 #line 893 "../yaccsrc.y" /* yacc.c:1646  */
3883     { (yyval) = (yyvsp[-5]); /* fixes bugs like bug 579711 */
3884                                          (yyval)->p[0] = optgluelast( (yyvsp[-4]), (yyvsp[-3]) );
3885                                          (yyval)->p[0]->o.last = NULL;
3886                                          (yyval)->p[1] = optgluelast( (yyvsp[-1]), (yyvsp[0]) );
3887                                          (yyval)->p[1]->o.last = NULL; }
3888 #line 3887 "../yaccsrc.c" /* yacc.c:1646  */
3889     break;
3890 
3891   case 285:
3892 #line 899 "../yaccsrc.y" /* yacc.c:1646  */
3893     {  exiterror( ERR_THEN_UNEXPECTED, 0 ) ;}
3894 #line 3893 "../yaccsrc.c" /* yacc.c:1646  */
3895     break;
3896 
3897   case 286:
3898 #line 900 "../yaccsrc.y" /* yacc.c:1646  */
3899     {  exiterror( ERR_THEN_EXPECTED, 2, parser_data.select_linenr, __reginatext )  ; }
3900 #line 3899 "../yaccsrc.c" /* yacc.c:1646  */
3901     break;
3902 
3903   case 287:
3904 #line 901 "../yaccsrc.y" /* yacc.c:1646  */
3905     {  exiterror( ERR_INVALID_EXPRESSION, 0 ) ;}
3906 #line 3905 "../yaccsrc.c" /* yacc.c:1646  */
3907     break;
3908 
3909   case 288:
3910 #line 911 "../yaccsrc.y" /* yacc.c:1646  */
3911     { exiterror( ERR_WHEN_UNEXPECTED, 1 ); }
3912 #line 3911 "../yaccsrc.c" /* yacc.c:1646  */
3913     break;
3914 
3915   case 289:
3916 #line 912 "../yaccsrc.y" /* yacc.c:1646  */
3917     { exiterror( ERR_WHEN_UNEXPECTED, 2 ); }
3918 #line 3917 "../yaccsrc.c" /* yacc.c:1646  */
3919     break;
3920 
3921   case 290:
3922 #line 915 "../yaccsrc.y" /* yacc.c:1646  */
3923     { (yyval) = (yyvsp[-2]);
3924                                          (yyval)->p[0] = optgluelast( (yyvsp[-1]), (yyvsp[0]) );
3925                                          if ( (yyval)->p[0] )
3926                                             (yyval)->p[0]->o.last = NULL; }
3927 #line 3926 "../yaccsrc.c" /* yacc.c:1646  */
3928     break;
3929 
3930   case 291:
3931 #line 919 "../yaccsrc.y" /* yacc.c:1646  */
3932     { (yyval) = makenode(X_NO_OTHERWISE,0) ;
3933                                          (yyval)->lineno = parser_data.tline ;
3934                                          (yyval)->charnr = parser_data.tstart ; }
3935 #line 3934 "../yaccsrc.c" /* yacc.c:1646  */
3936     break;
3937 
3938   case 292:
3939 #line 925 "../yaccsrc.y" /* yacc.c:1646  */
3940     { (yyval) = (yyvsp[-2]) ;
3941                                          (yyval)->type = X_SIG_VAL ;
3942                                          (yyval)->p[0] = (yyvsp[0]) ; }
3943 #line 3942 "../yaccsrc.c" /* yacc.c:1646  */
3944     break;
3945 
3946   case 293:
3947 #line 928 "../yaccsrc.y" /* yacc.c:1646  */
3948     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3949 #line 3948 "../yaccsrc.c" /* yacc.c:1646  */
3950     break;
3951 
3952   case 294:
3953 #line 929 "../yaccsrc.y" /* yacc.c:1646  */
3954     { (yyval) = (yyvsp[-1]) ;
3955                                          (yyval)->name = (streng *)(yyvsp[0]) ; }
3956 #line 3955 "../yaccsrc.c" /* yacc.c:1646  */
3957     break;
3958 
3959   case 295:
3960 #line 931 "../yaccsrc.y" /* yacc.c:1646  */
3961     { exiterror( ERR_INV_SUBKEYWORD, 3, "ERROR FAILURE HALT NOTREADY NOVALUE SYNTAX LOSTDIGITS", __reginatext ) ;}
3962 #line 3961 "../yaccsrc.c" /* yacc.c:1646  */
3963     break;
3964 
3965   case 296:
3966 #line 932 "../yaccsrc.y" /* yacc.c:1646  */
3967     { exiterror( ERR_INV_SUBKEYWORD, 4, "ERROR FAILURE HALT NOTREADY NOVALUE SYNTAX LOSTDIGITS", __reginatext ) ;}
3968 #line 3967 "../yaccsrc.c" /* yacc.c:1646  */
3969     break;
3970 
3971   case 297:
3972 #line 933 "../yaccsrc.y" /* yacc.c:1646  */
3973     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
3974 #line 3973 "../yaccsrc.c" /* yacc.c:1646  */
3975     break;
3976 
3977   case 298:
3978 #line 934 "../yaccsrc.y" /* yacc.c:1646  */
3979     { exiterror( ERR_STRING_EXPECTED, 3, __reginatext ) ;}
3980 #line 3979 "../yaccsrc.c" /* yacc.c:1646  */
3981     break;
3982 
3983   case 299:
3984 #line 936 "../yaccsrc.y" /* yacc.c:1646  */
3985     { (yyval) = (yyvsp[-3]) ;
3986                                          (yyval)->type = X_SIG_SET ;
3987                                          (yyval)->p[0] = (yyvsp[-2]) ;
3988                                          (yyval)->name = (streng *)(yyvsp[0]) ;
3989                                          (yyval)->p[1] = (yyvsp[-1]) ; }
3990 #line 3989 "../yaccsrc.c" /* yacc.c:1646  */
3991     break;
3992 
3993   case 300:
3994 #line 941 "../yaccsrc.y" /* yacc.c:1646  */
3995     { (yyval) = (yyvsp[-2]) ;
3996                                          (yyval)->type = X_SIG_SET ;
3997                                          (yyval)->p[0] = (yyvsp[-1]) ;
3998                                          (yyval)->p[1] = (yyvsp[0]) ; }
3999 #line 3998 "../yaccsrc.c" /* yacc.c:1646  */
4000     break;
4001 
4002   case 301:
4003 #line 945 "../yaccsrc.y" /* yacc.c:1646  */
4004     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
4005 #line 4004 "../yaccsrc.c" /* yacc.c:1646  */
4006     break;
4007 
4008   case 302:
4009 #line 946 "../yaccsrc.y" /* yacc.c:1646  */
4010     { (yyval) = (yyvsp[-2]) ;
4011                                          (yyval)->type = X_SIG_SET ;
4012                                          (yyval)->p[0] = (yyvsp[-1]) ;
4013                                          (yyval)->p[1] = (yyvsp[0]) ; }
4014 #line 4013 "../yaccsrc.c" /* yacc.c:1646  */
4015     break;
4016 
4017   case 303:
4018 #line 952 "../yaccsrc.y" /* yacc.c:1646  */
4019     { (yyval) = (yyvsp[0]); }
4020 #line 4019 "../yaccsrc.c" /* yacc.c:1646  */
4021     break;
4022 
4023   case 304:
4024 #line 953 "../yaccsrc.y" /* yacc.c:1646  */
4025     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
4026 #line 4025 "../yaccsrc.c" /* yacc.c:1646  */
4027     break;
4028 
4029   case 305:
4030 #line 954 "../yaccsrc.y" /* yacc.c:1646  */
4031     { exiterror( ERR_STRING_EXPECTED, 4, __reginatext );}
4032 #line 4031 "../yaccsrc.c" /* yacc.c:1646  */
4033     break;
4034 
4035   case 306:
4036 #line 957 "../yaccsrc.y" /* yacc.c:1646  */
4037     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue);}
4038 #line 4037 "../yaccsrc.c" /* yacc.c:1646  */
4039     break;
4040 
4041   case 307:
4042 #line 958 "../yaccsrc.y" /* yacc.c:1646  */
4043     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
4044 #line 4043 "../yaccsrc.c" /* yacc.c:1646  */
4045     break;
4046 
4047   case 308:
4048 #line 959 "../yaccsrc.y" /* yacc.c:1646  */
4049     { exiterror( ERR_STRING_EXPECTED, 3, __reginatext ) ;}
4050 #line 4049 "../yaccsrc.c" /* yacc.c:1646  */
4051     break;
4052 
4053   case 309:
4054 #line 962 "../yaccsrc.y" /* yacc.c:1646  */
4055     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
4056 #line 4055 "../yaccsrc.c" /* yacc.c:1646  */
4057     break;
4058 
4059   case 310:
4060 #line 963 "../yaccsrc.y" /* yacc.c:1646  */
4061     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
4062 #line 4061 "../yaccsrc.c" /* yacc.c:1646  */
4063     break;
4064 
4065   case 311:
4066 #line 966 "../yaccsrc.y" /* yacc.c:1646  */
4067     { (yyval) = makenode(X_ON,0) ; }
4068 #line 4067 "../yaccsrc.c" /* yacc.c:1646  */
4069     break;
4070 
4071   case 312:
4072 #line 969 "../yaccsrc.y" /* yacc.c:1646  */
4073     { (yyval) = makenode(X_OFF,0) ; }
4074 #line 4073 "../yaccsrc.c" /* yacc.c:1646  */
4075     break;
4076 
4077   case 313:
4078 #line 972 "../yaccsrc.y" /* yacc.c:1646  */
4079     { (yyval) = makenode(X_S_ERROR,0) ; }
4080 #line 4079 "../yaccsrc.c" /* yacc.c:1646  */
4081     break;
4082 
4083   case 314:
4084 #line 973 "../yaccsrc.y" /* yacc.c:1646  */
4085     { (yyval) = makenode(X_S_HALT,0) ; }
4086 #line 4085 "../yaccsrc.c" /* yacc.c:1646  */
4087     break;
4088 
4089   case 315:
4090 #line 974 "../yaccsrc.y" /* yacc.c:1646  */
4091     { (yyval) = makenode(X_S_NOTREADY,0) ; }
4092 #line 4091 "../yaccsrc.c" /* yacc.c:1646  */
4093     break;
4094 
4095   case 316:
4096 #line 975 "../yaccsrc.y" /* yacc.c:1646  */
4097     { (yyval) = makenode(X_S_FAILURE,0) ; }
4098 #line 4097 "../yaccsrc.c" /* yacc.c:1646  */
4099     break;
4100 
4101   case 317:
4102 #line 978 "../yaccsrc.y" /* yacc.c:1646  */
4103     { (yyval) = (yyvsp[0]) ; }
4104 #line 4103 "../yaccsrc.c" /* yacc.c:1646  */
4105     break;
4106 
4107   case 318:
4108 #line 979 "../yaccsrc.y" /* yacc.c:1646  */
4109     { (yyval) = makenode(X_S_NOVALUE,0) ; }
4110 #line 4109 "../yaccsrc.c" /* yacc.c:1646  */
4111     break;
4112 
4113   case 319:
4114 #line 980 "../yaccsrc.y" /* yacc.c:1646  */
4115     { (yyval) = makenode(X_S_SYNTAX,0) ; }
4116 #line 4115 "../yaccsrc.c" /* yacc.c:1646  */
4117     break;
4118 
4119   case 320:
4120 #line 981 "../yaccsrc.y" /* yacc.c:1646  */
4121     { (yyval) = makenode(X_S_LOSTDIGITS,0) ; }
4122 #line 4121 "../yaccsrc.c" /* yacc.c:1646  */
4123     break;
4124 
4125   case 321:
4126 #line 984 "../yaccsrc.y" /* yacc.c:1646  */
4127     { (yyval) = (yyvsp[-2]) ;
4128                                          (yyval)->p[0] = (yyvsp[0]) ; }
4129 #line 4128 "../yaccsrc.c" /* yacc.c:1646  */
4130     break;
4131 
4132   case 322:
4133 #line 986 "../yaccsrc.y" /* yacc.c:1646  */
4134     { (yyval) = (yyvsp[-1]) ;
4135                                          (yyval)->p[0] = (yyvsp[0]) ; }
4136 #line 4135 "../yaccsrc.c" /* yacc.c:1646  */
4137     break;
4138 
4139   case 323:
4140 #line 988 "../yaccsrc.y" /* yacc.c:1646  */
4141     { exiterror( ERR_EXTRA_DATA, 1, __reginatext ) ;}
4142 #line 4141 "../yaccsrc.c" /* yacc.c:1646  */
4143     break;
4144 
4145   case 324:
4146 #line 989 "../yaccsrc.y" /* yacc.c:1646  */
4147     { (yyval) = (yyvsp[-1]) ;
4148                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
4149 #line 4148 "../yaccsrc.c" /* yacc.c:1646  */
4150     break;
4151 
4152   case 325:
4153 #line 993 "../yaccsrc.y" /* yacc.c:1646  */
4154     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
4155 #line 4154 "../yaccsrc.c" /* yacc.c:1646  */
4156     break;
4157 
4158   case 326:
4159 #line 997 "../yaccsrc.y" /* yacc.c:1646  */
4160     { (yyval) = (yyvsp[-1]) ;
4161                                          (yyval)->p[1] = (yyvsp[0]) ;
4162                                          /*
4163                                           * An assignment is a numerical
4164                                           * assignment if and only if we have
4165                                           * to do a numerical operation, which
4166                                           * is equivalent to the existence of
4167                                           * one more argument to $2.
4168                                           * This fixes bug 720166.
4169                                           */
4170                                          if ((yyvsp[0]) &&
4171                                              (yyvsp[0])->p[0] &&
4172                                              gettypeof((yyvsp[0])) == IS_A_NUMBER)
4173                                             (yyval)->type = X_NASSIGN ; }
4174 #line 4173 "../yaccsrc.c" /* yacc.c:1646  */
4175     break;
4176 
4177   case 327:
4178 #line 1013 "../yaccsrc.y" /* yacc.c:1646  */
4179     { (yyval) = makenode(X_ASSIGN,0) ;
4180                                          (yyval)->charnr = parser_data.tstart ;
4181                                          (yyval)->lineno = parser_data.tline ;
4182                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4183 #line 4182 "../yaccsrc.c" /* yacc.c:1646  */
4184     break;
4185 
4186   case 328:
4187 #line 1019 "../yaccsrc.y" /* yacc.c:1646  */
4188     { (yyval) = (yyvsp[-1]) ;
4189                                          (yyval)->p[1] = (yyvsp[0]) ;
4190                                        }
4191 #line 4190 "../yaccsrc.c" /* yacc.c:1646  */
4192     break;
4193 
4194   case 329:
4195 #line 1024 "../yaccsrc.y" /* yacc.c:1646  */
4196     { (yyval) = makenode(X_PLUSASSIGN,0) ;
4197                                          (yyval)->charnr = parser_data.tstart ;
4198                                          (yyval)->lineno = parser_data.tline ;
4199                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4200 #line 4199 "../yaccsrc.c" /* yacc.c:1646  */
4201     break;
4202 
4203   case 330:
4204 #line 1030 "../yaccsrc.y" /* yacc.c:1646  */
4205     { (yyval) = (yyvsp[-1]) ;
4206                                          (yyval)->p[1] = (yyvsp[0]) ;
4207                                        }
4208 #line 4207 "../yaccsrc.c" /* yacc.c:1646  */
4209     break;
4210 
4211   case 331:
4212 #line 1035 "../yaccsrc.y" /* yacc.c:1646  */
4213     { (yyval) = makenode(X_MINUSASSIGN,0) ;
4214                                          (yyval)->charnr = parser_data.tstart ;
4215                                          (yyval)->lineno = parser_data.tline ;
4216                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4217 #line 4216 "../yaccsrc.c" /* yacc.c:1646  */
4218     break;
4219 
4220   case 332:
4221 #line 1041 "../yaccsrc.y" /* yacc.c:1646  */
4222     { (yyval) = (yyvsp[-1]) ;
4223                                          (yyval)->p[1] = (yyvsp[0]) ;
4224                                        }
4225 #line 4224 "../yaccsrc.c" /* yacc.c:1646  */
4226     break;
4227 
4228   case 333:
4229 #line 1046 "../yaccsrc.y" /* yacc.c:1646  */
4230     { (yyval) = makenode(X_MULTASSIGN,0) ;
4231                                          (yyval)->charnr = parser_data.tstart ;
4232                                          (yyval)->lineno = parser_data.tline ;
4233                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4234 #line 4233 "../yaccsrc.c" /* yacc.c:1646  */
4235     break;
4236 
4237   case 334:
4238 #line 1052 "../yaccsrc.y" /* yacc.c:1646  */
4239     { (yyval) = (yyvsp[-1]) ;
4240                                          (yyval)->p[1] = (yyvsp[0]) ;
4241                                        }
4242 #line 4241 "../yaccsrc.c" /* yacc.c:1646  */
4243     break;
4244 
4245   case 335:
4246 #line 1057 "../yaccsrc.y" /* yacc.c:1646  */
4247     { (yyval) = makenode(X_DIVASSIGN,0) ;
4248                                          (yyval)->charnr = parser_data.tstart ;
4249                                          (yyval)->lineno = parser_data.tline ;
4250                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4251 #line 4250 "../yaccsrc.c" /* yacc.c:1646  */
4252     break;
4253 
4254   case 336:
4255 #line 1063 "../yaccsrc.y" /* yacc.c:1646  */
4256     { (yyval) = (yyvsp[-1]) ;
4257                                          (yyval)->p[1] = (yyvsp[0]) ;
4258                                        }
4259 #line 4258 "../yaccsrc.c" /* yacc.c:1646  */
4260     break;
4261 
4262   case 337:
4263 #line 1068 "../yaccsrc.y" /* yacc.c:1646  */
4264     { (yyval) = makenode(X_INTDIVASSIGN,0) ;
4265                                          (yyval)->charnr = parser_data.tstart ;
4266                                          (yyval)->lineno = parser_data.tline ;
4267                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4268 #line 4267 "../yaccsrc.c" /* yacc.c:1646  */
4269     break;
4270 
4271   case 338:
4272 #line 1074 "../yaccsrc.y" /* yacc.c:1646  */
4273     { (yyval) = (yyvsp[-1]) ;
4274                                          (yyval)->p[1] = (yyvsp[0]) ;
4275                                        }
4276 #line 4275 "../yaccsrc.c" /* yacc.c:1646  */
4277     break;
4278 
4279   case 339:
4280 #line 1079 "../yaccsrc.y" /* yacc.c:1646  */
4281     { (yyval) = makenode(X_MODULUSASSIGN,0) ;
4282                                          (yyval)->charnr = parser_data.tstart ;
4283                                          (yyval)->lineno = parser_data.tline ;
4284                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4285 #line 4284 "../yaccsrc.c" /* yacc.c:1646  */
4286     break;
4287 
4288   case 340:
4289 #line 1085 "../yaccsrc.y" /* yacc.c:1646  */
4290     { (yyval) = (yyvsp[-1]) ;
4291                                          (yyval)->p[1] = (yyvsp[0]) ;
4292                                        }
4293 #line 4292 "../yaccsrc.c" /* yacc.c:1646  */
4294     break;
4295 
4296   case 341:
4297 #line 1090 "../yaccsrc.y" /* yacc.c:1646  */
4298     { (yyval) = makenode(X_ANDASSIGN,0) ;
4299                                          (yyval)->charnr = parser_data.tstart ;
4300                                          (yyval)->lineno = parser_data.tline ;
4301                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4302 #line 4301 "../yaccsrc.c" /* yacc.c:1646  */
4303     break;
4304 
4305   case 342:
4306 #line 1096 "../yaccsrc.y" /* yacc.c:1646  */
4307     { (yyval) = (yyvsp[-1]) ;
4308                                          (yyval)->p[1] = (yyvsp[0]) ;
4309                                        }
4310 #line 4309 "../yaccsrc.c" /* yacc.c:1646  */
4311     break;
4312 
4313   case 343:
4314 #line 1101 "../yaccsrc.y" /* yacc.c:1646  */
4315     { (yyval) = makenode(X_XORASSIGN,0) ;
4316                                          (yyval)->charnr = parser_data.tstart ;
4317                                          (yyval)->lineno = parser_data.tline ;
4318                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4319 #line 4318 "../yaccsrc.c" /* yacc.c:1646  */
4320     break;
4321 
4322   case 344:
4323 #line 1107 "../yaccsrc.y" /* yacc.c:1646  */
4324     { (yyval) = (yyvsp[-1]) ;
4325                                          (yyval)->p[1] = (yyvsp[0]) ;
4326                                        }
4327 #line 4326 "../yaccsrc.c" /* yacc.c:1646  */
4328     break;
4329 
4330   case 345:
4331 #line 1112 "../yaccsrc.y" /* yacc.c:1646  */
4332     { (yyval) = makenode(X_ORASSIGN,0) ;
4333                                          (yyval)->charnr = parser_data.tstart ;
4334                                          (yyval)->lineno = parser_data.tline ;
4335                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4336 #line 4335 "../yaccsrc.c" /* yacc.c:1646  */
4337     break;
4338 
4339   case 346:
4340 #line 1118 "../yaccsrc.y" /* yacc.c:1646  */
4341     { (yyval) = (yyvsp[-1]) ;
4342                                          (yyval)->p[1] = (yyvsp[0]) ;
4343                                        }
4344 #line 4343 "../yaccsrc.c" /* yacc.c:1646  */
4345     break;
4346 
4347   case 347:
4348 #line 1123 "../yaccsrc.y" /* yacc.c:1646  */
4349     { (yyval) = makenode(X_CONCATASSIGN,0) ;
4350                                          (yyval)->charnr = parser_data.tstart ;
4351                                          (yyval)->lineno = parser_data.tline ;
4352                                          (yyval)->p[0] = (nodeptr)create_head( (const char *)retvalue ); }
4353 #line 4352 "../yaccsrc.c" /* yacc.c:1646  */
4354     break;
4355 
4356   case 348:
4357 #line 1130 "../yaccsrc.y" /* yacc.c:1646  */
4358     { /* We have to accept exprs here even
4359                                           * if we just want to accept
4360                                           * '(' expr ')' only. We do this
4361                                           * because we appect
4362                                           * "call '(' exprs ')'" too.
4363                                           * This kann happen only if the
4364                                           * related control flag parendepth is
4365                                           * set. But since the parentheses are
4366                                           * voided just for the outer ones, we
4367                                           * can reduce the allowness level.
4368                                           * We don't have to set it back,
4369                                           * because the outer parentheses
4370                                           * either is THE one we look for or
4371                                           * none. This allows a faster error
4372                                           * detection and that's a good goal.*/
4373                                          parendepth--; }
4374 #line 4373 "../yaccsrc.c" /* yacc.c:1646  */
4375     break;
4376 
4377   case 349:
4378 #line 1146 "../yaccsrc.y" /* yacc.c:1646  */
4379     { parendepth++;
4380                                          if ( parendepth == 1 )
4381                                          {
4382                                             /* exprs on as-is basis */
4383                                             (yyval) = (yyvsp[0]);
4384                                          }
4385                                          else
4386                                          {
4387                                             /* Must already be a plain expr.
4388                                              * The nexpr part of exprs detects
4389                                              * mistakes. */
4390                                             (yyval) = reduce_expr_list( (yyvsp[0]),
4391                                                                 REDUCE_EXPR );
4392                                             if ( (yyval) == (yyvsp[0]) )
4393                                                exiterror( ERR_INTERPRETER_FAILURE, 1, __FILE__, __LINE__, "Reduction of `exprs' not happened." );
4394                                          }
4395                                        }
4396 #line 4395 "../yaccsrc.c" /* yacc.c:1646  */
4397     break;
4398 
4399   case 350:
4400 #line 1163 "../yaccsrc.y" /* yacc.c:1646  */
4401     { parendepth--; }
4402 #line 4401 "../yaccsrc.c" /* yacc.c:1646  */
4403     break;
4404 
4405   case 351:
4406 #line 1164 "../yaccsrc.y" /* yacc.c:1646  */
4407     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "+" );
4408                                          (yyval) = makenode( X_PLUSS, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4409 #line 4408 "../yaccsrc.c" /* yacc.c:1646  */
4410     break;
4411 
4412   case 352:
4413 #line 1166 "../yaccsrc.y" /* yacc.c:1646  */
4414     { parendepth--; }
4415 #line 4414 "../yaccsrc.c" /* yacc.c:1646  */
4416     break;
4417 
4418   case 353:
4419 #line 1167 "../yaccsrc.y" /* yacc.c:1646  */
4420     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "-" );
4421                                          (yyval) = makenode( X_MINUS, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4422 #line 4421 "../yaccsrc.c" /* yacc.c:1646  */
4423     break;
4424 
4425   case 354:
4426 #line 1169 "../yaccsrc.y" /* yacc.c:1646  */
4427     { parendepth--; }
4428 #line 4427 "../yaccsrc.c" /* yacc.c:1646  */
4429     break;
4430 
4431   case 355:
4432 #line 1170 "../yaccsrc.y" /* yacc.c:1646  */
4433     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "*" );
4434                                          (yyval) = makenode( X_MULT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4435 #line 4434 "../yaccsrc.c" /* yacc.c:1646  */
4436     break;
4437 
4438   case 356:
4439 #line 1172 "../yaccsrc.y" /* yacc.c:1646  */
4440     { exiterror( ERR_INVALID_EXPRESSION, 1, "*" ); }
4441 #line 4440 "../yaccsrc.c" /* yacc.c:1646  */
4442     break;
4443 
4444   case 357:
4445 #line 1173 "../yaccsrc.y" /* yacc.c:1646  */
4446     { parendepth--; }
4447 #line 4446 "../yaccsrc.c" /* yacc.c:1646  */
4448     break;
4449 
4450   case 358:
4451 #line 1174 "../yaccsrc.y" /* yacc.c:1646  */
4452     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "/" );
4453                                          (yyval) = makenode( X_DEVIDE, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4454 #line 4453 "../yaccsrc.c" /* yacc.c:1646  */
4455     break;
4456 
4457   case 359:
4458 #line 1176 "../yaccsrc.y" /* yacc.c:1646  */
4459     { exiterror( ERR_INVALID_EXPRESSION, 1, "/" ); }
4460 #line 4459 "../yaccsrc.c" /* yacc.c:1646  */
4461     break;
4462 
4463   case 360:
4464 #line 1177 "../yaccsrc.y" /* yacc.c:1646  */
4465     { parendepth--; }
4466 #line 4465 "../yaccsrc.c" /* yacc.c:1646  */
4467     break;
4468 
4469   case 361:
4470 #line 1178 "../yaccsrc.y" /* yacc.c:1646  */
4471     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "//" );
4472                                          (yyval) = makenode( X_MODULUS, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4473 #line 4472 "../yaccsrc.c" /* yacc.c:1646  */
4474     break;
4475 
4476   case 362:
4477 #line 1180 "../yaccsrc.y" /* yacc.c:1646  */
4478     { exiterror( ERR_INVALID_EXPRESSION, 1, "//" ); }
4479 #line 4478 "../yaccsrc.c" /* yacc.c:1646  */
4480     break;
4481 
4482   case 363:
4483 #line 1181 "../yaccsrc.y" /* yacc.c:1646  */
4484     { parendepth--; }
4485 #line 4484 "../yaccsrc.c" /* yacc.c:1646  */
4486     break;
4487 
4488   case 364:
4489 #line 1182 "../yaccsrc.y" /* yacc.c:1646  */
4490     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "%" );
4491                                          (yyval) = makenode( X_INTDIV, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4492 #line 4491 "../yaccsrc.c" /* yacc.c:1646  */
4493     break;
4494 
4495   case 365:
4496 #line 1184 "../yaccsrc.y" /* yacc.c:1646  */
4497     { exiterror( ERR_INVALID_EXPRESSION, 1, "%" ); }
4498 #line 4497 "../yaccsrc.c" /* yacc.c:1646  */
4499     break;
4500 
4501   case 366:
4502 #line 1185 "../yaccsrc.y" /* yacc.c:1646  */
4503     { parendepth--; }
4504 #line 4503 "../yaccsrc.c" /* yacc.c:1646  */
4505     break;
4506 
4507   case 367:
4508 #line 1186 "../yaccsrc.y" /* yacc.c:1646  */
4509     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "|" );
4510                                          (yyval) = makenode( X_LOG_OR, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4511 #line 4510 "../yaccsrc.c" /* yacc.c:1646  */
4512     break;
4513 
4514   case 368:
4515 #line 1188 "../yaccsrc.y" /* yacc.c:1646  */
4516     { exiterror( ERR_INVALID_EXPRESSION, 1, "|" ); }
4517 #line 4516 "../yaccsrc.c" /* yacc.c:1646  */
4518     break;
4519 
4520   case 369:
4521 #line 1189 "../yaccsrc.y" /* yacc.c:1646  */
4522     { parendepth--; }
4523 #line 4522 "../yaccsrc.c" /* yacc.c:1646  */
4524     break;
4525 
4526   case 370:
4527 #line 1190 "../yaccsrc.y" /* yacc.c:1646  */
4528     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "&" );
4529                                          (yyval) = makenode( X_LOG_AND, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4530 #line 4529 "../yaccsrc.c" /* yacc.c:1646  */
4531     break;
4532 
4533   case 371:
4534 #line 1192 "../yaccsrc.y" /* yacc.c:1646  */
4535     { exiterror( ERR_INVALID_EXPRESSION, 1, "&" ); }
4536 #line 4535 "../yaccsrc.c" /* yacc.c:1646  */
4537     break;
4538 
4539   case 372:
4540 #line 1193 "../yaccsrc.y" /* yacc.c:1646  */
4541     { parendepth--; }
4542 #line 4541 "../yaccsrc.c" /* yacc.c:1646  */
4543     break;
4544 
4545   case 373:
4546 #line 1194 "../yaccsrc.y" /* yacc.c:1646  */
4547     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "&&" );
4548                                          (yyval) = makenode( X_LOG_XOR, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4549 #line 4548 "../yaccsrc.c" /* yacc.c:1646  */
4550     break;
4551 
4552   case 374:
4553 #line 1196 "../yaccsrc.y" /* yacc.c:1646  */
4554     { exiterror( ERR_INVALID_EXPRESSION, 1, "&&" ); }
4555 #line 4554 "../yaccsrc.c" /* yacc.c:1646  */
4556     break;
4557 
4558   case 375:
4559 #line 1197 "../yaccsrc.y" /* yacc.c:1646  */
4560     { parendepth--; }
4561 #line 4560 "../yaccsrc.c" /* yacc.c:1646  */
4562     break;
4563 
4564   case 376:
4565 #line 1198 "../yaccsrc.y" /* yacc.c:1646  */
4566     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "**" );
4567                                          (yyval) = makenode( X_EXP, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4568 #line 4567 "../yaccsrc.c" /* yacc.c:1646  */
4569     break;
4570 
4571   case 377:
4572 #line 1200 "../yaccsrc.y" /* yacc.c:1646  */
4573     { exiterror( ERR_INVALID_EXPRESSION, 1, "**" ); }
4574 #line 4573 "../yaccsrc.c" /* yacc.c:1646  */
4575     break;
4576 
4577   case 378:
4578 #line 1201 "../yaccsrc.y" /* yacc.c:1646  */
4579     { parendepth--; }
4580 #line 4579 "../yaccsrc.c" /* yacc.c:1646  */
4581     break;
4582 
4583   case 379:
4584 #line 1202 "../yaccsrc.y" /* yacc.c:1646  */
4585     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), " " );
4586                                          (yyval) = makenode( X_SPACE, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4587 #line 4586 "../yaccsrc.c" /* yacc.c:1646  */
4588     break;
4589 
4590   case 380:
4591 #line 1204 "../yaccsrc.y" /* yacc.c:1646  */
4592     { exiterror( ERR_INVALID_EXPRESSION, 1, " " ); }
4593 #line 4592 "../yaccsrc.c" /* yacc.c:1646  */
4594     break;
4595 
4596   case 381:
4597 #line 1205 "../yaccsrc.y" /* yacc.c:1646  */
4598     { parendepth--; }
4599 #line 4598 "../yaccsrc.c" /* yacc.c:1646  */
4600     break;
4601 
4602   case 382:
4603 #line 1206 "../yaccsrc.y" /* yacc.c:1646  */
4604     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "||" );
4605                                          (yyval) = makenode( X_CONCAT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4606 #line 4605 "../yaccsrc.c" /* yacc.c:1646  */
4607     break;
4608 
4609   case 383:
4610 #line 1208 "../yaccsrc.y" /* yacc.c:1646  */
4611     { exiterror( ERR_INVALID_EXPRESSION, 1, "||" ); }
4612 #line 4611 "../yaccsrc.c" /* yacc.c:1646  */
4613     break;
4614 
4615   case 384:
4616 #line 1209 "../yaccsrc.y" /* yacc.c:1646  */
4617     { AUTO_REDUCE( (yyvsp[0]), "\\" );
4618                                          (yyval) = makenode( X_LOG_NOT, 1, (yyvsp[0]) ); }
4619 #line 4618 "../yaccsrc.c" /* yacc.c:1646  */
4620     break;
4621 
4622   case 385:
4623 #line 1211 "../yaccsrc.y" /* yacc.c:1646  */
4624     { exiterror( ERR_INVALID_EXPRESSION, 1, "\\" ); }
4625 #line 4624 "../yaccsrc.c" /* yacc.c:1646  */
4626     break;
4627 
4628   case 386:
4629 #line 1212 "../yaccsrc.y" /* yacc.c:1646  */
4630     { parendepth--; }
4631 #line 4630 "../yaccsrc.c" /* yacc.c:1646  */
4632     break;
4633 
4634   case 387:
4635 #line 1213 "../yaccsrc.y" /* yacc.c:1646  */
4636     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "=" );
4637                                          (yyval) = makenode( X_EQUAL, 2, (yyvsp[-3]), (yyvsp[0]) );
4638                                          transform( (yyval) ); }
4639 #line 4638 "../yaccsrc.c" /* yacc.c:1646  */
4640     break;
4641 
4642   case 388:
4643 #line 1216 "../yaccsrc.y" /* yacc.c:1646  */
4644     { exiterror( ERR_INVALID_EXPRESSION, 1, "=" ); }
4645 #line 4644 "../yaccsrc.c" /* yacc.c:1646  */
4646     break;
4647 
4648   case 389:
4649 #line 1217 "../yaccsrc.y" /* yacc.c:1646  */
4650     { parendepth--; }
4651 #line 4650 "../yaccsrc.c" /* yacc.c:1646  */
4652     break;
4653 
4654   case 390:
4655 #line 1218 "../yaccsrc.y" /* yacc.c:1646  */
4656     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), ">=" );
4657                                          (yyval) = makenode( X_GTE, 2, (yyvsp[-3]), (yyvsp[0]) );
4658                                          transform( (yyval) ) ; }
4659 #line 4658 "../yaccsrc.c" /* yacc.c:1646  */
4660     break;
4661 
4662   case 391:
4663 #line 1221 "../yaccsrc.y" /* yacc.c:1646  */
4664     { exiterror( ERR_INVALID_EXPRESSION, 1, ">=" ); }
4665 #line 4664 "../yaccsrc.c" /* yacc.c:1646  */
4666     break;
4667 
4668   case 392:
4669 #line 1222 "../yaccsrc.y" /* yacc.c:1646  */
4670     { parendepth--; }
4671 #line 4670 "../yaccsrc.c" /* yacc.c:1646  */
4672     break;
4673 
4674   case 393:
4675 #line 1223 "../yaccsrc.y" /* yacc.c:1646  */
4676     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "<=" );
4677                                          (yyval) = makenode( X_LTE, 2, (yyvsp[-3]), (yyvsp[0]) );
4678                                          transform( (yyval) ) ; }
4679 #line 4678 "../yaccsrc.c" /* yacc.c:1646  */
4680     break;
4681 
4682   case 394:
4683 #line 1226 "../yaccsrc.y" /* yacc.c:1646  */
4684     { exiterror( ERR_INVALID_EXPRESSION, 1, "<=" ); }
4685 #line 4684 "../yaccsrc.c" /* yacc.c:1646  */
4686     break;
4687 
4688   case 395:
4689 #line 1227 "../yaccsrc.y" /* yacc.c:1646  */
4690     { parendepth--; }
4691 #line 4690 "../yaccsrc.c" /* yacc.c:1646  */
4692     break;
4693 
4694   case 396:
4695 #line 1228 "../yaccsrc.y" /* yacc.c:1646  */
4696     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), ">" );
4697                                          (yyval) = makenode( X_GT, 2, (yyvsp[-3]), (yyvsp[0]) );
4698                                          transform( (yyval) ) ; }
4699 #line 4698 "../yaccsrc.c" /* yacc.c:1646  */
4700     break;
4701 
4702   case 397:
4703 #line 1231 "../yaccsrc.y" /* yacc.c:1646  */
4704     { exiterror( ERR_INVALID_EXPRESSION, 1, ">" ); }
4705 #line 4704 "../yaccsrc.c" /* yacc.c:1646  */
4706     break;
4707 
4708   case 398:
4709 #line 1232 "../yaccsrc.y" /* yacc.c:1646  */
4710     { parendepth--; }
4711 #line 4710 "../yaccsrc.c" /* yacc.c:1646  */
4712     break;
4713 
4714   case 399:
4715 #line 1233 "../yaccsrc.y" /* yacc.c:1646  */
4716     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "<" );
4717                                          (yyval) = makenode( X_LT, 2, (yyvsp[-3]), (yyvsp[0]) );
4718                                          transform( (yyval) ) ; }
4719 #line 4718 "../yaccsrc.c" /* yacc.c:1646  */
4720     break;
4721 
4722   case 400:
4723 #line 1236 "../yaccsrc.y" /* yacc.c:1646  */
4724     { exiterror( ERR_INVALID_EXPRESSION, 1, "<" ); }
4725 #line 4724 "../yaccsrc.c" /* yacc.c:1646  */
4726     break;
4727 
4728   case 401:
4729 #line 1237 "../yaccsrc.y" /* yacc.c:1646  */
4730     { parendepth--; }
4731 #line 4730 "../yaccsrc.c" /* yacc.c:1646  */
4732     break;
4733 
4734   case 402:
4735 #line 1238 "../yaccsrc.y" /* yacc.c:1646  */
4736     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "\\=" );
4737                                          (yyval) = makenode( X_DIFF, 2, (yyvsp[-3]), (yyvsp[0]) );
4738                                          transform( (yyval) ) ; }
4739 #line 4738 "../yaccsrc.c" /* yacc.c:1646  */
4740     break;
4741 
4742   case 403:
4743 #line 1241 "../yaccsrc.y" /* yacc.c:1646  */
4744     { exiterror( ERR_INVALID_EXPRESSION, 1, "\\=" ); }
4745 #line 4744 "../yaccsrc.c" /* yacc.c:1646  */
4746     break;
4747 
4748   case 404:
4749 #line 1242 "../yaccsrc.y" /* yacc.c:1646  */
4750     { parendepth--; }
4751 #line 4750 "../yaccsrc.c" /* yacc.c:1646  */
4752     break;
4753 
4754   case 405:
4755 #line 1243 "../yaccsrc.y" /* yacc.c:1646  */
4756     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "==" );
4757                                          (yyval) = makenode( X_S_EQUAL, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4758 #line 4757 "../yaccsrc.c" /* yacc.c:1646  */
4759     break;
4760 
4761   case 406:
4762 #line 1245 "../yaccsrc.y" /* yacc.c:1646  */
4763     { exiterror( ERR_INVALID_EXPRESSION, 1, "==" ); }
4764 #line 4763 "../yaccsrc.c" /* yacc.c:1646  */
4765     break;
4766 
4767   case 407:
4768 #line 1246 "../yaccsrc.y" /* yacc.c:1646  */
4769     { parendepth--; }
4770 #line 4769 "../yaccsrc.c" /* yacc.c:1646  */
4771     break;
4772 
4773   case 408:
4774 #line 1247 "../yaccsrc.y" /* yacc.c:1646  */
4775     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "\\==" );
4776                                          (yyval) = makenode( X_S_DIFF, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4777 #line 4776 "../yaccsrc.c" /* yacc.c:1646  */
4778     break;
4779 
4780   case 409:
4781 #line 1249 "../yaccsrc.y" /* yacc.c:1646  */
4782     { exiterror( ERR_INVALID_EXPRESSION, 1, "\\==" ); }
4783 #line 4782 "../yaccsrc.c" /* yacc.c:1646  */
4784     break;
4785 
4786   case 410:
4787 #line 1250 "../yaccsrc.y" /* yacc.c:1646  */
4788     { parendepth--; }
4789 #line 4788 "../yaccsrc.c" /* yacc.c:1646  */
4790     break;
4791 
4792   case 411:
4793 #line 1251 "../yaccsrc.y" /* yacc.c:1646  */
4794     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), ">>" );
4795                                          (yyval) = makenode( X_S_GT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4796 #line 4795 "../yaccsrc.c" /* yacc.c:1646  */
4797     break;
4798 
4799   case 412:
4800 #line 1253 "../yaccsrc.y" /* yacc.c:1646  */
4801     { exiterror( ERR_INVALID_EXPRESSION, 1, ">>" ); }
4802 #line 4801 "../yaccsrc.c" /* yacc.c:1646  */
4803     break;
4804 
4805   case 413:
4806 #line 1254 "../yaccsrc.y" /* yacc.c:1646  */
4807     { parendepth--; }
4808 #line 4807 "../yaccsrc.c" /* yacc.c:1646  */
4809     break;
4810 
4811   case 414:
4812 #line 1255 "../yaccsrc.y" /* yacc.c:1646  */
4813     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "<<" );
4814                                          (yyval) = makenode( X_S_LT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4815 #line 4814 "../yaccsrc.c" /* yacc.c:1646  */
4816     break;
4817 
4818   case 415:
4819 #line 1257 "../yaccsrc.y" /* yacc.c:1646  */
4820     { exiterror( ERR_INVALID_EXPRESSION, 1, "<<" ); }
4821 #line 4820 "../yaccsrc.c" /* yacc.c:1646  */
4822     break;
4823 
4824   case 416:
4825 #line 1258 "../yaccsrc.y" /* yacc.c:1646  */
4826     { parendepth--; }
4827 #line 4826 "../yaccsrc.c" /* yacc.c:1646  */
4828     break;
4829 
4830   case 417:
4831 #line 1259 "../yaccsrc.y" /* yacc.c:1646  */
4832     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "\\>>" );
4833                                          (yyval) = makenode( X_S_NGT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4834 #line 4833 "../yaccsrc.c" /* yacc.c:1646  */
4835     break;
4836 
4837   case 418:
4838 #line 1261 "../yaccsrc.y" /* yacc.c:1646  */
4839     { exiterror( ERR_INVALID_EXPRESSION, 1, "\\>>" ); }
4840 #line 4839 "../yaccsrc.c" /* yacc.c:1646  */
4841     break;
4842 
4843   case 419:
4844 #line 1262 "../yaccsrc.y" /* yacc.c:1646  */
4845     { parendepth--; }
4846 #line 4845 "../yaccsrc.c" /* yacc.c:1646  */
4847     break;
4848 
4849   case 420:
4850 #line 1263 "../yaccsrc.y" /* yacc.c:1646  */
4851     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "\\<<" );
4852                                          (yyval) = makenode( X_S_NLT, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4853 #line 4852 "../yaccsrc.c" /* yacc.c:1646  */
4854     break;
4855 
4856   case 421:
4857 #line 1265 "../yaccsrc.y" /* yacc.c:1646  */
4858     { exiterror( ERR_INVALID_EXPRESSION, 1, "\\<<" ); }
4859 #line 4858 "../yaccsrc.c" /* yacc.c:1646  */
4860     break;
4861 
4862   case 422:
4863 #line 1266 "../yaccsrc.y" /* yacc.c:1646  */
4864     { parendepth--; }
4865 #line 4864 "../yaccsrc.c" /* yacc.c:1646  */
4866     break;
4867 
4868   case 423:
4869 #line 1267 "../yaccsrc.y" /* yacc.c:1646  */
4870     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), ">>=" );
4871                                          (yyval) = makenode( X_S_GTE, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4872 #line 4871 "../yaccsrc.c" /* yacc.c:1646  */
4873     break;
4874 
4875   case 424:
4876 #line 1269 "../yaccsrc.y" /* yacc.c:1646  */
4877     { exiterror( ERR_INVALID_EXPRESSION, 1, ">>=" ); }
4878 #line 4877 "../yaccsrc.c" /* yacc.c:1646  */
4879     break;
4880 
4881   case 425:
4882 #line 1270 "../yaccsrc.y" /* yacc.c:1646  */
4883     { parendepth--; }
4884 #line 4883 "../yaccsrc.c" /* yacc.c:1646  */
4885     break;
4886 
4887   case 426:
4888 #line 1271 "../yaccsrc.y" /* yacc.c:1646  */
4889     { parendepth++; AUTO_REDUCE( (yyvsp[-3]), "<<=" );
4890                                          (yyval) = makenode( X_S_LTE, 2, (yyvsp[-3]), (yyvsp[0]) ); }
4891 #line 4890 "../yaccsrc.c" /* yacc.c:1646  */
4892     break;
4893 
4894   case 427:
4895 #line 1273 "../yaccsrc.y" /* yacc.c:1646  */
4896     { exiterror( ERR_INVALID_EXPRESSION, 1, "<<=" ); }
4897 #line 4896 "../yaccsrc.c" /* yacc.c:1646  */
4898     break;
4899 
4900   case 428:
4901 #line 1274 "../yaccsrc.y" /* yacc.c:1646  */
4902     { (yyval) = (yyvsp[0]) ; }
4903 #line 4902 "../yaccsrc.c" /* yacc.c:1646  */
4904     break;
4905 
4906   case 429:
4907 #line 1275 "../yaccsrc.y" /* yacc.c:1646  */
4908     { (yyval) = makenode( X_STRING, 0 );
4909                                          (yyval)->name = Str_cre_TSD(parser_data.TSD,retvalue) ; }
4910 #line 4909 "../yaccsrc.c" /* yacc.c:1646  */
4911     break;
4912 
4913   case 430:
4914 #line 1277 "../yaccsrc.y" /* yacc.c:1646  */
4915     { (yyval) = makenode( X_STRING, 0 );
4916                                          (yyval)->name = Str_make_TSD(parser_data.TSD,retlength) ;
4917                                          memcpy((yyval)->name->value,retvalue,
4918                                                     (yyval)->name->len=retlength); }
4919 #line 4918 "../yaccsrc.c" /* yacc.c:1646  */
4920     break;
4921 
4922   case 431:
4923 #line 1281 "../yaccsrc.y" /* yacc.c:1646  */
4924     { (yyval) = makenode( X_STRING, 0 );
4925                                          (yyval)->name = Str_make_TSD(parser_data.TSD,retlength) ;
4926                                          memcpy((yyval)->name->value,retvalue,
4927                                                     (yyval)->name->len=retlength); }
4928 #line 4927 "../yaccsrc.c" /* yacc.c:1646  */
4929     break;
4930 
4931   case 432:
4932 #line 1285 "../yaccsrc.y" /* yacc.c:1646  */
4933     { (yyval) = makenode( X_STRING, 0 );
4934                                          (yyval)->name = Str_cre_TSD(parser_data.TSD,retvalue) ; }
4935 #line 4934 "../yaccsrc.c" /* yacc.c:1646  */
4936     break;
4937 
4938   case 433:
4939 #line 1287 "../yaccsrc.y" /* yacc.c:1646  */
4940     { (yyval) = (yyvsp[0]) ; }
4941 #line 4940 "../yaccsrc.c" /* yacc.c:1646  */
4942     break;
4943 
4944   case 434:
4945 #line 1288 "../yaccsrc.y" /* yacc.c:1646  */
4946     { AUTO_REDUCE( (yyvsp[0]), nullptr );
4947                                          (yyval) = makenode( X_U_PLUSS, 1, (yyvsp[0]) ); }
4948 #line 4947 "../yaccsrc.c" /* yacc.c:1646  */
4949     break;
4950 
4951   case 435:
4952 #line 1290 "../yaccsrc.y" /* yacc.c:1646  */
4953     { AUTO_REDUCE( (yyvsp[0]), nullptr );
4954                                          (yyval) = makenode( X_U_MINUS, 1, (yyvsp[0]) ); }
4955 #line 4954 "../yaccsrc.c" /* yacc.c:1646  */
4956     break;
4957 
4958   case 436:
4959 #line 1292 "../yaccsrc.y" /* yacc.c:1646  */
4960     { exiterror( ERR_INVALID_EXPRESSION, 1, __reginatext ); }
4961 #line 4960 "../yaccsrc.c" /* yacc.c:1646  */
4962     break;
4963 
4964   case 437:
4965 #line 1293 "../yaccsrc.y" /* yacc.c:1646  */
4966     { exiterror( ERR_INVALID_EXPRESSION, 1, __reginatext ); }
4967 #line 4966 "../yaccsrc.c" /* yacc.c:1646  */
4968     break;
4969 
4970   case 438:
4971 #line 1296 "../yaccsrc.y" /* yacc.c:1646  */
4972     { (yyval) = (yyvsp[-1]); }
4973 #line 4972 "../yaccsrc.c" /* yacc.c:1646  */
4974     break;
4975 
4976   case 439:
4977 #line 1297 "../yaccsrc.y" /* yacc.c:1646  */
4978     { exiterror( ERR_UNMATCHED_PARAN, 0 ); }
4979 #line 4978 "../yaccsrc.c" /* yacc.c:1646  */
4980     break;
4981 
4982   case 440:
4983 #line 1298 "../yaccsrc.y" /* yacc.c:1646  */
4984     { exiterror( ERR_UNMATCHED_PARAN, 0 ); }
4985 #line 4984 "../yaccsrc.c" /* yacc.c:1646  */
4986     break;
4987 
4988   case 441:
4989 #line 1301 "../yaccsrc.y" /* yacc.c:1646  */
4990     { (yyval) = (nodeptr)create_head( (const char *)retvalue ) ; }
4991 #line 4990 "../yaccsrc.c" /* yacc.c:1646  */
4992     break;
4993 
4994   case 442:
4995 #line 1305 "../yaccsrc.y" /* yacc.c:1646  */
4996     { (yyval) = makenode(X_EX_FUNC,1,(yyvsp[0])) ;
4997                                          (yyval)->name = (streng *)(yyvsp[-1]) ; }
4998 #line 4997 "../yaccsrc.c" /* yacc.c:1646  */
4999     break;
5000 
5001   case 443:
5002 #line 1307 "../yaccsrc.y" /* yacc.c:1646  */
5003     { (yyval) = makenode(X_IN_FUNC,1,(yyvsp[0])) ;
5004                                          (yyval)->name = (streng *)(yyvsp[-1]) ; }
5005 #line 5004 "../yaccsrc.c" /* yacc.c:1646  */
5006     break;
5007 
5008   case 444:
5009 #line 1311 "../yaccsrc.y" /* yacc.c:1646  */
5010     { /* ugly fake preservs parendepth */
5011                                          (yyval) = (YYSTYPE) parendepth;
5012                                          parendepth = 0; }
5013 #line 5012 "../yaccsrc.c" /* yacc.c:1646  */
5014     break;
5015 
5016   case 445:
5017 #line 1314 "../yaccsrc.y" /* yacc.c:1646  */
5018     { parendepth = (int) (yyval);
5019                                          (yyval) = (yyvsp[0]); }
5020 #line 5019 "../yaccsrc.c" /* yacc.c:1646  */
5021     break;
5022 
5023   case 446:
5024 #line 1318 "../yaccsrc.y" /* yacc.c:1646  */
5025     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
5026 #line 5025 "../yaccsrc.c" /* yacc.c:1646  */
5027     break;
5028 
5029   case 447:
5030 #line 1321 "../yaccsrc.y" /* yacc.c:1646  */
5031     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
5032 #line 5031 "../yaccsrc.c" /* yacc.c:1646  */
5033     break;
5034 
5035   case 448:
5036 #line 1324 "../yaccsrc.y" /* yacc.c:1646  */
5037     { (yyval) =makenode(X_TPL_SOLID,3,(yyvsp[-2]),(yyvsp[-1]),(yyvsp[0]));}
5038 #line 5037 "../yaccsrc.c" /* yacc.c:1646  */
5039     break;
5040 
5041   case 449:
5042 #line 1325 "../yaccsrc.y" /* yacc.c:1646  */
5043     { (yyval) =makenode(X_TPL_SOLID,1,(yyvsp[0])) ; }
5044 #line 5043 "../yaccsrc.c" /* yacc.c:1646  */
5045     break;
5046 
5047   case 450:
5048 #line 1326 "../yaccsrc.y" /* yacc.c:1646  */
5049     { exiterror( ERR_INVALID_TEMPLATE, 1, __reginatext ) ;}
5050 #line 5049 "../yaccsrc.c" /* yacc.c:1646  */
5051     break;
5052 
5053   case 451:
5054 #line 1329 "../yaccsrc.y" /* yacc.c:1646  */
5055     { (yyval) = makenode(X_NEG_OFFS,0) ;
5056                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5057 #line 5056 "../yaccsrc.c" /* yacc.c:1646  */
5058     break;
5059 
5060   case 452:
5061 #line 1331 "../yaccsrc.y" /* yacc.c:1646  */
5062     { (yyval) = makenode(X_POS_OFFS,0) ;
5063                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5064 #line 5063 "../yaccsrc.c" /* yacc.c:1646  */
5065     break;
5066 
5067   case 453:
5068 #line 1333 "../yaccsrc.y" /* yacc.c:1646  */
5069     { (yyval) = makenode(X_ABS_OFFS,0) ;
5070                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5071 #line 5070 "../yaccsrc.c" /* yacc.c:1646  */
5072     break;
5073 
5074   case 454:
5075 #line 1335 "../yaccsrc.y" /* yacc.c:1646  */
5076     { (yyval) = makenode(X_ABS_OFFS,0) ;
5077                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5078 #line 5077 "../yaccsrc.c" /* yacc.c:1646  */
5079     break;
5080 
5081   case 455:
5082 #line 1337 "../yaccsrc.y" /* yacc.c:1646  */
5083     { (yyval) = makenode(X_TPL_VAR,0) ;
5084                                          (yyval)->p[0] = (yyvsp[-1]) ; }
5085 #line 5084 "../yaccsrc.c" /* yacc.c:1646  */
5086     break;
5087 
5088   case 456:
5089 #line 1339 "../yaccsrc.y" /* yacc.c:1646  */
5090     { (yyval) = makenode(X_NEG_OFFS,0) ;
5091                                          (yyval)->p[0] = (yyvsp[-1]) ; }
5092 #line 5091 "../yaccsrc.c" /* yacc.c:1646  */
5093     break;
5094 
5095   case 457:
5096 #line 1341 "../yaccsrc.y" /* yacc.c:1646  */
5097     { (yyval) = makenode(X_POS_OFFS,0) ;
5098                                          (yyval)->p[0] = (yyvsp[-1]) ; }
5099 #line 5098 "../yaccsrc.c" /* yacc.c:1646  */
5100     break;
5101 
5102   case 458:
5103 #line 1343 "../yaccsrc.y" /* yacc.c:1646  */
5104     { (yyval) = makenode(X_ABS_OFFS,0) ;
5105                                          (yyval)->p[0] = (yyvsp[-1]) ; }
5106 #line 5105 "../yaccsrc.c" /* yacc.c:1646  */
5107     break;
5108 
5109   case 459:
5110 #line 1345 "../yaccsrc.y" /* yacc.c:1646  */
5111     { (yyval) = makenode(X_TPL_MVE,0) ;
5112                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5113 #line 5112 "../yaccsrc.c" /* yacc.c:1646  */
5114     break;
5115 
5116   case 460:
5117 #line 1349 "../yaccsrc.y" /* yacc.c:1646  */
5118     { (yyval) = (nodeptr)Str_cre_TSD(parser_data.TSD,retvalue) ; }
5119 #line 5118 "../yaccsrc.c" /* yacc.c:1646  */
5120     break;
5121 
5122   case 461:
5123 #line 1350 "../yaccsrc.y" /* yacc.c:1646  */
5124     { streng *sptr = Str_cre_TSD(parser_data.TSD,retvalue) ;
5125                                           if (myisnumber(parser_data.TSD, sptr))
5126                                           {
5127                                              exiterror( ERR_INVALID_INTEGER, 4, sptr->value ) ;
5128                                           }
5129                                           else
5130                                              exiterror( ERR_INVALID_TEMPLATE, 0 ) ;}
5131 #line 5130 "../yaccsrc.c" /* yacc.c:1646  */
5132     break;
5133 
5134   case 462:
5135 #line 1359 "../yaccsrc.y" /* yacc.c:1646  */
5136     { (yyval) = (nodeptr) Str_cre_TSD(parser_data.TSD,retvalue) ; }
5137 #line 5136 "../yaccsrc.c" /* yacc.c:1646  */
5138     break;
5139 
5140   case 463:
5141 #line 1360 "../yaccsrc.y" /* yacc.c:1646  */
5142     { streng *sptr = Str_make_TSD(parser_data.TSD,retlength) ;
5143                                          memcpy(sptr->value,retvalue,
5144                                                  sptr->len=retlength) ;
5145                                          (yyval) = (nodeptr) sptr ; }
5146 #line 5145 "../yaccsrc.c" /* yacc.c:1646  */
5147     break;
5148 
5149   case 464:
5150 #line 1364 "../yaccsrc.y" /* yacc.c:1646  */
5151     { streng *sptr = Str_make_TSD(parser_data.TSD,retlength) ;
5152                                          memcpy(sptr->value,retvalue,
5153                                                  sptr->len=retlength) ;
5154                                          (yyval) = (nodeptr) sptr ; }
5155 #line 5154 "../yaccsrc.c" /* yacc.c:1646  */
5156     break;
5157 
5158   case 465:
5159 #line 1370 "../yaccsrc.y" /* yacc.c:1646  */
5160     { (yyval) = makenode(X_TPL_POINT,1,(yyvsp[0])) ; }
5161 #line 5160 "../yaccsrc.c" /* yacc.c:1646  */
5162     break;
5163 
5164   case 466:
5165 #line 1371 "../yaccsrc.y" /* yacc.c:1646  */
5166     { (yyval) = makenode(X_TPL_SYMBOL,2,(yyvsp[0]),(yyvsp[-1])) ; }
5167 #line 5166 "../yaccsrc.c" /* yacc.c:1646  */
5168     break;
5169 
5170   case 467:
5171 #line 1372 "../yaccsrc.y" /* yacc.c:1646  */
5172     { (yyval) = NULL ; }
5173 #line 5172 "../yaccsrc.c" /* yacc.c:1646  */
5174     break;
5175 
5176   case 468:
5177 #line 1382 "../yaccsrc.y" /* yacc.c:1646  */
5178     { /* detect
5179                                           * "x = ( a,. b )",
5180                                           * "x = ( ,. b )",
5181                                           * "x = a,. b",
5182                                           * "x = ,. b",
5183                                           * "x = f( ( x,. b ) )",
5184                                           * "x = f( ( ,. b ) )"      */
5185                                          if ( parendepth < 0 )
5186                                             exiterror( ERR_UNEXPECTED_PARAN, 1 );
5187 
5188                                          /* With call being the extended kind
5189                                           * of CALL we may have:
5190                                           * "x = f( (a),. b )",
5191                                           * "x = f( a,. b )",
5192                                           * "x = f( ,. b )",
5193                                           * "CALL s (a),. b",
5194                                           * "CALL s a,. b",
5195                                           * "CALL s ,. b",
5196                                           * "call s (a),. b",
5197                                           * "call s a,. b",
5198                                           * "call s ,. b",
5199                                           * "call s( (a),. b )",
5200                                           * "call s( a,. b )",
5201                                           * "call s( ,. b )",
5202                                           * "call s (a,a),. b",
5203                                           * "call s (a),. b",
5204                                           * "call s (),. b"
5205                                           *
5206                                           * detect "(a),." and transform it
5207                                           * to "a,."                         */
5208                                          (yyvsp[-1]) = reduce_expr_list( (yyvsp[-1]),
5209                                                                 REDUCE_EXPR );
5210 
5211                                          /* detect "call s (a,b),. b" and
5212                                           * "call s (),. b", but every list on
5213                                           * the left side of "," is wrong, so
5214                                           * complain about every exprlist.   */
5215                                          if ( IS_EXPRLIST( (yyvsp[-1]) ) )
5216                                             exiterror( ERR_UNEXPECTED_PARAN, 1 );
5217 
5218                                          (yyvsp[-1]) = reduce_expr_list( (yyvsp[-1]),
5219                                                               REDUCE_SUBEXPR );
5220                                        }
5221 #line 5220 "../yaccsrc.c" /* yacc.c:1646  */
5222     break;
5223 
5224   case 469:
5225 #line 1425 "../yaccsrc.y" /* yacc.c:1646  */
5226     { /*
5227                                           * Fixes bug 961301.
5228                                           */
5229                                          nodeptr curr;
5230 
5231                                          assert( IS_EXPRLIST( (yyvsp[0]) ) );
5232 
5233                                          /* detect ",()." */
5234                                          if ( IS_EXPRLIST( (yyvsp[0])->p[0] )
5235                                            && ( (yyvsp[0])->p[1] == NULL )
5236                                            && ( (yyvsp[0])->p[0]->p[0] == NULL ) )
5237                                             exiterror( ERR_UNEXPECTED_PARAN, 0 );
5238 
5239                                          /* detect ",(a,b)." */
5240                                          if ( IS_EXPRLIST( (yyvsp[0])->p[0] )
5241                                            && ( (yyvsp[0])->p[1] == NULL )
5242                                            && IS_EXPRLIST( (yyvsp[0])->p[0]->p[1] ) )
5243                                             exiterror( ERR_UNEXPECTED_PARAN, 1 );
5244 
5245                                          /* detect ",(a)." and transform it
5246                                           * to ",a."                         */
5247                                          (yyvsp[0]) = reduce_expr_list( (yyvsp[0]),
5248                                                                 REDUCE_RIGHT );
5249                                          assert( IS_EXPRLIST( (yyvsp[0]) ) );
5250 
5251                                          /* Detect something like
5252                                           * "call s (a,b)+1"                 */
5253                                          curr = (yyvsp[0])->p[0];
5254                                          if ( ( curr != NULL )
5255                                            && !IS_EXPRLIST( curr )
5256                                            && !IS_FUNCTION( curr )
5257                                            && ( IS_EXPRLIST( curr->p[0] )
5258                                              || IS_EXPRLIST( curr->p[1] ) ) )
5259                                             exiterror( ERR_INVALID_EXPRESSION, 0 );
5260 
5261                                          (yyval) = makenode( X_EXPRLIST, 2, (yyvsp[-3]), (yyvsp[0]) );
5262                                          checkconst( (yyval) ); }
5263 #line 5262 "../yaccsrc.c" /* yacc.c:1646  */
5264     break;
5265 
5266   case 470:
5267 #line 1462 "../yaccsrc.y" /* yacc.c:1646  */
5268     { /* detect
5269                                           * "x = ()."
5270                                           * "x = f(().)"
5271                                           * "call s (().)"
5272                                           * "CALL s ()."                     */
5273                                          if ( ( parendepth < 0 ) && ( (yyvsp[0]) == NULL ) )
5274                                             exiterror( ERR_UNEXPECTED_PARAN, 0 );
5275 
5276                                          /* With call being the extended kind
5277                                           * of CALL we may have:
5278                                           * "x = ( a. )",
5279                                           * "x = f( . )",
5280                                           * "x = f( ., )",
5281                                           * "x = f( a. )",
5282                                           * "x = f( a., )",
5283                                           * "x = f( a, . )",
5284                                           * "x = f( a, b. )",
5285                                           * "CALL s .",
5286                                           * "CALL s .,",
5287                                           * "CALL s a.,",
5288                                           * "CALL s a, .",
5289                                           * "CALL s a, b.",
5290                                           * "call s .",
5291                                           * "call s .,",
5292                                           * "call s a.,",
5293                                           * "call s a, .",
5294                                           * "call s a, b.",
5295                                           * "call s (a.)",
5296                                           * "call s (a)+1, .",
5297                                           * "call s (a), .",
5298                                           * "call s (a), a.",
5299                                           * "call s (a), (a).",
5300                                           * "call s ( ., )",
5301                                           * "call s ( a., )",
5302                                           * "call s ( a, . )",
5303                                           * "call s ( a, b. )"               */
5304 
5305                                          (yyvsp[0]) = reduce_expr_list( (yyvsp[0]),
5306                                                               REDUCE_SUBEXPR );
5307                                          (yyval) = makenode( X_EXPRLIST, 1, (yyvsp[0]) );
5308                                          checkconst( (yyval) );
5309                                         }
5310 #line 5309 "../yaccsrc.c" /* yacc.c:1646  */
5311     break;
5312 
5313   case 471:
5314 #line 1506 "../yaccsrc.y" /* yacc.c:1646  */
5315     { (yyval) = (yyvsp[0]) ; }
5316 #line 5315 "../yaccsrc.c" /* yacc.c:1646  */
5317     break;
5318 
5319   case 472:
5320 #line 1507 "../yaccsrc.y" /* yacc.c:1646  */
5321     { (yyval) = NULL ; }
5322 #line 5321 "../yaccsrc.c" /* yacc.c:1646  */
5323     break;
5324 
5325   case 473:
5326 #line 1510 "../yaccsrc.y" /* yacc.c:1646  */
5327     { (yyval) = makenode(X_SIM_SYMBOL,1,(yyvsp[0])) ;
5328                                          (yyval)->name = (streng *) (yyvsp[-1]) ; }
5329 #line 5328 "../yaccsrc.c" /* yacc.c:1646  */
5330     break;
5331 
5332   case 474:
5333 #line 1512 "../yaccsrc.y" /* yacc.c:1646  */
5334     { (yyval) = makenode(X_SIM_SYMBOL,0) ;
5335                                          (yyval)->name = (streng *) (yyvsp[0]) ; }
5336 #line 5335 "../yaccsrc.c" /* yacc.c:1646  */
5337     break;
5338 
5339   case 475:
5340 #line 1514 "../yaccsrc.y" /* yacc.c:1646  */
5341     { (yyval) = makenode(X_IND_SYMBOL,1,(yyvsp[0])) ;
5342                                          (yyval)->name = (streng *) (yyvsp[-2]) ; }
5343 #line 5342 "../yaccsrc.c" /* yacc.c:1646  */
5344     break;
5345 
5346   case 476:
5347 #line 1516 "../yaccsrc.y" /* yacc.c:1646  */
5348     { (yyval) = makenode(X_IND_SYMBOL,0) ;
5349                                          (yyval)->name = (streng *) (yyvsp[-1]) ; }
5350 #line 5349 "../yaccsrc.c" /* yacc.c:1646  */
5351     break;
5352 
5353   case 477:
5354 #line 1520 "../yaccsrc.y" /* yacc.c:1646  */
5355     { (yyval) = (treenode *) Str_cre_TSD(parser_data.TSD,retvalue);}
5356 #line 5355 "../yaccsrc.c" /* yacc.c:1646  */
5357     break;
5358 
5359   case 478:
5360 #line 1523 "../yaccsrc.y" /* yacc.c:1646  */
5361     { (yyval) = (treenode *) Str_cre_TSD(parser_data.TSD,retvalue);}
5362 #line 5361 "../yaccsrc.c" /* yacc.c:1646  */
5363     break;
5364 
5365   case 479:
5366 #line 1524 "../yaccsrc.y" /* yacc.c:1646  */
5367     { exiterror( ERR_SYMBOL_EXPECTED, 1, __reginatext ) ;}
5368 #line 5367 "../yaccsrc.c" /* yacc.c:1646  */
5369     break;
5370 
5371 
5372 #line 5371 "../yaccsrc.c" /* yacc.c:1646  */
5373       default: break;
5374     }
5375   /* User semantic actions sometimes alter yychar, and that requires
5376      that yytoken be updated with the new translation.  We take the
5377      approach of translating immediately before every use of yytoken.
5378      One alternative is translating here after every semantic action,
5379      but that translation would be missed if the semantic action invokes
5380      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
5381      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
5382      incorrect destructor might then be invoked immediately.  In the
5383      case of YYERROR or YYBACKUP, subsequent parser actions might lead
5384      to an incorrect destructor call or verbose syntax error message
5385      before the lookahead is translated.  */
5386   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
5387 
5388   YYPOPSTACK (yylen);
5389   yylen = 0;
5390   YY_STACK_PRINT (yyss, yyssp);
5391 
5392   *++yyvsp = yyval;
5393 
5394   /* Now 'shift' the result of the reduction.  Determine what state
5395      that goes to, based on the state we popped back to and the rule
5396      number reduced by.  */
5397 
5398   yyn = yyr1[yyn];
5399 
5400   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
5401   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
5402     yystate = yytable[yystate];
5403   else
5404     yystate = yydefgoto[yyn - YYNTOKENS];
5405 
5406   goto yynewstate;
5407 
5408 
5409 /*--------------------------------------.
5410 | yyerrlab -- here on detecting error.  |
5411 `--------------------------------------*/
5412 yyerrlab:
5413   /* Make sure we have latest lookahead translation.  See comments at
5414      user semantic actions for why this is necessary.  */
5415   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
5416 
5417   /* If not already recovering from an error, report this error.  */
5418   if (!yyerrstatus)
5419     {
5420       ++yynerrs;
5421 #if ! YYERROR_VERBOSE
5422       yyerror (YY_("syntax error"));
5423 #else
5424 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
5425                                         yyssp, yytoken)
5426       {
5427         char const *yymsgp = YY_("syntax error");
5428         int yysyntax_error_status;
5429         yysyntax_error_status = YYSYNTAX_ERROR;
5430         if (yysyntax_error_status == 0)
5431           yymsgp = yymsg;
5432         else if (yysyntax_error_status == 1)
5433           {
5434             if (yymsg != yymsgbuf)
5435               YYSTACK_FREE (yymsg);
5436             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
5437             if (!yymsg)
5438               {
5439                 yymsg = yymsgbuf;
5440                 yymsg_alloc = sizeof yymsgbuf;
5441                 yysyntax_error_status = 2;
5442               }
5443             else
5444               {
5445                 yysyntax_error_status = YYSYNTAX_ERROR;
5446                 yymsgp = yymsg;
5447               }
5448           }
5449         yyerror (yymsgp);
5450         if (yysyntax_error_status == 2)
5451           goto yyexhaustedlab;
5452       }
5453 # undef YYSYNTAX_ERROR
5454 #endif
5455     }
5456 
5457 
5458 
5459   if (yyerrstatus == 3)
5460     {
5461       /* If just tried and failed to reuse lookahead token after an
5462          error, discard it.  */
5463 
5464       if (yychar <= YYEOF)
5465         {
5466           /* Return failure if at end of input.  */
5467           if (yychar == YYEOF)
5468             YYABORT;
5469         }
5470       else
5471         {
5472           yydestruct ("Error: discarding",
5473                       yytoken, &yylval);
5474           yychar = YYEMPTY;
5475         }
5476     }
5477 
5478   /* Else will try to reuse lookahead token after shifting the error
5479      token.  */
5480   goto yyerrlab1;
5481 
5482 
5483 /*---------------------------------------------------.
5484 | yyerrorlab -- error raised explicitly by YYERROR.  |
5485 `---------------------------------------------------*/
5486 yyerrorlab:
5487 
5488   /* Pacify compilers like GCC when the user code never invokes
5489      YYERROR and the label yyerrorlab therefore never appears in user
5490      code.  */
5491   if (/*CONSTCOND*/ 0)
5492      goto yyerrorlab;
5493 
5494   /* Do not reclaim the symbols of the rule whose action triggered
5495      this YYERROR.  */
5496   YYPOPSTACK (yylen);
5497   yylen = 0;
5498   YY_STACK_PRINT (yyss, yyssp);
5499   yystate = *yyssp;
5500   goto yyerrlab1;
5501 
5502 
5503 /*-------------------------------------------------------------.
5504 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
5505 `-------------------------------------------------------------*/
5506 yyerrlab1:
5507   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
5508 
5509   for (;;)
5510     {
5511       yyn = yypact[yystate];
5512       if (!yypact_value_is_default (yyn))
5513         {
5514           yyn += YYTERROR;
5515           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
5516             {
5517               yyn = yytable[yyn];
5518               if (0 < yyn)
5519                 break;
5520             }
5521         }
5522 
5523       /* Pop the current state because it cannot handle the error token.  */
5524       if (yyssp == yyss)
5525         YYABORT;
5526 
5527 
5528       yydestruct ("Error: popping",
5529                   yystos[yystate], yyvsp);
5530       YYPOPSTACK (1);
5531       yystate = *yyssp;
5532       YY_STACK_PRINT (yyss, yyssp);
5533     }
5534 
5535   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
5536   *++yyvsp = yylval;
5537   YY_IGNORE_MAYBE_UNINITIALIZED_END
5538 
5539 
5540   /* Shift the error token.  */
5541   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
5542 
5543   yystate = yyn;
5544   goto yynewstate;
5545 
5546 
5547 /*-------------------------------------.
5548 | yyacceptlab -- YYACCEPT comes here.  |
5549 `-------------------------------------*/
5550 yyacceptlab:
5551   yyresult = 0;
5552   goto yyreturn;
5553 
5554 /*-----------------------------------.
5555 | yyabortlab -- YYABORT comes here.  |
5556 `-----------------------------------*/
5557 yyabortlab:
5558   yyresult = 1;
5559   goto yyreturn;
5560 
5561 #if !defined yyoverflow || YYERROR_VERBOSE
5562 /*-------------------------------------------------.
5563 | yyexhaustedlab -- memory exhaustion comes here.  |
5564 `-------------------------------------------------*/
5565 yyexhaustedlab:
5566   yyerror (YY_("memory exhausted"));
5567   yyresult = 2;
5568   /* Fall through.  */
5569 #endif
5570 
5571 yyreturn:
5572   if (yychar != YYEMPTY)
5573     {
5574       /* Make sure we have latest lookahead translation.  See comments at
5575          user semantic actions for why this is necessary.  */
5576       yytoken = YYTRANSLATE (yychar);
5577       yydestruct ("Cleanup: discarding lookahead",
5578                   yytoken, &yylval);
5579     }
5580   /* Do not reclaim the symbols of the rule whose action triggered
5581      this YYABORT or YYACCEPT.  */
5582   YYPOPSTACK (yylen);
5583   YY_STACK_PRINT (yyss, yyssp);
5584   while (yyssp != yyss)
5585     {
5586       yydestruct ("Cleanup: popping",
5587                   yystos[*yyssp], yyvsp);
5588       YYPOPSTACK (1);
5589     }
5590 #ifndef yyoverflow
5591   if (yyss != yyssa)
5592     YYSTACK_FREE (yyss);
5593 #endif
5594 #if YYERROR_VERBOSE
5595   if (yymsg != yymsgbuf)
5596     YYSTACK_FREE (yymsg);
5597 #endif
5598   return yyresult;
5599 }
5600 #line 1527 "../yaccsrc.y" /* yacc.c:1906  */
5601 
5602 
makenode(int type,int numb,...)5603 static nodeptr makenode( int type, int numb, ... )
5604 {
5605    nodeptr thisleave ;
5606    va_list argptr ;
5607    int i ;
5608 
5609    assert(numb <= (int) (sizeof(thisleave->p)/sizeof(thisleave->p[0])));
5610 #ifdef REXXDEBUG
5611    printf("makenode: making new node, type: %d\n",type) ;
5612 #endif /* REXXDEBUG */
5613 
5614    thisleave = FreshNode( ) ;
5615    /* thisleave is initialized to zero except for nodeindex */
5616    va_start( argptr, numb ) ;
5617    thisleave->type = type ;
5618    thisleave->lineno = -1 ;
5619    thisleave->charnr = -1 ;
5620    for (i=0;i<numb;i++)
5621       thisleave->p[i]=va_arg(argptr, nodeptr) ;
5622 
5623    va_end( argptr ) ;
5624 
5625    return( thisleave ) ;
5626 }
5627 
getdokeyword(int type)5628 static char *getdokeyword( int type )
5629 {
5630    char *ptr;
5631    switch( type )
5632    {
5633       case X_DO_TO: ptr="TO";break;
5634       case X_DO_BY: ptr="BY";break;
5635       case X_DO_FOR: ptr="FOR";break;
5636       default: ptr="";break;
5637    }
5638    return ptr;
5639 }
5640 
checkdosyntax(cnodeptr thisptr)5641 static void checkdosyntax( cnodeptr thisptr )
5642 {
5643    if ((thisptr->p[1]!=NULL)&&(thisptr->p[2]!=NULL))
5644    {
5645       if ((thisptr->p[1]->type)==(thisptr->p[2]->type))
5646       {
5647          exiterror( ERR_INVALID_DO_SYNTAX, 1, getdokeyword(thisptr->p[1]->type) )  ;
5648       }
5649    }
5650    if ((thisptr->p[2]!=NULL)&&(thisptr->p[3]!=NULL))
5651    {
5652       if ((thisptr->p[2]->type)==(thisptr->p[3]->type))
5653       {
5654          exiterror( ERR_INVALID_DO_SYNTAX, 1, getdokeyword(thisptr->p[2]->type) )  ;
5655       }
5656    }
5657    if ((thisptr->p[1]!=NULL)&&(thisptr->p[3]!=NULL))
5658    {
5659       if ((thisptr->p[1]->type)==(thisptr->p[3]->type))
5660       {
5661          exiterror( ERR_INVALID_DO_SYNTAX, 1, getdokeyword(thisptr->p[1]->type) )  ;
5662       }
5663    }
5664    return ;
5665 }
5666 
5667 
newlabel(const tsd_t * TSD,internal_parser_type * ipt,nodeptr thisptr)5668 void newlabel( const tsd_t *TSD, internal_parser_type *ipt, nodeptr thisptr )
5669 {
5670    labelboxptr newptr ;
5671 
5672    assert( thisptr ) ;
5673 
5674    newptr = (labelboxptr)MallocTSD(sizeof(labelbox)) ;
5675 
5676    newptr->next = NULL ;
5677    newptr->entry = thisptr ;
5678    if (ipt->first_label == NULL)
5679    {
5680       ipt->first_label = newptr ;
5681       ipt->last_label = newptr ; /* must be NULL, too */
5682    }
5683    else
5684    {
5685       ipt->last_label->next = newptr ;
5686       ipt->last_label = newptr ;
5687    }
5688    ipt->numlabels++;
5689 }
5690 
create_tail(const char * name)5691 static nodeptr create_tail( const char *name )
5692 {
5693    const char *cptr ;
5694    nodeptr node ;
5695    int constant ;
5696    streng *tname ;
5697    tsd_t *TSD = parser_data.TSD;
5698 
5699    if (!*name)
5700    {
5701       node = makenode( X_CTAIL_SYMBOL, 0 ) ;
5702       node->name = Str_make_TSD( parser_data.TSD, 0) ;
5703       return node ;
5704    }
5705 
5706    cptr = name ;
5707    constant = rx_isdigit(*cptr) || *cptr=='.' || (!*cptr) ;
5708    node = makenode( (constant) ? X_CTAIL_SYMBOL : X_VTAIL_SYMBOL, 0 ) ;
5709 
5710    for (;*cptr && *cptr!='.'; cptr++) ;
5711    node->name = Str_ncre_TSD( parser_data.TSD, name, cptr-name ) ;
5712 
5713    if (*cptr)
5714    {
5715       node->p[0] = create_tail( ++cptr ) ;
5716       if (constant && node->p[0]->type==X_CTAIL_SYMBOL)
5717       {
5718          streng *first, *second ;
5719          nodeptr tptr ;
5720 
5721          first = node->name ;
5722          second = node->p[0]->name ;
5723          node->name = NULL;
5724          node->p[0]->name = NULL;
5725          tname = Str_makeTSD( first->len + second->len + 1) ;
5726          memcpy( tname->value, first->value, first->len ) ;
5727          tname->value[first->len] = '.' ;
5728          memcpy( tname->value+first->len+1, second->value, second->len) ;
5729          tname->len = first->len + second->len + 1 ;
5730 
5731          Free_stringTSD( first ) ;
5732          Free_stringTSD( second ) ;
5733          node->name = tname ;
5734          tptr = node->p[0] ;
5735          node->p[0] = tptr->p[0] ;
5736          RejectNode(tptr);
5737       }
5738    }
5739 
5740    return node ;
5741 }
5742 
create_head(const char * name)5743 static nodeptr create_head( const char *name )
5744 {
5745    const char *cptr ;
5746    nodeptr node ;
5747 
5748    /* Bypass reserved variables */
5749    cptr = ( *name ) ? ( name + 1 ) : name;
5750    for (; *cptr && *cptr!='.'; cptr++) ;
5751    node = makenode( X_SIM_SYMBOL, 0 ) ;
5752    node->name = Str_ncre_TSD( parser_data.TSD, name, cptr-name+(*cptr=='.')) ;
5753 
5754    if (*cptr)
5755    {
5756       if (*(++cptr))
5757          node->p[0] = create_tail( cptr ) ;
5758       else
5759          node->p[0] = NULL ;
5760 
5761       node->type = (node->p[0]) ? X_HEAD_SYMBOL : X_STEM_SYMBOL ;
5762    }
5763 
5764    return node ;
5765 }
5766 
5767 
gettypeof(nodeptr thisptr)5768 static node_type gettypeof( nodeptr thisptr )
5769 {
5770    tsd_t *TSD = parser_data.TSD;
5771 
5772    switch(thisptr->type)
5773    {
5774       case X_PLUSS:
5775       case X_MINUS:
5776       case X_MULT:
5777       case X_U_PLUSS:
5778       case X_U_MINUS:
5779       case X_DEVIDE:
5780       case X_INTDIV:
5781       case X_MODULUS:
5782       case X_EQUAL:
5783       case X_DIFF:
5784       case X_GTE:
5785       case X_GT:
5786       case X_LTE:
5787       case X_LT:
5788       case X_SEQUAL:
5789       case X_SDIFF:
5790       case X_SGTE:
5791       case X_SGT:
5792       case X_SLTE:
5793       case X_SLT:
5794       case X_NEQUAL:
5795       case X_NDIFF:
5796       case X_NGTE:
5797       case X_NGT:
5798       case X_NLTE:
5799       case X_NLT:
5800          return IS_A_NUMBER ;
5801 
5802 
5803       case X_SIM_SYMBOL:
5804          return IS_SIM_SYMBOL ;
5805 
5806       case X_HEAD_SYMBOL:
5807          return IS_COMP_SYMBOL ;
5808 
5809       case X_STRING:
5810       case X_CON_SYMBOL:
5811       {
5812          if (thisptr->u.number)
5813          {
5814             fprintf( stderr, "Found an internal spot of investigation of the Regina interpreter.\n"
5815                              "Please inform Mark Hessling or Florian Grosse-Coosmann about the\n"
5816                              "circumstances and this script.\n"
5817                              "\n"
5818                              "Many thanks!\n"
5819                              "email addresses:\n"
5820                              "mark@rexx.org\n"
5821                              "florian@grosse-coosmann.de\n");
5822             /* FIXME: When does this happen?
5823              * It doesn't happen if no feedback is send until end of 2005.
5824              */
5825             return IS_A_NUMBER ;
5826          }
5827 
5828          if ( ( thisptr->u.number = is_a_descr( TSD, thisptr->name ) ) != NULL )
5829             return IS_A_NUMBER;
5830          return IS_NO_NUMBER;
5831       }
5832    }
5833    return IS_UNKNOWN ;
5834 }
5835 
5836 
5837 
transform(nodeptr thisptr)5838 static void transform( nodeptr thisptr )
5839 {
5840    int type ;
5841    node_type left,rght;
5842 
5843    left = gettypeof( thisptr->p[0] ) ;
5844    rght = gettypeof( thisptr->p[1] ) ;
5845    type = thisptr->type ;
5846 
5847    if ( ( left == IS_A_NUMBER ) && ( rght == IS_A_NUMBER ) )
5848    {
5849       if (type==X_EQUAL)
5850          thisptr->type = X_NEQUAL ;
5851       else if (type==X_DIFF)
5852          thisptr->type = X_NDIFF ;
5853       else if (type==X_GTE)
5854          thisptr->type = X_NGTE ;
5855       else if (type==X_GT)
5856          thisptr->type = X_NGT ;
5857       else if (type==X_LTE)
5858          thisptr->type = X_NLTE ;
5859       else if (type==X_LT)
5860          thisptr->type = X_NLT ;
5861    }
5862    else if ( ( left == IS_NO_NUMBER ) || ( rght == IS_NO_NUMBER ) )
5863    {
5864       if (type==X_EQUAL)
5865          thisptr->type = X_SEQUAL ;
5866       else if (type==X_DIFF)
5867          thisptr->type = X_SDIFF ;
5868       else if (type==X_GTE)
5869          thisptr->type = X_SGTE ;
5870       else if (type==X_GT)
5871          thisptr->type = X_SGT ;
5872       else if (type==X_LTE)
5873          thisptr->type = X_SLTE ;
5874       else if (type==X_LT)
5875          thisptr->type = X_SLT ;
5876    }
5877    else
5878    {
5879       type = thisptr->p[0]->type ;
5880       if ( ( left == IS_A_NUMBER )
5881         && ( ( type == X_STRING ) || ( type == X_CON_SYMBOL ) ) )
5882          thisptr->u.flags.lnum = 1 ;
5883       else if ( left == IS_SIM_SYMBOL )
5884          thisptr->u.flags.lsvar = 1 ;
5885       else if ( left == IS_COMP_SYMBOL )
5886          thisptr->u.flags.lcvar = 1 ;
5887 
5888       type = thisptr->p[1]->type ;
5889       if ( ( rght == IS_A_NUMBER )
5890         && ( ( type == X_STRING ) || ( type == X_CON_SYMBOL ) ) )
5891          thisptr->u.flags.rnum = 1 ;
5892       else if ( rght == IS_SIM_SYMBOL )
5893          thisptr->u.flags.rsvar = 1 ;
5894       else if ( rght == IS_COMP_SYMBOL )
5895          thisptr->u.flags.rcvar = 1 ;
5896    }
5897 }
5898 
5899 
is_const(cnodeptr thisptr)5900 static int is_const( cnodeptr thisptr )
5901 {
5902    if (!thisptr)
5903       return 1 ;
5904 
5905    switch (thisptr->type)
5906    {
5907       case X_STRING:
5908       case X_CON_SYMBOL:
5909          return 1 ;
5910 
5911 #if 0
5912       Pre-evaluation is not allowed. DIGITS and FUZZ may change within loops
5913       and the resulting value may or may not be the same. Concatenation with
5914       or without spaces is the sole allowed operation.
5915 
5916       NEVER ENABLE THIS AGAIN WITHOUT SOLVING THIS PROBLEMS!
5917 
5918       case X_U_PLUSS:
5919       case X_U_MINUS:
5920          return is_const( thisptr->p[0] ) ;
5921 
5922       case X_PLUSS:
5923       case X_MINUS:
5924       case X_MULT:
5925 /*    case X_DEVIDE: Bug 20000807-41821 */
5926       case X_INTDIV:
5927       case X_MODULUS:
5928       case X_EQUAL:
5929       case X_DIFF:
5930       case X_GTE:
5931       case X_GT:
5932       case X_LTE:
5933       case X_LT:
5934       case X_SEQUAL:
5935       case X_SDIFF:
5936       case X_SGTE:
5937       case X_SGT:
5938       case X_SLTE:
5939       case X_SLT:
5940       case X_NEQUAL:
5941       case X_NDIFF:
5942       case X_NGTE:
5943       case X_NGT:
5944       case X_NLTE:
5945       case X_NLT:
5946 #endif
5947 
5948       case X_SPACE:
5949       case X_CONCAT:
5950          return is_const( thisptr->p[0] ) && is_const( thisptr->p[1] ) ;
5951    }
5952    return 0 ;
5953 }
5954 
5955 
checkconst(nodeptr thisptr)5956 static void checkconst( nodeptr thisptr )
5957 {
5958    tsd_t *TSD = parser_data.TSD;
5959 
5960    assert( thisptr->type == X_EXPRLIST ) ;
5961    if (is_const(thisptr->p[0]))
5962    {
5963       if (thisptr->p[0])
5964          thisptr->u.strng = evaluate( TSD, thisptr->p[0], NULL ) ;
5965       else
5966          thisptr->u.strng = NULL ;
5967 
5968       thisptr->type = X_CEXPRLIST ;
5969    }
5970 }
5971 
5972 /*
5973  * reduce_expr_list will be invoked if the reduction of a list expression for
5974  * "call" arguments or a plain "(expr)" is needed. The reduction of the
5975  * outer parentheses of the extended CALL syntax is done with
5976  * mode==REDUCE_CALL, the reduction of a simple "(expr)" is done with
5977  * mode==REDUCE_EXPR. REDUCE_RIGHT is a synonym for REDUCE_CALL currently and
5978  * is intended to be used for reducing the right side of an expression list.
5979  *
5980  * REDUCE_SUBEXPR detect "call s (a)+1," and "call s 1+(a)," and reduces it.
5981  * Furthermore it detects "call s ()+1", "call s 1+()", "call s 1+(a,b)",
5982  * "call s (a,b)+1" and raises an error in this case.
5983  */
reduce_expr_list(nodeptr thisptr,reduce_mode mode)5984 static nodeptr reduce_expr_list( nodeptr thisptr, reduce_mode mode )
5985 {
5986    nodeptr h, retval = thisptr;
5987 
5988    if ( !thisptr )
5989       return retval;
5990 
5991    if ( mode == REDUCE_SUBEXPR )
5992    {
5993       if ( ( parendepth == 1 ) && !IS_FUNCTION( thisptr ) && !IS_EXPRLIST( thisptr ) )
5994       {
5995          if ( IS_EXPRLIST( thisptr->p[0] ) )
5996          {
5997             h = thisptr->p[0];
5998             if ( ( h->p[0] == NULL ) || ( h->p[1] != NULL ) )
5999                exiterror( ERR_INVALID_EXPRESSION, 0 );
6000             thisptr->p[0] = h->p[0];
6001             RejectNode( h );
6002          }
6003          if ( IS_EXPRLIST( thisptr->p[1] ) )
6004          {
6005             h = thisptr->p[1];
6006             if ( ( h->p[0] == NULL ) || ( h->p[1] != NULL ) )
6007                exiterror( ERR_INVALID_EXPRESSION, 0 );
6008             thisptr->p[1] = h->p[0];
6009             RejectNode( h );
6010          }
6011       }
6012       return retval;
6013    }
6014 
6015    if ( !IS_EXPRLIST( thisptr ) )
6016       return retval;
6017 
6018    if ( ( mode == REDUCE_CALL ) || ( mode == REDUCE_RIGHT ) )
6019    {
6020       if ( IS_EXPRLIST( thisptr->p[0] ) && ( thisptr->p[1] == NULL ) )
6021       {
6022          retval = thisptr->p[0];
6023          RejectNode( thisptr );
6024       }
6025    }
6026    else
6027    {
6028       /*
6029        * mode == REDUCE_EXPR
6030        */
6031       if ( ( thisptr->p[0] != NULL ) && ( thisptr->p[1] == NULL ) )
6032       {
6033          if ( !IS_EXPRLIST( thisptr->p[0] ) )
6034          {
6035             retval = thisptr->p[0];
6036             RejectNode( thisptr );
6037          }
6038       }
6039    }
6040    return retval;
6041 }
6042 
6043 /*
6044  * optgluelast connect p2 as the ->next element to p1. Every element may be
6045  * NULL.
6046  * If both are non-NULL, the connection is performed using the o.last elements.
6047  * Just the o.last element of p1 remains non-NULL.
6048  *
6049  * Returns: NULL if p1 and p2 are NULL.
6050  *          The non-NULL element if one argumet is NULL.
6051  *          p1 otherwise.
6052  */
optgluelast(nodeptr p1,nodeptr p2)6053 static nodeptr optgluelast( nodeptr p1, nodeptr p2 )
6054 {
6055    nodeptr p2last;
6056 
6057    if ( p1 == NULL )
6058       return p2;
6059    if ( p2 == NULL )
6060       return p1;
6061 
6062    /*
6063     * This is performed very often, so keep the code fast.
6064     *
6065     * p2last is the "o.last"-element of p2 or just p2 if p2 has no next
6066     * elements. We set p1's o.last further down, but we have to ensure that
6067     * p2->o.last is NULL first. Therefore every element in the ->next chain
6068     * of p1 will have NULL as its o.last field.
6069     */
6070    if ( ( p2last = p2->o.last ) == NULL )
6071       p2last = p2;
6072    else
6073       p2->o.last = NULL;
6074 
6075    if ( p1->o.last == NULL )
6076       p1->next = p2;
6077    else
6078       p1->o.last->next = p2;
6079    p1->o.last = p2last;
6080 
6081    return p1;
6082 }
6083 
6084 /*
6085  * justlabels returns 1, if n consists of a sequence of labels. The return
6086  * value is 0 otherwise.
6087  */
justlabels(nodeptr n)6088 static int justlabels( nodeptr n )
6089 {
6090    while ( n != NULL )
6091    {
6092       if ( n->type != X_LABEL )
6093          return 0;
6094       n = n->next;
6095    }
6096 
6097    return 1;
6098 }
6099 
6100 /*
6101  * move_labels move the labels from the end of "end" to the end of "front".
6102  * The labels are marked "read_only" if level is nonnull, the read-only flag
6103  * is removed if level is 0.
6104  * NOTE: At least one element of the "end" chain must contain a non-label
6105  * element.
6106  */
move_labels(nodeptr front,nodeptr end,int level)6107 static void move_labels( nodeptr front, nodeptr end, int level )
6108 {
6109    nodeptr oend = end;
6110    nodeptr labels;
6111 
6112    assert( front != NULL );
6113    assert( !justlabels( end ) );
6114 
6115    while ( !justlabels( end->next ) )
6116       end = end->next;
6117 
6118    if ( ( labels = end->next ) == NULL )
6119       return;
6120 
6121    /*
6122     * extract the labels.
6123     */
6124    labels->o.last = oend->o.last;
6125    end->next = NULL;
6126    if ( end == oend )
6127       oend->o.last = NULL;
6128    else
6129       oend->o.last = end;
6130 
6131    if ( labels->next == NULL )
6132       labels->o.last = NULL;
6133 
6134    /*
6135     * add the labels to the end of front and then re-mark the labels.
6136     */
6137    optgluelast( front, labels );
6138    while ( labels ) {
6139       labels->u.trace_only = ( level == 0 ) ? 0 : 1;
6140       labels = labels->next;
6141    }
6142 }
6143