xref: /OK3568_Linux_fs/external/xserver/hw/dmx/config/parser.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /* A Bison parser, made by GNU Bison 3.7.3.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
6    Inc.
7 
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 3 of the License, or
11    (at your option) any later version.
12 
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.
17 
18    You should have received a copy of the GNU General Public License
19    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20 
21 /* As a special exception, you may create a larger work that contains
22    part or all of the Bison parser skeleton and distribute that work
23    under terms of your choice, so long as that work isn't itself a
24    parser generator using the skeleton or a modified version thereof
25    as a parser skeleton.  Alternatively, if you modify or redistribute
26    the parser skeleton itself, you may (at your option) remove this
27    special exception, which will cause the skeleton and the resulting
28    Bison output files to be licensed under the GNU General Public
29    License without this special exception.
30 
31    This special exception was added by the Free Software Foundation in
32    version 2.2 of Bison.  */
33 
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35    simplifying the original so-called "semantic" parser.  */
36 
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38    especially those whose name start with YY_ or yy_.  They are
39    private implementation details that can be changed or removed.  */
40 
41 /* All symbols defined below should begin with yy or YY, to avoid
42    infringing on user name space.  This should be done even for local
43    variables, as they might otherwise be expanded by user macros.
44    There are some unavoidable exceptions within include files to
45    define necessary library symbols; they are noted "INFRINGES ON
46    USER NAME SPACE" below.  */
47 
48 /* Identify Bison output.  */
49 #define YYBISON 1
50 
51 /* Bison version.  */
52 #define YYBISON_VERSION "3.7.3"
53 
54 /* Skeleton name.  */
55 #define YYSKELETON_NAME "yacc.c"
56 
57 /* Pure parsers.  */
58 #define YYPURE 0
59 
60 /* Push parsers.  */
61 #define YYPUSH 0
62 
63 /* Pull parsers.  */
64 #define YYPULL 1
65 
66 
67 
68 
69 /* First part of user prologue.  */
70 #line 35 "parser.y"
71 
72 #ifdef HAVE_DMX_CONFIG_H
73 #include <dmx-config.h>
74 #endif
75 
76 #include "dmxparse.h"
77 #include <string.h>
78 #include <stdlib.h>
79 #define YYDEBUG 1
80 #define YYERROR_VERBOSE
81 #define YY_USE_PROTOS
82 
83 extern int yylex(void);
84 DMXConfigEntryPtr dmxConfigEntry = NULL;
85 #define APPEND(type, h, t)                 \
86 {                                          \
87     type pt;                               \
88     for (pt = h; pt->next; pt = pt->next); \
89     pt->next = t;                          \
90 }
91 
92 #line 93 "parser.c"
93 
94 # ifndef YY_CAST
95 #  ifdef __cplusplus
96 #   define YY_CAST(Type, Val) static_cast<Type> (Val)
97 #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
98 #  else
99 #   define YY_CAST(Type, Val) ((Type) (Val))
100 #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
101 #  endif
102 # endif
103 # ifndef YY_NULLPTR
104 #  if defined __cplusplus
105 #   if 201103L <= __cplusplus
106 #    define YY_NULLPTR nullptr
107 #   else
108 #    define YY_NULLPTR 0
109 #   endif
110 #  else
111 #   define YY_NULLPTR ((void*)0)
112 #  endif
113 # endif
114 
115 /* Use api.header.include to #include this header
116    instead of duplicating it here.  */
117 #ifndef YY_YY_PARSER_H_INCLUDED
118 # define YY_YY_PARSER_H_INCLUDED
119 /* Debug traces.  */
120 #ifndef YYDEBUG
121 # define YYDEBUG 0
122 #endif
123 #if YYDEBUG
124 extern int yydebug;
125 #endif
126 
127 /* Token kinds.  */
128 #ifndef YYTOKENTYPE
129 # define YYTOKENTYPE
130   enum yytokentype
131   {
132     YYEMPTY = -2,
133     YYEOF = 0,                     /* "end of file"  */
134     YYerror = 256,                 /* error  */
135     YYUNDEF = 257,                 /* "invalid token"  */
136     T_VIRTUAL = 258,               /* T_VIRTUAL  */
137     T_DISPLAY = 259,               /* T_DISPLAY  */
138     T_WALL = 260,                  /* T_WALL  */
139     T_OPTION = 261,                /* T_OPTION  */
140     T_PARAM = 262,                 /* T_PARAM  */
141     T_STRING = 263,                /* T_STRING  */
142     T_DIMENSION = 264,             /* T_DIMENSION  */
143     T_OFFSET = 265,                /* T_OFFSET  */
144     T_ORIGIN = 266,                /* T_ORIGIN  */
145     T_COMMENT = 267,               /* T_COMMENT  */
146     T_LINE_COMMENT = 268           /* T_LINE_COMMENT  */
147   };
148   typedef enum yytokentype yytoken_kind_t;
149 #endif
150 /* Token kinds.  */
151 #define YYEOF 0
152 #define YYerror 256
153 #define YYUNDEF 257
154 #define T_VIRTUAL 258
155 #define T_DISPLAY 259
156 #define T_WALL 260
157 #define T_OPTION 261
158 #define T_PARAM 262
159 #define T_STRING 263
160 #define T_DIMENSION 264
161 #define T_OFFSET 265
162 #define T_ORIGIN 266
163 #define T_COMMENT 267
164 #define T_LINE_COMMENT 268
165 
166 /* Value type.  */
167 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
168 union YYSTYPE
169 {
170 #line 57 "parser.y"
171 
172     DMXConfigTokenPtr      token;
173     DMXConfigStringPtr     string;
174     DMXConfigNumberPtr     number;
175     DMXConfigPairPtr       pair;
176     DMXConfigFullDimPtr    fdim;
177     DMXConfigPartDimPtr    pdim;
178     DMXConfigDisplayPtr    display;
179     DMXConfigWallPtr       wall;
180     DMXConfigOptionPtr     option;
181     DMXConfigParamPtr      param;
182     DMXConfigCommentPtr    comment;
183     DMXConfigSubPtr        subentry;
184     DMXConfigVirtualPtr    virtual;
185     DMXConfigEntryPtr      entry;
186 
187 #line 188 "parser.c"
188 
189 };
190 typedef union YYSTYPE YYSTYPE;
191 # define YYSTYPE_IS_TRIVIAL 1
192 # define YYSTYPE_IS_DECLARED 1
193 #endif
194 
195 
196 extern YYSTYPE yylval;
197 
198 int yyparse (void);
199 
200 #endif /* !YY_YY_PARSER_H_INCLUDED  */
201 /* Symbol kind.  */
202 enum yysymbol_kind_t
203 {
204   YYSYMBOL_YYEMPTY = -2,
205   YYSYMBOL_YYEOF = 0,                      /* "end of file"  */
206   YYSYMBOL_YYerror = 1,                    /* error  */
207   YYSYMBOL_YYUNDEF = 2,                    /* "invalid token"  */
208   YYSYMBOL_3_ = 3,                         /* '{'  */
209   YYSYMBOL_4_ = 4,                         /* '}'  */
210   YYSYMBOL_5_ = 5,                         /* ';'  */
211   YYSYMBOL_6_ = 6,                         /* '/'  */
212   YYSYMBOL_T_VIRTUAL = 7,                  /* T_VIRTUAL  */
213   YYSYMBOL_T_DISPLAY = 8,                  /* T_DISPLAY  */
214   YYSYMBOL_T_WALL = 9,                     /* T_WALL  */
215   YYSYMBOL_T_OPTION = 10,                  /* T_OPTION  */
216   YYSYMBOL_T_PARAM = 11,                   /* T_PARAM  */
217   YYSYMBOL_T_STRING = 12,                  /* T_STRING  */
218   YYSYMBOL_T_DIMENSION = 13,               /* T_DIMENSION  */
219   YYSYMBOL_T_OFFSET = 14,                  /* T_OFFSET  */
220   YYSYMBOL_T_ORIGIN = 15,                  /* T_ORIGIN  */
221   YYSYMBOL_T_COMMENT = 16,                 /* T_COMMENT  */
222   YYSYMBOL_T_LINE_COMMENT = 17,            /* T_LINE_COMMENT  */
223   YYSYMBOL_YYACCEPT = 18,                  /* $accept  */
224   YYSYMBOL_Program = 19,                   /* Program  */
225   YYSYMBOL_EntryList = 20,                 /* EntryList  */
226   YYSYMBOL_Entry = 21,                     /* Entry  */
227   YYSYMBOL_Virtual = 22,                   /* Virtual  */
228   YYSYMBOL_SubList = 23,                   /* SubList  */
229   YYSYMBOL_Sub = 24,                       /* Sub  */
230   YYSYMBOL_OptionEntry = 25,               /* OptionEntry  */
231   YYSYMBOL_ParamEntry = 26,                /* ParamEntry  */
232   YYSYMBOL_ParamList = 27,                 /* ParamList  */
233   YYSYMBOL_Param = 28,                     /* Param  */
234   YYSYMBOL_PartialDim = 29,                /* PartialDim  */
235   YYSYMBOL_FullDim = 30,                   /* FullDim  */
236   YYSYMBOL_DisplayEntry = 31,              /* DisplayEntry  */
237   YYSYMBOL_WallEntry = 32,                 /* WallEntry  */
238   YYSYMBOL_Display = 33,                   /* Display  */
239   YYSYMBOL_Name = 34,                      /* Name  */
240   YYSYMBOL_Dimension = 35,                 /* Dimension  */
241   YYSYMBOL_Offset = 36,                    /* Offset  */
242   YYSYMBOL_Origin = 37,                    /* Origin  */
243   YYSYMBOL_Terminal = 38,                  /* Terminal  */
244   YYSYMBOL_Open = 39,                      /* Open  */
245   YYSYMBOL_Close = 40,                     /* Close  */
246   YYSYMBOL_Wall = 41,                      /* Wall  */
247   YYSYMBOL_NameList = 42                   /* NameList  */
248 };
249 typedef enum yysymbol_kind_t yysymbol_kind_t;
250 
251 
252 
253 
254 #ifdef short
255 # undef short
256 #endif
257 
258 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
259    <limits.h> and (if available) <stdint.h> are included
260    so that the code can choose integer types of a good width.  */
261 
262 #ifndef __PTRDIFF_MAX__
263 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
264 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
265 #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
266 #  define YY_STDINT_H
267 # endif
268 #endif
269 
270 /* Narrow types that promote to a signed type and that can represent a
271    signed or unsigned integer of at least N bits.  In tables they can
272    save space and decrease cache pressure.  Promoting to a signed type
273    helps avoid bugs in integer arithmetic.  */
274 
275 #ifdef __INT_LEAST8_MAX__
276 typedef __INT_LEAST8_TYPE__ yytype_int8;
277 #elif defined YY_STDINT_H
278 typedef int_least8_t yytype_int8;
279 #else
280 typedef signed char yytype_int8;
281 #endif
282 
283 #ifdef __INT_LEAST16_MAX__
284 typedef __INT_LEAST16_TYPE__ yytype_int16;
285 #elif defined YY_STDINT_H
286 typedef int_least16_t yytype_int16;
287 #else
288 typedef short yytype_int16;
289 #endif
290 
291 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
292 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
293 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
294        && UINT_LEAST8_MAX <= INT_MAX)
295 typedef uint_least8_t yytype_uint8;
296 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
297 typedef unsigned char yytype_uint8;
298 #else
299 typedef short yytype_uint8;
300 #endif
301 
302 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
303 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
304 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
305        && UINT_LEAST16_MAX <= INT_MAX)
306 typedef uint_least16_t yytype_uint16;
307 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
308 typedef unsigned short yytype_uint16;
309 #else
310 typedef int yytype_uint16;
311 #endif
312 
313 #ifndef YYPTRDIFF_T
314 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
315 #  define YYPTRDIFF_T __PTRDIFF_TYPE__
316 #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
317 # elif defined PTRDIFF_MAX
318 #  ifndef ptrdiff_t
319 #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
320 #  endif
321 #  define YYPTRDIFF_T ptrdiff_t
322 #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
323 # else
324 #  define YYPTRDIFF_T long
325 #  define YYPTRDIFF_MAXIMUM LONG_MAX
326 # endif
327 #endif
328 
329 #ifndef YYSIZE_T
330 # ifdef __SIZE_TYPE__
331 #  define YYSIZE_T __SIZE_TYPE__
332 # elif defined size_t
333 #  define YYSIZE_T size_t
334 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
335 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
336 #  define YYSIZE_T size_t
337 # else
338 #  define YYSIZE_T unsigned
339 # endif
340 #endif
341 
342 #define YYSIZE_MAXIMUM                                  \
343   YY_CAST (YYPTRDIFF_T,                                 \
344            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
345             ? YYPTRDIFF_MAXIMUM                         \
346             : YY_CAST (YYSIZE_T, -1)))
347 
348 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
349 
350 
351 /* Stored state numbers (used for stacks). */
352 typedef yytype_int8 yy_state_t;
353 
354 /* State numbers in computations.  */
355 typedef int yy_state_fast_t;
356 
357 #ifndef YY_
358 # if defined YYENABLE_NLS && YYENABLE_NLS
359 #  if ENABLE_NLS
360 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
361 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
362 #  endif
363 # endif
364 # ifndef YY_
365 #  define YY_(Msgid) Msgid
366 # endif
367 #endif
368 
369 
370 #ifndef YY_ATTRIBUTE_PURE
371 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
372 #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
373 # else
374 #  define YY_ATTRIBUTE_PURE
375 # endif
376 #endif
377 
378 #ifndef YY_ATTRIBUTE_UNUSED
379 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
380 #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
381 # else
382 #  define YY_ATTRIBUTE_UNUSED
383 # endif
384 #endif
385 
386 /* Suppress unused-variable warnings by "using" E.  */
387 #if ! defined lint || defined __GNUC__
388 # define YYUSE(E) ((void) (E))
389 #else
390 # define YYUSE(E) /* empty */
391 #endif
392 
393 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
394 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
395 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
396     _Pragma ("GCC diagnostic push")                                     \
397     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
398     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
399 # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
400     _Pragma ("GCC diagnostic pop")
401 #else
402 # define YY_INITIAL_VALUE(Value) Value
403 #endif
404 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
405 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
406 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
407 #endif
408 #ifndef YY_INITIAL_VALUE
409 # define YY_INITIAL_VALUE(Value) /* Nothing. */
410 #endif
411 
412 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
413 # define YY_IGNORE_USELESS_CAST_BEGIN                          \
414     _Pragma ("GCC diagnostic push")                            \
415     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
416 # define YY_IGNORE_USELESS_CAST_END            \
417     _Pragma ("GCC diagnostic pop")
418 #endif
419 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
420 # define YY_IGNORE_USELESS_CAST_BEGIN
421 # define YY_IGNORE_USELESS_CAST_END
422 #endif
423 
424 
425 #define YY_ASSERT(E) ((void) (0 && (E)))
426 
427 #if !defined yyoverflow
428 
429 /* The parser invokes alloca or malloc; define the necessary symbols.  */
430 
431 # ifdef YYSTACK_USE_ALLOCA
432 #  if YYSTACK_USE_ALLOCA
433 #   ifdef __GNUC__
434 #    define YYSTACK_ALLOC __builtin_alloca
435 #   elif defined __BUILTIN_VA_ARG_INCR
436 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
437 #   elif defined _AIX
438 #    define YYSTACK_ALLOC __alloca
439 #   elif defined _MSC_VER
440 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
441 #    define alloca _alloca
442 #   else
443 #    define YYSTACK_ALLOC alloca
444 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
445 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
446       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
447 #     ifndef EXIT_SUCCESS
448 #      define EXIT_SUCCESS 0
449 #     endif
450 #    endif
451 #   endif
452 #  endif
453 # endif
454 
455 # ifdef YYSTACK_ALLOC
456    /* Pacify GCC's 'empty if-body' warning.  */
457 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
458 #  ifndef YYSTACK_ALLOC_MAXIMUM
459     /* The OS might guarantee only one guard page at the bottom of the stack,
460        and a page size can be as small as 4096 bytes.  So we cannot safely
461        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
462        to allow for a few compiler-allocated temporary stack slots.  */
463 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
464 #  endif
465 # else
466 #  define YYSTACK_ALLOC YYMALLOC
467 #  define YYSTACK_FREE YYFREE
468 #  ifndef YYSTACK_ALLOC_MAXIMUM
469 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
470 #  endif
471 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
472        && ! ((defined YYMALLOC || defined malloc) \
473              && (defined YYFREE || defined free)))
474 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
475 #   ifndef EXIT_SUCCESS
476 #    define EXIT_SUCCESS 0
477 #   endif
478 #  endif
479 #  ifndef YYMALLOC
480 #   define YYMALLOC malloc
481 #   if ! defined malloc && ! defined EXIT_SUCCESS
482 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
483 #   endif
484 #  endif
485 #  ifndef YYFREE
486 #   define YYFREE free
487 #   if ! defined free && ! defined EXIT_SUCCESS
488 void free (void *); /* INFRINGES ON USER NAME SPACE */
489 #   endif
490 #  endif
491 # endif
492 #endif /* !defined yyoverflow */
493 
494 #if (! defined yyoverflow \
495      && (! defined __cplusplus \
496          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
497 
498 /* A type that is properly aligned for any stack member.  */
499 union yyalloc
500 {
501   yy_state_t yyss_alloc;
502   YYSTYPE yyvs_alloc;
503 };
504 
505 /* The size of the maximum gap between one aligned stack and the next.  */
506 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
507 
508 /* The size of an array large to enough to hold all stacks, each with
509    N elements.  */
510 # define YYSTACK_BYTES(N) \
511      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
512       + YYSTACK_GAP_MAXIMUM)
513 
514 # define YYCOPY_NEEDED 1
515 
516 /* Relocate STACK from its old location to the new one.  The
517    local variables YYSIZE and YYSTACKSIZE give the old and new number of
518    elements in the stack, and YYPTR gives the new location of the
519    stack.  Advance YYPTR to a properly aligned location for the next
520    stack.  */
521 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
522     do                                                                  \
523       {                                                                 \
524         YYPTRDIFF_T yynewbytes;                                         \
525         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
526         Stack = &yyptr->Stack_alloc;                                    \
527         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
528         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
529       }                                                                 \
530     while (0)
531 
532 #endif
533 
534 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
535 /* Copy COUNT objects from SRC to DST.  The source and destination do
536    not overlap.  */
537 # ifndef YYCOPY
538 #  if defined __GNUC__ && 1 < __GNUC__
539 #   define YYCOPY(Dst, Src, Count) \
540       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
541 #  else
542 #   define YYCOPY(Dst, Src, Count)              \
543       do                                        \
544         {                                       \
545           YYPTRDIFF_T yyi;                      \
546           for (yyi = 0; yyi < (Count); yyi++)   \
547             (Dst)[yyi] = (Src)[yyi];            \
548         }                                       \
549       while (0)
550 #  endif
551 # endif
552 #endif /* !YYCOPY_NEEDED */
553 
554 /* YYFINAL -- State number of the termination state.  */
555 #define YYFINAL  13
556 /* YYLAST -- Last index in YYTABLE.  */
557 #define YYLAST   106
558 
559 /* YYNTOKENS -- Number of terminals.  */
560 #define YYNTOKENS  18
561 /* YYNNTS -- Number of nonterminals.  */
562 #define YYNNTS  25
563 /* YYNRULES -- Number of rules.  */
564 #define YYNRULES  59
565 /* YYNSTATES -- Number of states.  */
566 #define YYNSTATES  95
567 
568 /* YYMAXUTOK -- Last valid token kind.  */
569 #define YYMAXUTOK   268
570 
571 
572 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
573    as returned by yylex, with out-of-bounds checking.  */
574 #define YYTRANSLATE(YYX)                                \
575   (0 <= (YYX) && (YYX) <= YYMAXUTOK                     \
576    ? YY_CAST (yysymbol_kind_t, yytranslate[YYX])        \
577    : YYSYMBOL_YYUNDEF)
578 
579 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
580    as returned by yylex.  */
581 static const yytype_int8 yytranslate[] =
582 {
583        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
585        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
586        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
587        2,     2,     2,     2,     2,     2,     2,     6,     2,     2,
588        2,     2,     2,     2,     2,     2,     2,     2,     2,     5,
589        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
590        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
591        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
592        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
593        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
594        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
595        2,     2,     2,     3,     2,     4,     2,     2,     2,     2,
596        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
597        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
598        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
599        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
600        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
601        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
602        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
603        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
604        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
605        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
606        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
607        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
608        2,     2,     2,     2,     2,     2,     1,     2,     7,     8,
609        9,    10,    11,    12,    13,    14,    15,    16,    17
610 };
611 
612 #if YYDEBUG
613   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
614 static const yytype_uint8 yyrline[] =
615 {
616        0,    96,    96,    99,   100,   103,   104,   107,   109,   111,
617      113,   117,   118,   121,   122,   123,   124,   125,   128,   132,
618      134,   140,   141,   144,   148,   150,   152,   156,   158,   160,
619      164,   166,   168,   171,   173,   175,   177,   181,   183,   185,
620      189,   190,   193,   194,   197,   198,   201,   202,   205,   206,
621      209,   210,   213,   214,   217,   218,   221,   222,   225,   226
622 };
623 #endif
624 
625 /** Accessing symbol of state STATE.  */
626 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
627 
628 #if YYDEBUG || 0
629 /* The user-facing name of the symbol whose (internal) number is
630    YYSYMBOL.  No bounds checking.  */
631 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
632 
633 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
634    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
635 static const char *const yytname[] =
636 {
637   "\"end of file\"", "error", "\"invalid token\"", "'{'", "'}'", "';'",
638   "'/'", "T_VIRTUAL", "T_DISPLAY", "T_WALL", "T_OPTION", "T_PARAM",
639   "T_STRING", "T_DIMENSION", "T_OFFSET", "T_ORIGIN", "T_COMMENT",
640   "T_LINE_COMMENT", "$accept", "Program", "EntryList", "Entry", "Virtual",
641   "SubList", "Sub", "OptionEntry", "ParamEntry", "ParamList", "Param",
642   "PartialDim", "FullDim", "DisplayEntry", "WallEntry", "Display", "Name",
643   "Dimension", "Offset", "Origin", "Terminal", "Open", "Close", "Wall",
644   "NameList", YY_NULLPTR
645 };
646 
647 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)648 yysymbol_name (yysymbol_kind_t yysymbol)
649 {
650   return yytname[yysymbol];
651 }
652 #endif
653 
654 #ifdef YYPRINT
655 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
656    (internal) symbol number NUM (which must be that of a token).  */
657 static const yytype_int16 yytoknum[] =
658 {
659        0,   256,   257,   123,   125,    59,    47,   258,   259,   260,
660      261,   262,   263,   264,   265,   266,   267,   268
661 };
662 #endif
663 
664 #define YYPACT_NINF (-32)
665 
666 #define yypact_value_is_default(Yyn) \
667   ((Yyn) == YYPACT_NINF)
668 
669 #define YYTABLE_NINF (-1)
670 
671 #define yytable_value_is_error(Yyn) \
672   0
673 
674   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
675      STATE-NUM.  */
676 static const yytype_int8 yypact[] =
677 {
678       -3,    41,   -32,    22,    -3,   -32,   -32,    12,    35,    46,
679        5,    62,    75,   -32,   -32,   -32,   -32,   -32,    62,    75,
680       75,    51,    54,    59,    18,   -32,    65,   -32,   -32,   -32,
681      -32,   -32,    88,    37,    75,    65,    65,   -32,   -32,   -32,
682       86,    59,    86,    61,   -32,   -32,    79,    -4,    80,    28,
683       31,    74,    67,   -32,   -32,    37,    86,    65,   -32,   -32,
684      -32,   -32,    56,   -32,    86,   -32,   -32,   -32,   -32,   -32,
685       -4,    81,    94,   -32,    31,    94,   -32,   -32,    59,    86,
686      -32,   -32,   -32,   -32,   -32,   -32,   -32,   -32,    94,   -32,
687      -32,    86,   -32,   -32,   -32
688 };
689 
690   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
691      Performed when YYTABLE does not specify something else to do.  Zero
692      means the default is an error.  */
693 static const yytype_int8 yydefact[] =
694 {
695        0,     0,     6,     0,     2,     3,     5,    52,    42,    44,
696        0,     0,     0,     1,     4,    53,    43,    45,     0,     0,
697        0,    40,    56,     0,     0,    13,     0,    11,    16,    17,
698       14,    15,     0,     0,     0,     0,     0,    41,    57,    58,
699        0,     0,     0,    54,    12,     7,    50,     0,    46,    29,
700        0,     0,    25,    26,    36,     0,     0,     0,     9,     8,
701       59,    18,     0,    21,     0,    19,    55,    51,    28,    47,
702        0,    48,     0,    34,     0,     0,    35,    24,     0,     0,
703       39,    10,    22,    20,    23,    27,    49,    31,     0,    33,
704       32,     0,    38,    30,    37
705 };
706 
707   /* YYPGOTO[NTERM-NUM].  */
708 static const yytype_int8 yypgoto[] =
709 {
710      -32,   -32,   -32,    99,   -32,     6,   -19,   -32,   -32,   -32,
711       42,   -28,    55,   -32,   -32,   -32,    -1,     2,    53,   -31,
712      -27,    48,   -30,   -32,   -22
713 };
714 
715   /* YYDEFGOTO[NTERM-NUM].  */
716 static const yytype_int8 yydefgoto[] =
717 {
718       -1,     3,     4,     5,     6,    26,    27,    28,    29,    62,
719       63,    49,    50,    30,    31,    32,    39,    52,    53,    72,
720       54,    12,    45,    33,    64
721 };
722 
723   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
724      positive, shift that token.  If negative, reduce the rule whose
725      number is the opposite.  If YYTABLE_NINF, syntax error.  */
726 static const yytype_int8 yytable[] =
727 {
728       10,    40,    42,    11,     1,    58,    59,    44,     7,     9,
729       48,    56,    18,    61,     2,    65,    44,    44,     9,    68,
730       75,     7,    13,    73,    76,    35,    36,    81,    15,    80,
731        8,    51,    83,    79,    70,    55,    46,    84,    44,    60,
732       57,    60,    85,    88,     7,    87,    71,    89,    90,     8,
733        9,    16,    92,     8,     9,    60,    91,    78,    19,    20,
734       43,    93,    17,    60,    94,     7,    34,    37,     8,    43,
735       38,     8,    41,    21,    22,    23,    24,    66,    60,    46,
736       47,    48,    25,    21,    22,    23,    24,     9,    48,    71,
737       60,    46,    25,    46,    47,    67,    69,    86,     8,    46,
738        8,     9,    48,    14,    82,    77,    74
739 };
740 
741 static const yytype_int8 yycheck[] =
742 {
743        1,    23,    24,     1,     7,    35,    36,    26,     3,    13,
744       14,    33,    10,    40,    17,    42,    35,    36,    13,    47,
745       51,     3,     0,    50,    51,    19,    20,    57,    16,    56,
746       12,    32,    62,    55,     6,    33,     5,    64,    57,    40,
747       34,    42,    70,    74,     3,    72,    15,    74,    75,    12,
748       13,    16,    79,    12,    13,    56,    78,    55,    10,    11,
749        4,    88,    16,    64,    91,     3,    18,    16,    12,     4,
750       16,    12,    24,     8,     9,    10,    11,    16,    79,     5,
751        6,    14,    17,     8,     9,    10,    11,    13,    14,    15,
752       91,     5,    17,     5,     6,    16,    16,    16,    12,     5,
753       12,    13,    14,     4,    62,    52,    51
754 };
755 
756   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
757      symbol of state STATE-NUM.  */
758 static const yytype_int8 yystos[] =
759 {
760        0,     7,    17,    19,    20,    21,    22,     3,    12,    13,
761       34,    35,    39,     0,    21,    16,    16,    16,    35,    39,
762       39,     8,     9,    10,    11,    17,    23,    24,    25,    26,
763       31,    32,    33,    41,    39,    23,    23,    16,    16,    34,
764       42,    39,    42,     4,    24,    40,     5,     6,    14,    29,
765       30,    34,    35,    36,    38,    35,    42,    23,    40,    40,
766       34,    38,    27,    28,    42,    38,    16,    16,    29,    16,
767        6,    15,    37,    38,    30,    37,    38,    36,    35,    42,
768       38,    40,    28,    40,    38,    29,    16,    38,    37,    38,
769       38,    42,    38,    38,    38
770 };
771 
772   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
773 static const yytype_int8 yyr1[] =
774 {
775        0,    18,    19,    20,    20,    21,    21,    22,    22,    22,
776       22,    23,    23,    24,    24,    24,    24,    24,    25,    26,
777       26,    27,    27,    28,    29,    29,    29,    30,    30,    30,
778       31,    31,    31,    31,    31,    31,    31,    32,    32,    32,
779       33,    33,    34,    34,    35,    35,    36,    36,    37,    37,
780       38,    38,    39,    39,    40,    40,    41,    41,    42,    42
781 };
782 
783   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
784 static const yytype_int8 yyr2[] =
785 {
786        0,     2,     1,     1,     2,     1,     1,     4,     5,     5,
787        6,     1,     2,     1,     1,     1,     1,     1,     3,     3,
788        4,     1,     2,     2,     2,     1,     1,     3,     2,     1,
789        5,     4,     4,     4,     3,     3,     2,     5,     4,     3,
790        1,     2,     1,     2,     1,     2,     1,     2,     1,     2,
791        1,     2,     1,     2,     1,     2,     1,     2,     1,     2
792 };
793 
794 
795 enum { YYENOMEM = -2 };
796 
797 #define yyerrok         (yyerrstatus = 0)
798 #define yyclearin       (yychar = YYEMPTY)
799 
800 #define YYACCEPT        goto yyacceptlab
801 #define YYABORT         goto yyabortlab
802 #define YYERROR         goto yyerrorlab
803 
804 
805 #define YYRECOVERING()  (!!yyerrstatus)
806 
807 #define YYBACKUP(Token, Value)                                    \
808   do                                                              \
809     if (yychar == YYEMPTY)                                        \
810       {                                                           \
811         yychar = (Token);                                         \
812         yylval = (Value);                                         \
813         YYPOPSTACK (yylen);                                       \
814         yystate = *yyssp;                                         \
815         goto yybackup;                                            \
816       }                                                           \
817     else                                                          \
818       {                                                           \
819         yyerror (YY_("syntax error: cannot back up")); \
820         YYERROR;                                                  \
821       }                                                           \
822   while (0)
823 
824 /* Backward compatibility with an undocumented macro.
825    Use YYerror or YYUNDEF. */
826 #define YYERRCODE YYUNDEF
827 
828 
829 /* Enable debugging if requested.  */
830 #if YYDEBUG
831 
832 # ifndef YYFPRINTF
833 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
834 #  define YYFPRINTF fprintf
835 # endif
836 
837 # define YYDPRINTF(Args)                        \
838 do {                                            \
839   if (yydebug)                                  \
840     YYFPRINTF Args;                             \
841 } while (0)
842 
843 /* This macro is provided for backward compatibility. */
844 # ifndef YY_LOCATION_PRINT
845 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
846 # endif
847 
848 
849 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
850 do {                                                                      \
851   if (yydebug)                                                            \
852     {                                                                     \
853       YYFPRINTF (stderr, "%s ", Title);                                   \
854       yy_symbol_print (stderr,                                            \
855                   Kind, Value); \
856       YYFPRINTF (stderr, "\n");                                           \
857     }                                                                     \
858 } while (0)
859 
860 
861 /*-----------------------------------.
862 | Print this symbol's value on YYO.  |
863 `-----------------------------------*/
864 
865 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)866 yy_symbol_value_print (FILE *yyo,
867                        yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
868 {
869   FILE *yyoutput = yyo;
870   YYUSE (yyoutput);
871   if (!yyvaluep)
872     return;
873 # ifdef YYPRINT
874   if (yykind < YYNTOKENS)
875     YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
876 # endif
877   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
878   YYUSE (yykind);
879   YY_IGNORE_MAYBE_UNINITIALIZED_END
880 }
881 
882 
883 /*---------------------------.
884 | Print this symbol on YYO.  |
885 `---------------------------*/
886 
887 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep)888 yy_symbol_print (FILE *yyo,
889                  yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
890 {
891   YYFPRINTF (yyo, "%s %s (",
892              yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
893 
894   yy_symbol_value_print (yyo, yykind, yyvaluep);
895   YYFPRINTF (yyo, ")");
896 }
897 
898 /*------------------------------------------------------------------.
899 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
900 | TOP (included).                                                   |
901 `------------------------------------------------------------------*/
902 
903 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)904 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
905 {
906   YYFPRINTF (stderr, "Stack now");
907   for (; yybottom <= yytop; yybottom++)
908     {
909       int yybot = *yybottom;
910       YYFPRINTF (stderr, " %d", yybot);
911     }
912   YYFPRINTF (stderr, "\n");
913 }
914 
915 # define YY_STACK_PRINT(Bottom, Top)                            \
916 do {                                                            \
917   if (yydebug)                                                  \
918     yy_stack_print ((Bottom), (Top));                           \
919 } while (0)
920 
921 
922 /*------------------------------------------------.
923 | Report that the YYRULE is going to be reduced.  |
924 `------------------------------------------------*/
925 
926 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule)927 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
928                  int yyrule)
929 {
930   int yylno = yyrline[yyrule];
931   int yynrhs = yyr2[yyrule];
932   int yyi;
933   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
934              yyrule - 1, yylno);
935   /* The symbols being reduced.  */
936   for (yyi = 0; yyi < yynrhs; yyi++)
937     {
938       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
939       yy_symbol_print (stderr,
940                        YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
941                        &yyvsp[(yyi + 1) - (yynrhs)]);
942       YYFPRINTF (stderr, "\n");
943     }
944 }
945 
946 # define YY_REDUCE_PRINT(Rule)          \
947 do {                                    \
948   if (yydebug)                          \
949     yy_reduce_print (yyssp, yyvsp, Rule); \
950 } while (0)
951 
952 /* Nonzero means print parse trace.  It is left uninitialized so that
953    multiple parsers can coexist.  */
954 int yydebug;
955 #else /* !YYDEBUG */
956 # define YYDPRINTF(Args) ((void) 0)
957 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
958 # define YY_STACK_PRINT(Bottom, Top)
959 # define YY_REDUCE_PRINT(Rule)
960 #endif /* !YYDEBUG */
961 
962 
963 /* YYINITDEPTH -- initial size of the parser's stacks.  */
964 #ifndef YYINITDEPTH
965 # define YYINITDEPTH 200
966 #endif
967 
968 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
969    if the built-in stack extension method is used).
970 
971    Do not make this value too large; the results are undefined if
972    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
973    evaluated with infinite-precision integer arithmetic.  */
974 
975 #ifndef YYMAXDEPTH
976 # define YYMAXDEPTH 10000
977 #endif
978 
979 
980 
981 
982 
983 
984 /*-----------------------------------------------.
985 | Release the memory associated to this symbol.  |
986 `-----------------------------------------------*/
987 
988 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep)989 yydestruct (const char *yymsg,
990             yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
991 {
992   YYUSE (yyvaluep);
993   if (!yymsg)
994     yymsg = "Deleting";
995   YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
996 
997   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
998   YYUSE (yykind);
999   YY_IGNORE_MAYBE_UNINITIALIZED_END
1000 }
1001 
1002 
1003 /* Lookahead token kind.  */
1004 int yychar;
1005 
1006 /* The semantic value of the lookahead symbol.  */
1007 YYSTYPE yylval;
1008 /* Number of syntax errors so far.  */
1009 int yynerrs;
1010 
1011 
1012 
1013 
1014 /*----------.
1015 | yyparse.  |
1016 `----------*/
1017 
1018 int
yyparse(void)1019 yyparse (void)
1020 {
1021     yy_state_fast_t yystate = 0;
1022     /* Number of tokens to shift before error messages enabled.  */
1023     int yyerrstatus = 0;
1024 
1025     /* Refer to the stacks through separate pointers, to allow yyoverflow
1026        to reallocate them elsewhere.  */
1027 
1028     /* Their size.  */
1029     YYPTRDIFF_T yystacksize = YYINITDEPTH;
1030 
1031     /* The state stack: array, bottom, top.  */
1032     yy_state_t yyssa[YYINITDEPTH];
1033     yy_state_t *yyss = yyssa;
1034     yy_state_t *yyssp = yyss;
1035 
1036     /* The semantic value stack: array, bottom, top.  */
1037     YYSTYPE yyvsa[YYINITDEPTH];
1038     YYSTYPE *yyvs = yyvsa;
1039     YYSTYPE *yyvsp = yyvs;
1040 
1041   int yyn;
1042   /* The return value of yyparse.  */
1043   int yyresult;
1044   /* Lookahead symbol kind.  */
1045   yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
1046   /* The variables used to return semantic value and location from the
1047      action routines.  */
1048   YYSTYPE yyval;
1049 
1050 
1051 
1052 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1053 
1054   /* The number of symbols on the RHS of the reduced rule.
1055      Keep to zero when no symbol should be popped.  */
1056   int yylen = 0;
1057 
1058   YYDPRINTF ((stderr, "Starting parse\n"));
1059 
1060   yychar = YYEMPTY; /* Cause a token to be read.  */
1061   goto yysetstate;
1062 
1063 
1064 /*------------------------------------------------------------.
1065 | yynewstate -- push a new state, which is found in yystate.  |
1066 `------------------------------------------------------------*/
1067 yynewstate:
1068   /* In all cases, when you get here, the value and location stacks
1069      have just been pushed.  So pushing a state here evens the stacks.  */
1070   yyssp++;
1071 
1072 
1073 /*--------------------------------------------------------------------.
1074 | yysetstate -- set current state (the top of the stack) to yystate.  |
1075 `--------------------------------------------------------------------*/
1076 yysetstate:
1077   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1078   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1079   YY_IGNORE_USELESS_CAST_BEGIN
1080   *yyssp = YY_CAST (yy_state_t, yystate);
1081   YY_IGNORE_USELESS_CAST_END
1082   YY_STACK_PRINT (yyss, yyssp);
1083 
1084   if (yyss + yystacksize - 1 <= yyssp)
1085 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
1086     goto yyexhaustedlab;
1087 #else
1088     {
1089       /* Get the current used size of the three stacks, in elements.  */
1090       YYPTRDIFF_T yysize = yyssp - yyss + 1;
1091 
1092 # if defined yyoverflow
1093       {
1094         /* Give user a chance to reallocate the stack.  Use copies of
1095            these so that the &'s don't force the real ones into
1096            memory.  */
1097         yy_state_t *yyss1 = yyss;
1098         YYSTYPE *yyvs1 = yyvs;
1099 
1100         /* Each stack pointer address is followed by the size of the
1101            data in use in that stack, in bytes.  This used to be a
1102            conditional around just the two extra args, but that might
1103            be undefined if yyoverflow is a macro.  */
1104         yyoverflow (YY_("memory exhausted"),
1105                     &yyss1, yysize * YYSIZEOF (*yyssp),
1106                     &yyvs1, yysize * YYSIZEOF (*yyvsp),
1107                     &yystacksize);
1108         yyss = yyss1;
1109         yyvs = yyvs1;
1110       }
1111 # else /* defined YYSTACK_RELOCATE */
1112       /* Extend the stack our own way.  */
1113       if (YYMAXDEPTH <= yystacksize)
1114         goto yyexhaustedlab;
1115       yystacksize *= 2;
1116       if (YYMAXDEPTH < yystacksize)
1117         yystacksize = YYMAXDEPTH;
1118 
1119       {
1120         yy_state_t *yyss1 = yyss;
1121         union yyalloc *yyptr =
1122           YY_CAST (union yyalloc *,
1123                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1124         if (! yyptr)
1125           goto yyexhaustedlab;
1126         YYSTACK_RELOCATE (yyss_alloc, yyss);
1127         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1128 #  undef YYSTACK_RELOCATE
1129         if (yyss1 != yyssa)
1130           YYSTACK_FREE (yyss1);
1131       }
1132 # endif
1133 
1134       yyssp = yyss + yysize - 1;
1135       yyvsp = yyvs + yysize - 1;
1136 
1137       YY_IGNORE_USELESS_CAST_BEGIN
1138       YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1139                   YY_CAST (long, yystacksize)));
1140       YY_IGNORE_USELESS_CAST_END
1141 
1142       if (yyss + yystacksize - 1 <= yyssp)
1143         YYABORT;
1144     }
1145 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1146 
1147   if (yystate == YYFINAL)
1148     YYACCEPT;
1149 
1150   goto yybackup;
1151 
1152 
1153 /*-----------.
1154 | yybackup.  |
1155 `-----------*/
1156 yybackup:
1157   /* Do appropriate processing given the current state.  Read a
1158      lookahead token if we need one and don't already have one.  */
1159 
1160   /* First try to decide what to do without reference to lookahead token.  */
1161   yyn = yypact[yystate];
1162   if (yypact_value_is_default (yyn))
1163     goto yydefault;
1164 
1165   /* Not known => get a lookahead token if don't already have one.  */
1166 
1167   /* YYCHAR is either empty, or end-of-input, or a valid lookahead.  */
1168   if (yychar == YYEMPTY)
1169     {
1170       YYDPRINTF ((stderr, "Reading a token\n"));
1171       yychar = yylex ();
1172     }
1173 
1174   if (yychar <= YYEOF)
1175     {
1176       yychar = YYEOF;
1177       yytoken = YYSYMBOL_YYEOF;
1178       YYDPRINTF ((stderr, "Now at end of input.\n"));
1179     }
1180   else if (yychar == YYerror)
1181     {
1182       /* The scanner already issued an error message, process directly
1183          to error recovery.  But do not keep the error token as
1184          lookahead, it is too special and may lead us to an endless
1185          loop in error recovery. */
1186       yychar = YYUNDEF;
1187       yytoken = YYSYMBOL_YYerror;
1188       goto yyerrlab1;
1189     }
1190   else
1191     {
1192       yytoken = YYTRANSLATE (yychar);
1193       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1194     }
1195 
1196   /* If the proper action on seeing token YYTOKEN is to reduce or to
1197      detect an error, take that action.  */
1198   yyn += yytoken;
1199   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1200     goto yydefault;
1201   yyn = yytable[yyn];
1202   if (yyn <= 0)
1203     {
1204       if (yytable_value_is_error (yyn))
1205         goto yyerrlab;
1206       yyn = -yyn;
1207       goto yyreduce;
1208     }
1209 
1210   /* Count tokens shifted since error; after three, turn off error
1211      status.  */
1212   if (yyerrstatus)
1213     yyerrstatus--;
1214 
1215   /* Shift the lookahead token.  */
1216   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1217   yystate = yyn;
1218   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1219   *++yyvsp = yylval;
1220   YY_IGNORE_MAYBE_UNINITIALIZED_END
1221 
1222   /* Discard the shifted token.  */
1223   yychar = YYEMPTY;
1224   goto yynewstate;
1225 
1226 
1227 /*-----------------------------------------------------------.
1228 | yydefault -- do the default action for the current state.  |
1229 `-----------------------------------------------------------*/
1230 yydefault:
1231   yyn = yydefact[yystate];
1232   if (yyn == 0)
1233     goto yyerrlab;
1234   goto yyreduce;
1235 
1236 
1237 /*-----------------------------.
1238 | yyreduce -- do a reduction.  |
1239 `-----------------------------*/
1240 yyreduce:
1241   /* yyn is the number of a rule to reduce with.  */
1242   yylen = yyr2[yyn];
1243 
1244   /* If YYLEN is nonzero, implement the default value of the action:
1245      '$$ = $1'.
1246 
1247      Otherwise, the following line sets YYVAL to garbage.
1248      This behavior is undocumented and Bison
1249      users should not rely upon it.  Assigning to YYVAL
1250      unconditionally makes the parser a bit smaller, and it avoids a
1251      GCC warning that YYVAL may be used uninitialized.  */
1252   yyval = yyvsp[1-yylen];
1253 
1254 
1255   YY_REDUCE_PRINT (yyn);
1256   switch (yyn)
1257     {
1258   case 2: /* Program: EntryList  */
1259 #line 96 "parser.y"
1260                     { dmxConfigEntry = (yyvsp[0].entry); }
1261 #line 1262 "parser.c"
1262     break;
1263 
1264   case 4: /* EntryList: EntryList Entry  */
1265 #line 100 "parser.y"
1266                             { APPEND(DMXConfigEntryPtr,(yyvsp[-1].entry),(yyvsp[0].entry)); (yyval.entry) = (yyvsp[-1].entry); }
1267 #line 1268 "parser.c"
1268     break;
1269 
1270   case 5: /* Entry: Virtual  */
1271 #line 103 "parser.y"
1272                        { (yyval.entry) = dmxConfigEntryVirtual((yyvsp[0].virtual)); }
1273 #line 1274 "parser.c"
1274     break;
1275 
1276   case 6: /* Entry: T_LINE_COMMENT  */
1277 #line 104 "parser.y"
1278                        { (yyval.entry) = dmxConfigEntryComment((yyvsp[0].comment)); }
1279 #line 1280 "parser.c"
1280     break;
1281 
1282   case 7: /* Virtual: T_VIRTUAL Open SubList Close  */
1283 #line 108 "parser.y"
1284           { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[-3].token), NULL, NULL, (yyvsp[-2].token), (yyvsp[-1].subentry), (yyvsp[0].token)); }
1285 #line 1286 "parser.c"
1286     break;
1287 
1288   case 8: /* Virtual: T_VIRTUAL Dimension Open SubList Close  */
1289 #line 110 "parser.y"
1290           { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[-4].token), NULL, (yyvsp[-3].pair), (yyvsp[-2].token), (yyvsp[-1].subentry), (yyvsp[0].token)); }
1291 #line 1292 "parser.c"
1292     break;
1293 
1294   case 9: /* Virtual: T_VIRTUAL Name Open SubList Close  */
1295 #line 112 "parser.y"
1296           { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[-4].token), (yyvsp[-3].string), NULL, (yyvsp[-2].token), (yyvsp[-1].subentry), (yyvsp[0].token)); }
1297 #line 1298 "parser.c"
1298     break;
1299 
1300   case 10: /* Virtual: T_VIRTUAL Name Dimension Open SubList Close  */
1301 #line 114 "parser.y"
1302           { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[-5].token), (yyvsp[-4].string), (yyvsp[-3].pair), (yyvsp[-2].token), (yyvsp[-1].subentry), (yyvsp[0].token) ); }
1303 #line 1304 "parser.c"
1304     break;
1305 
1306   case 12: /* SubList: SubList Sub  */
1307 #line 118 "parser.y"
1308                       { APPEND(DMXConfigSubPtr,(yyvsp[-1].subentry),(yyvsp[0].subentry)); (yyval.subentry) = (yyvsp[-1].subentry); }
1309 #line 1310 "parser.c"
1310     break;
1311 
1312   case 13: /* Sub: T_LINE_COMMENT  */
1313 #line 121 "parser.y"
1314                      { (yyval.subentry) = dmxConfigSubComment((yyvsp[0].comment)); }
1315 #line 1316 "parser.c"
1316     break;
1317 
1318   case 14: /* Sub: DisplayEntry  */
1319 #line 122 "parser.y"
1320                      { (yyval.subentry) = dmxConfigSubDisplay((yyvsp[0].display)); }
1321 #line 1322 "parser.c"
1322     break;
1323 
1324   case 15: /* Sub: WallEntry  */
1325 #line 123 "parser.y"
1326                      { (yyval.subentry) = dmxConfigSubWall((yyvsp[0].wall)); }
1327 #line 1328 "parser.c"
1328     break;
1329 
1330   case 16: /* Sub: OptionEntry  */
1331 #line 124 "parser.y"
1332                      { (yyval.subentry) = dmxConfigSubOption((yyvsp[0].option)); }
1333 #line 1334 "parser.c"
1334     break;
1335 
1336   case 17: /* Sub: ParamEntry  */
1337 #line 125 "parser.y"
1338                      { (yyval.subentry) = dmxConfigSubParam((yyvsp[0].param)); }
1339 #line 1340 "parser.c"
1340     break;
1341 
1342   case 18: /* OptionEntry: T_OPTION NameList Terminal  */
1343 #line 129 "parser.y"
1344               { (yyval.option) = dmxConfigCreateOption((yyvsp[-2].token), (yyvsp[-1].string), (yyvsp[0].token)); }
1345 #line 1346 "parser.c"
1346     break;
1347 
1348   case 19: /* ParamEntry: T_PARAM NameList Terminal  */
1349 #line 133 "parser.y"
1350              { (yyval.param) = dmxConfigCreateParam((yyvsp[-2].token), NULL, (yyvsp[-1].string), NULL, (yyvsp[0].token)); }
1351 #line 1352 "parser.c"
1352     break;
1353 
1354   case 20: /* ParamEntry: T_PARAM Open ParamList Close  */
1355 #line 135 "parser.y"
1356              { (yyval.param) = dmxConfigCreateParam((yyvsp[-3].token), (yyvsp[-2].token), NULL, (yyvsp[0].token), NULL);
1357                (yyval.param)->next = (yyvsp[-1].param);
1358              }
1359 #line 1360 "parser.c"
1360     break;
1361 
1362   case 22: /* ParamList: ParamList Param  */
1363 #line 141 "parser.y"
1364                             { APPEND(DMXConfigParamPtr,(yyvsp[-1].param),(yyvsp[0].param)); (yyval.param) = (yyvsp[-1].param); }
1365 #line 1366 "parser.c"
1366     break;
1367 
1368   case 23: /* Param: NameList Terminal  */
1369 #line 145 "parser.y"
1370         { (yyval.param) = dmxConfigCreateParam(NULL, NULL, (yyvsp[-1].string), NULL, (yyvsp[0].token)); }
1371 #line 1372 "parser.c"
1372     break;
1373 
1374   case 24: /* PartialDim: Dimension Offset  */
1375 #line 149 "parser.y"
1376              { (yyval.pdim) = dmxConfigCreatePartDim((yyvsp[-1].pair), (yyvsp[0].pair)); }
1377 #line 1378 "parser.c"
1378     break;
1379 
1380   case 25: /* PartialDim: Dimension  */
1381 #line 151 "parser.y"
1382              { (yyval.pdim) = dmxConfigCreatePartDim((yyvsp[0].pair), NULL); }
1383 #line 1384 "parser.c"
1384     break;
1385 
1386   case 26: /* PartialDim: Offset  */
1387 #line 153 "parser.y"
1388              { (yyval.pdim) = dmxConfigCreatePartDim(NULL, (yyvsp[0].pair)); }
1389 #line 1390 "parser.c"
1390     break;
1391 
1392   case 27: /* FullDim: PartialDim '/' PartialDim  */
1393 #line 157 "parser.y"
1394           { (yyval.fdim) = dmxConfigCreateFullDim((yyvsp[-2].pdim), (yyvsp[0].pdim)); }
1395 #line 1396 "parser.c"
1396     break;
1397 
1398   case 28: /* FullDim: '/' PartialDim  */
1399 #line 159 "parser.y"
1400           { (yyval.fdim) = dmxConfigCreateFullDim(NULL, (yyvsp[0].pdim)); }
1401 #line 1402 "parser.c"
1402     break;
1403 
1404   case 29: /* FullDim: PartialDim  */
1405 #line 161 "parser.y"
1406           { (yyval.fdim) = dmxConfigCreateFullDim((yyvsp[0].pdim), NULL); }
1407 #line 1408 "parser.c"
1408     break;
1409 
1410   case 30: /* DisplayEntry: Display Name FullDim Origin Terminal  */
1411 #line 165 "parser.y"
1412                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-4].token), (yyvsp[-3].string), (yyvsp[-2].fdim), (yyvsp[-1].pair), (yyvsp[0].token)); }
1413 #line 1414 "parser.c"
1414     break;
1415 
1416   case 31: /* DisplayEntry: Display FullDim Origin Terminal  */
1417 #line 167 "parser.y"
1418                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-3].token), NULL, (yyvsp[-2].fdim), (yyvsp[-1].pair), (yyvsp[0].token)); }
1419 #line 1420 "parser.c"
1420     break;
1421 
1422   case 32: /* DisplayEntry: Display Name Origin Terminal  */
1423 #line 169 "parser.y"
1424                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-3].token), (yyvsp[-2].string), NULL, (yyvsp[-1].pair), (yyvsp[0].token)); }
1425 #line 1426 "parser.c"
1426     break;
1427 
1428   case 33: /* DisplayEntry: Display Name FullDim Terminal  */
1429 #line 172 "parser.y"
1430                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-3].token), (yyvsp[-2].string), (yyvsp[-1].fdim), NULL, (yyvsp[0].token)); }
1431 #line 1432 "parser.c"
1432     break;
1433 
1434   case 34: /* DisplayEntry: Display FullDim Terminal  */
1435 #line 174 "parser.y"
1436                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-2].token), NULL, (yyvsp[-1].fdim), NULL, (yyvsp[0].token)); }
1437 #line 1438 "parser.c"
1438     break;
1439 
1440   case 35: /* DisplayEntry: Display Name Terminal  */
1441 #line 176 "parser.y"
1442                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-2].token), (yyvsp[-1].string), NULL, NULL, (yyvsp[0].token)); }
1443 #line 1444 "parser.c"
1444     break;
1445 
1446   case 36: /* DisplayEntry: Display Terminal  */
1447 #line 178 "parser.y"
1448                { (yyval.display) = dmxConfigCreateDisplay((yyvsp[-1].token), NULL, NULL, NULL, (yyvsp[0].token)); }
1449 #line 1450 "parser.c"
1450     break;
1451 
1452   case 37: /* WallEntry: Wall Dimension Dimension NameList Terminal  */
1453 #line 182 "parser.y"
1454             { (yyval.wall) = dmxConfigCreateWall((yyvsp[-4].token), (yyvsp[-3].pair), (yyvsp[-2].pair), (yyvsp[-1].string), (yyvsp[0].token)); }
1455 #line 1456 "parser.c"
1456     break;
1457 
1458   case 38: /* WallEntry: Wall Dimension NameList Terminal  */
1459 #line 184 "parser.y"
1460             { (yyval.wall) = dmxConfigCreateWall((yyvsp[-3].token), (yyvsp[-2].pair), NULL, (yyvsp[-1].string), (yyvsp[0].token)); }
1461 #line 1462 "parser.c"
1462     break;
1463 
1464   case 39: /* WallEntry: Wall NameList Terminal  */
1465 #line 186 "parser.y"
1466             { (yyval.wall) = dmxConfigCreateWall((yyvsp[-2].token), NULL, NULL, (yyvsp[-1].string), (yyvsp[0].token)); }
1467 #line 1468 "parser.c"
1468     break;
1469 
1470   case 41: /* Display: T_DISPLAY T_COMMENT  */
1471 #line 190 "parser.y"
1472                               { (yyval.token) = (yyvsp[-1].token); (yyval.token)->comment = (yyvsp[0].comment)->comment; }
1473 #line 1474 "parser.c"
1474     break;
1475 
1476   case 43: /* Name: T_STRING T_COMMENT  */
1477 #line 194 "parser.y"
1478                           { (yyval.string) = (yyvsp[-1].string); (yyval.string)->comment = (yyvsp[0].comment)->comment; }
1479 #line 1480 "parser.c"
1480     break;
1481 
1482   case 45: /* Dimension: T_DIMENSION T_COMMENT  */
1483 #line 198 "parser.y"
1484                                   { (yyval.pair) = (yyvsp[-1].pair); (yyval.pair)->comment = (yyvsp[0].comment)->comment; }
1485 #line 1486 "parser.c"
1486     break;
1487 
1488   case 47: /* Offset: T_OFFSET T_COMMENT  */
1489 #line 202 "parser.y"
1490                             { (yyval.pair) = (yyvsp[-1].pair); (yyval.pair)->comment = (yyvsp[0].comment)->comment; }
1491 #line 1492 "parser.c"
1492     break;
1493 
1494   case 49: /* Origin: T_ORIGIN T_COMMENT  */
1495 #line 206 "parser.y"
1496                             { (yyval.pair) = (yyvsp[-1].pair); (yyval.pair)->comment = (yyvsp[0].comment)->comment; }
1497 #line 1498 "parser.c"
1498     break;
1499 
1500   case 51: /* Terminal: ';' T_COMMENT  */
1501 #line 210 "parser.y"
1502                          { (yyval.token) = (yyvsp[-1].token); (yyval.token)->comment = (yyvsp[0].comment)->comment; }
1503 #line 1504 "parser.c"
1504     break;
1505 
1506   case 53: /* Open: '{' T_COMMENT  */
1507 #line 214 "parser.y"
1508                      { (yyval.token) = (yyvsp[-1].token); (yyval.token)->comment = (yyvsp[0].comment)->comment; }
1509 #line 1510 "parser.c"
1510     break;
1511 
1512   case 55: /* Close: '}' T_COMMENT  */
1513 #line 218 "parser.y"
1514                       { (yyval.token) = (yyvsp[-1].token); (yyval.token)->comment = (yyvsp[0].comment)->comment; }
1515 #line 1516 "parser.c"
1516     break;
1517 
1518   case 57: /* Wall: T_WALL T_COMMENT  */
1519 #line 222 "parser.y"
1520                         { (yyval.token) = (yyvsp[-1].token); (yyval.token)->comment = (yyvsp[0].comment)->comment; }
1521 #line 1522 "parser.c"
1522     break;
1523 
1524   case 59: /* NameList: NameList Name  */
1525 #line 226 "parser.y"
1526                          { APPEND(DMXConfigStringPtr, (yyvsp[-1].string), (yyvsp[0].string)); (yyval.string) = (yyvsp[-1].string); }
1527 #line 1528 "parser.c"
1528     break;
1529 
1530 
1531 #line 1532 "parser.c"
1532 
1533       default: break;
1534     }
1535   /* User semantic actions sometimes alter yychar, and that requires
1536      that yytoken be updated with the new translation.  We take the
1537      approach of translating immediately before every use of yytoken.
1538      One alternative is translating here after every semantic action,
1539      but that translation would be missed if the semantic action invokes
1540      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
1541      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
1542      incorrect destructor might then be invoked immediately.  In the
1543      case of YYERROR or YYBACKUP, subsequent parser actions might lead
1544      to an incorrect destructor call or verbose syntax error message
1545      before the lookahead is translated.  */
1546   YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
1547 
1548   YYPOPSTACK (yylen);
1549   yylen = 0;
1550 
1551   *++yyvsp = yyval;
1552 
1553   /* Now 'shift' the result of the reduction.  Determine what state
1554      that goes to, based on the state we popped back to and the rule
1555      number reduced by.  */
1556   {
1557     const int yylhs = yyr1[yyn] - YYNTOKENS;
1558     const int yyi = yypgoto[yylhs] + *yyssp;
1559     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1560                ? yytable[yyi]
1561                : yydefgoto[yylhs]);
1562   }
1563 
1564   goto yynewstate;
1565 
1566 
1567 /*--------------------------------------.
1568 | yyerrlab -- here on detecting error.  |
1569 `--------------------------------------*/
1570 yyerrlab:
1571   /* Make sure we have latest lookahead translation.  See comments at
1572      user semantic actions for why this is necessary.  */
1573   yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
1574   /* If not already recovering from an error, report this error.  */
1575   if (!yyerrstatus)
1576     {
1577       ++yynerrs;
1578       yyerror (YY_("syntax error"));
1579     }
1580 
1581   if (yyerrstatus == 3)
1582     {
1583       /* If just tried and failed to reuse lookahead token after an
1584          error, discard it.  */
1585 
1586       if (yychar <= YYEOF)
1587         {
1588           /* Return failure if at end of input.  */
1589           if (yychar == YYEOF)
1590             YYABORT;
1591         }
1592       else
1593         {
1594           yydestruct ("Error: discarding",
1595                       yytoken, &yylval);
1596           yychar = YYEMPTY;
1597         }
1598     }
1599 
1600   /* Else will try to reuse lookahead token after shifting the error
1601      token.  */
1602   goto yyerrlab1;
1603 
1604 
1605 /*---------------------------------------------------.
1606 | yyerrorlab -- error raised explicitly by YYERROR.  |
1607 `---------------------------------------------------*/
1608 yyerrorlab:
1609   /* Pacify compilers when the user code never invokes YYERROR and the
1610      label yyerrorlab therefore never appears in user code.  */
1611   if (0)
1612     YYERROR;
1613 
1614   /* Do not reclaim the symbols of the rule whose action triggered
1615      this YYERROR.  */
1616   YYPOPSTACK (yylen);
1617   yylen = 0;
1618   YY_STACK_PRINT (yyss, yyssp);
1619   yystate = *yyssp;
1620   goto yyerrlab1;
1621 
1622 
1623 /*-------------------------------------------------------------.
1624 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
1625 `-------------------------------------------------------------*/
1626 yyerrlab1:
1627   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1628 
1629   /* Pop stack until we find a state that shifts the error token.  */
1630   for (;;)
1631     {
1632       yyn = yypact[yystate];
1633       if (!yypact_value_is_default (yyn))
1634         {
1635           yyn += YYSYMBOL_YYerror;
1636           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
1637             {
1638               yyn = yytable[yyn];
1639               if (0 < yyn)
1640                 break;
1641             }
1642         }
1643 
1644       /* Pop the current state because it cannot handle the error token.  */
1645       if (yyssp == yyss)
1646         YYABORT;
1647 
1648 
1649       yydestruct ("Error: popping",
1650                   YY_ACCESSING_SYMBOL (yystate), yyvsp);
1651       YYPOPSTACK (1);
1652       yystate = *yyssp;
1653       YY_STACK_PRINT (yyss, yyssp);
1654     }
1655 
1656   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1657   *++yyvsp = yylval;
1658   YY_IGNORE_MAYBE_UNINITIALIZED_END
1659 
1660 
1661   /* Shift the error token.  */
1662   YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
1663 
1664   yystate = yyn;
1665   goto yynewstate;
1666 
1667 
1668 /*-------------------------------------.
1669 | yyacceptlab -- YYACCEPT comes here.  |
1670 `-------------------------------------*/
1671 yyacceptlab:
1672   yyresult = 0;
1673   goto yyreturn;
1674 
1675 
1676 /*-----------------------------------.
1677 | yyabortlab -- YYABORT comes here.  |
1678 `-----------------------------------*/
1679 yyabortlab:
1680   yyresult = 1;
1681   goto yyreturn;
1682 
1683 
1684 #if !defined yyoverflow
1685 /*-------------------------------------------------.
1686 | yyexhaustedlab -- memory exhaustion comes here.  |
1687 `-------------------------------------------------*/
1688 yyexhaustedlab:
1689   yyerror (YY_("memory exhausted"));
1690   yyresult = 2;
1691   goto yyreturn;
1692 #endif
1693 
1694 
1695 /*-------------------------------------------------------.
1696 | yyreturn -- parsing is finished, clean up and return.  |
1697 `-------------------------------------------------------*/
1698 yyreturn:
1699   if (yychar != YYEMPTY)
1700     {
1701       /* Make sure we have latest lookahead translation.  See comments at
1702          user semantic actions for why this is necessary.  */
1703       yytoken = YYTRANSLATE (yychar);
1704       yydestruct ("Cleanup: discarding lookahead",
1705                   yytoken, &yylval);
1706     }
1707   /* Do not reclaim the symbols of the rule whose action triggered
1708      this YYABORT or YYACCEPT.  */
1709   YYPOPSTACK (yylen);
1710   YY_STACK_PRINT (yyss, yyssp);
1711   while (yyssp != yyss)
1712     {
1713       yydestruct ("Cleanup: popping",
1714                   YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
1715       YYPOPSTACK (1);
1716     }
1717 #ifndef yyoverflow
1718   if (yyss != yyssa)
1719     YYSTACK_FREE (yyss);
1720 #endif
1721 
1722   return yyresult;
1723 }
1724 
1725