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