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