1706f2543Smrg/* A Bison parser, made by GNU Bison 2.4.3.  */
2706f2543Smrg
3706f2543Smrg/* Skeleton implementation for Bison's Yacc-like parsers in C
4706f2543Smrg
5706f2543Smrg      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
6706f2543Smrg   2009, 2010 Free Software Foundation, Inc.
7706f2543Smrg
8706f2543Smrg   This program is free software: you can redistribute it and/or modify
9706f2543Smrg   it under the terms of the GNU General Public License as published by
10706f2543Smrg   the Free Software Foundation, either version 3 of the License, or
11706f2543Smrg   (at your option) any later version.
12706f2543Smrg
13706f2543Smrg   This program is distributed in the hope that it will be useful,
14706f2543Smrg   but WITHOUT ANY WARRANTY; without even the implied warranty of
15706f2543Smrg   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16706f2543Smrg   GNU General Public License for more details.
17706f2543Smrg
18706f2543Smrg   You should have received a copy of the GNU General Public License
19706f2543Smrg   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
20706f2543Smrg
21706f2543Smrg/* As a special exception, you may create a larger work that contains
22706f2543Smrg   part or all of the Bison parser skeleton and distribute that work
23706f2543Smrg   under terms of your choice, so long as that work isn't itself a
24706f2543Smrg   parser generator using the skeleton or a modified version thereof
25706f2543Smrg   as a parser skeleton.  Alternatively, if you modify or redistribute
26706f2543Smrg   the parser skeleton itself, you may (at your option) remove this
27706f2543Smrg   special exception, which will cause the skeleton and the resulting
28706f2543Smrg   Bison output files to be licensed under the GNU General Public
29706f2543Smrg   License without this special exception.
30706f2543Smrg
31706f2543Smrg   This special exception was added by the Free Software Foundation in
32706f2543Smrg   version 2.2 of Bison.  */
33706f2543Smrg
34706f2543Smrg/* C LALR(1) parser skeleton written by Richard Stallman, by
35706f2543Smrg   simplifying the original so-called "semantic" parser.  */
36706f2543Smrg
37706f2543Smrg/* All symbols defined below should begin with yy or YY, to avoid
38706f2543Smrg   infringing on user name space.  This should be done even for local
39706f2543Smrg   variables, as they might otherwise be expanded by user macros.
40706f2543Smrg   There are some unavoidable exceptions within include files to
41706f2543Smrg   define necessary library symbols; they are noted "INFRINGES ON
42706f2543Smrg   USER NAME SPACE" below.  */
43706f2543Smrg
44706f2543Smrg/* Identify Bison output.  */
45706f2543Smrg#define YYBISON 1
46706f2543Smrg
47706f2543Smrg/* Bison version.  */
48706f2543Smrg#define YYBISON_VERSION "2.4.3"
49706f2543Smrg
50706f2543Smrg/* Skeleton name.  */
51706f2543Smrg#define YYSKELETON_NAME "yacc.c"
52706f2543Smrg
53706f2543Smrg/* Pure parsers.  */
54706f2543Smrg#define YYPURE 0
55706f2543Smrg
56706f2543Smrg/* Push parsers.  */
57706f2543Smrg#define YYPUSH 0
58706f2543Smrg
59706f2543Smrg/* Pull parsers.  */
60706f2543Smrg#define YYPULL 1
61706f2543Smrg
62706f2543Smrg/* Using locations.  */
63706f2543Smrg#define YYLSP_NEEDED 0
64706f2543Smrg
65706f2543Smrg
66706f2543Smrg
67706f2543Smrg/* Copy the first part of user declarations.  */
68706f2543Smrg
69706f2543Smrg/* Line 189 of yacc.c  */
70706f2543Smrg#line 35 "parser.y"
71706f2543Smrg
72706f2543Smrg#ifdef HAVE_DMX_CONFIG_H
73706f2543Smrg#include <dmx-config.h>
74706f2543Smrg#endif
75706f2543Smrg
76706f2543Smrg#include "dmxparse.h"
77706f2543Smrg#include <string.h>
78706f2543Smrg#include <stdlib.h>
79706f2543Smrg#define YYDEBUG 1
80706f2543Smrg#define YYERROR_VERBOSE
81706f2543Smrg#define YY_USE_PROTOS
82706f2543Smrg
83706f2543SmrgDMXConfigEntryPtr dmxConfigEntry = NULL;
84706f2543Smrg#define APPEND(type, h, t)                 \
85706f2543Smrg{                                          \
86706f2543Smrg    type pt;                               \
87706f2543Smrg    for (pt = h; pt->next; pt = pt->next); \
88706f2543Smrg    pt->next = t;                          \
89706f2543Smrg}
90706f2543Smrg
91706f2543Smrg
92706f2543Smrg/* Line 189 of yacc.c  */
93706f2543Smrg#line 94 "parser.c"
94706f2543Smrg
95706f2543Smrg/* Enabling traces.  */
96706f2543Smrg#ifndef YYDEBUG
97706f2543Smrg# define YYDEBUG 0
98706f2543Smrg#endif
99706f2543Smrg
100706f2543Smrg/* Enabling verbose error messages.  */
101706f2543Smrg#ifdef YYERROR_VERBOSE
102706f2543Smrg# undef YYERROR_VERBOSE
103706f2543Smrg# define YYERROR_VERBOSE 1
104706f2543Smrg#else
105706f2543Smrg# define YYERROR_VERBOSE 0
106706f2543Smrg#endif
107706f2543Smrg
108706f2543Smrg/* Enabling the token table.  */
109706f2543Smrg#ifndef YYTOKEN_TABLE
110706f2543Smrg# define YYTOKEN_TABLE 0
111706f2543Smrg#endif
112706f2543Smrg
113706f2543Smrg
114706f2543Smrg/* Tokens.  */
115706f2543Smrg#ifndef YYTOKENTYPE
116706f2543Smrg# define YYTOKENTYPE
117706f2543Smrg   /* Put the tokens into the symbol table, so that GDB and other debuggers
118706f2543Smrg      know about them.  */
119706f2543Smrg   enum yytokentype {
120706f2543Smrg     T_VIRTUAL = 258,
121706f2543Smrg     T_DISPLAY = 259,
122706f2543Smrg     T_WALL = 260,
123706f2543Smrg     T_OPTION = 261,
124706f2543Smrg     T_PARAM = 262,
125706f2543Smrg     T_STRING = 263,
126706f2543Smrg     T_DIMENSION = 264,
127706f2543Smrg     T_OFFSET = 265,
128706f2543Smrg     T_ORIGIN = 266,
129706f2543Smrg     T_COMMENT = 267,
130706f2543Smrg     T_LINE_COMMENT = 268
131706f2543Smrg   };
132706f2543Smrg#endif
133706f2543Smrg/* Tokens.  */
134706f2543Smrg#define T_VIRTUAL 258
135706f2543Smrg#define T_DISPLAY 259
136706f2543Smrg#define T_WALL 260
137706f2543Smrg#define T_OPTION 261
138706f2543Smrg#define T_PARAM 262
139706f2543Smrg#define T_STRING 263
140706f2543Smrg#define T_DIMENSION 264
141706f2543Smrg#define T_OFFSET 265
142706f2543Smrg#define T_ORIGIN 266
143706f2543Smrg#define T_COMMENT 267
144706f2543Smrg#define T_LINE_COMMENT 268
145706f2543Smrg
146706f2543Smrg
147706f2543Smrg
148706f2543Smrg
149706f2543Smrg#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
150706f2543Smrgtypedef union YYSTYPE
151706f2543Smrg{
152706f2543Smrg
153706f2543Smrg/* Line 214 of yacc.c  */
154706f2543Smrg#line 56 "parser.y"
155706f2543Smrg
156706f2543Smrg    DMXConfigTokenPtr      token;
157706f2543Smrg    DMXConfigStringPtr     string;
158706f2543Smrg    DMXConfigNumberPtr     number;
159706f2543Smrg    DMXConfigPairPtr       pair;
160706f2543Smrg    DMXConfigFullDimPtr    fdim;
161706f2543Smrg    DMXConfigPartDimPtr    pdim;
162706f2543Smrg    DMXConfigDisplayPtr    display;
163706f2543Smrg    DMXConfigWallPtr       wall;
164706f2543Smrg    DMXConfigOptionPtr     option;
165706f2543Smrg    DMXConfigParamPtr      param;
166706f2543Smrg    DMXConfigCommentPtr    comment;
167706f2543Smrg    DMXConfigSubPtr        subentry;
168706f2543Smrg    DMXConfigVirtualPtr    virtual;
169706f2543Smrg    DMXConfigEntryPtr      entry;
170706f2543Smrg
171706f2543Smrg
172706f2543Smrg
173706f2543Smrg/* Line 214 of yacc.c  */
174706f2543Smrg#line 175 "parser.c"
175706f2543Smrg} YYSTYPE;
176706f2543Smrg# define YYSTYPE_IS_TRIVIAL 1
177706f2543Smrg# define yystype YYSTYPE /* obsolescent; will be withdrawn */
178706f2543Smrg# define YYSTYPE_IS_DECLARED 1
179706f2543Smrg#endif
180706f2543Smrg
181706f2543Smrg
182706f2543Smrg/* Copy the second part of user declarations.  */
183706f2543Smrg
184706f2543Smrg
185706f2543Smrg/* Line 264 of yacc.c  */
186706f2543Smrg#line 187 "parser.c"
187706f2543Smrg
188706f2543Smrg#ifdef short
189706f2543Smrg# undef short
190706f2543Smrg#endif
191706f2543Smrg
192706f2543Smrg#ifdef YYTYPE_UINT8
193706f2543Smrgtypedef YYTYPE_UINT8 yytype_uint8;
194706f2543Smrg#else
195706f2543Smrgtypedef unsigned char yytype_uint8;
196706f2543Smrg#endif
197706f2543Smrg
198706f2543Smrg#ifdef YYTYPE_INT8
199706f2543Smrgtypedef YYTYPE_INT8 yytype_int8;
200706f2543Smrg#elif (defined __STDC__ || defined __C99__FUNC__ \
201706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
202706f2543Smrgtypedef signed char yytype_int8;
203706f2543Smrg#else
204706f2543Smrgtypedef short int yytype_int8;
205706f2543Smrg#endif
206706f2543Smrg
207706f2543Smrg#ifdef YYTYPE_UINT16
208706f2543Smrgtypedef YYTYPE_UINT16 yytype_uint16;
209706f2543Smrg#else
210706f2543Smrgtypedef unsigned short int yytype_uint16;
211706f2543Smrg#endif
212706f2543Smrg
213706f2543Smrg#ifdef YYTYPE_INT16
214706f2543Smrgtypedef YYTYPE_INT16 yytype_int16;
215706f2543Smrg#else
216706f2543Smrgtypedef short int yytype_int16;
217706f2543Smrg#endif
218706f2543Smrg
219706f2543Smrg#ifndef YYSIZE_T
220706f2543Smrg# ifdef __SIZE_TYPE__
221706f2543Smrg#  define YYSIZE_T __SIZE_TYPE__
222706f2543Smrg# elif defined size_t
223706f2543Smrg#  define YYSIZE_T size_t
224706f2543Smrg# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
225706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
226706f2543Smrg#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
227706f2543Smrg#  define YYSIZE_T size_t
228706f2543Smrg# else
229706f2543Smrg#  define YYSIZE_T unsigned int
230706f2543Smrg# endif
231706f2543Smrg#endif
232706f2543Smrg
233706f2543Smrg#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
234706f2543Smrg
235706f2543Smrg#ifndef YY_
236706f2543Smrg# if defined YYENABLE_NLS && YYENABLE_NLS
237706f2543Smrg#  if ENABLE_NLS
238706f2543Smrg#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
239706f2543Smrg#   define YY_(msgid) dgettext ("bison-runtime", msgid)
240706f2543Smrg#  endif
241706f2543Smrg# endif
242706f2543Smrg# ifndef YY_
243706f2543Smrg#  define YY_(msgid) msgid
244706f2543Smrg# endif
245706f2543Smrg#endif
246706f2543Smrg
247706f2543Smrg/* Suppress unused-variable warnings by "using" E.  */
248706f2543Smrg#if ! defined lint || defined __GNUC__
249706f2543Smrg# define YYUSE(e) ((void) (e))
250706f2543Smrg#else
251706f2543Smrg# define YYUSE(e) /* empty */
252706f2543Smrg#endif
253706f2543Smrg
254706f2543Smrg/* Identity function, used to suppress warnings about constant conditions.  */
255706f2543Smrg#ifndef lint
256706f2543Smrg# define YYID(n) (n)
257706f2543Smrg#else
258706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
259706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
260706f2543Smrgstatic int
261706f2543SmrgYYID (int yyi)
262706f2543Smrg#else
263706f2543Smrgstatic int
264706f2543SmrgYYID (yyi)
265706f2543Smrg    int yyi;
266706f2543Smrg#endif
267706f2543Smrg{
268706f2543Smrg  return yyi;
269706f2543Smrg}
270706f2543Smrg#endif
271706f2543Smrg
272706f2543Smrg#if ! defined yyoverflow || YYERROR_VERBOSE
273706f2543Smrg
274706f2543Smrg/* The parser invokes alloca or malloc; define the necessary symbols.  */
275706f2543Smrg
276706f2543Smrg# ifdef YYSTACK_USE_ALLOCA
277706f2543Smrg#  if YYSTACK_USE_ALLOCA
278706f2543Smrg#   ifdef __GNUC__
279706f2543Smrg#    define YYSTACK_ALLOC __builtin_alloca
280706f2543Smrg#   elif defined __BUILTIN_VA_ARG_INCR
281706f2543Smrg#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
282706f2543Smrg#   elif defined _AIX
283706f2543Smrg#    define YYSTACK_ALLOC __alloca
284706f2543Smrg#   elif defined _MSC_VER
285706f2543Smrg#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
286706f2543Smrg#    define alloca _alloca
287706f2543Smrg#   else
288706f2543Smrg#    define YYSTACK_ALLOC alloca
289706f2543Smrg#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
290706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
291706f2543Smrg#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
292706f2543Smrg#     ifndef _STDLIB_H
293706f2543Smrg#      define _STDLIB_H 1
294706f2543Smrg#     endif
295706f2543Smrg#    endif
296706f2543Smrg#   endif
297706f2543Smrg#  endif
298706f2543Smrg# endif
299706f2543Smrg
300706f2543Smrg# ifdef YYSTACK_ALLOC
301706f2543Smrg   /* Pacify GCC's `empty if-body' warning.  */
302706f2543Smrg#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
303706f2543Smrg#  ifndef YYSTACK_ALLOC_MAXIMUM
304706f2543Smrg    /* The OS might guarantee only one guard page at the bottom of the stack,
305706f2543Smrg       and a page size can be as small as 4096 bytes.  So we cannot safely
306706f2543Smrg       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
307706f2543Smrg       to allow for a few compiler-allocated temporary stack slots.  */
308706f2543Smrg#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
309706f2543Smrg#  endif
310706f2543Smrg# else
311706f2543Smrg#  define YYSTACK_ALLOC YYMALLOC
312706f2543Smrg#  define YYSTACK_FREE YYFREE
313706f2543Smrg#  ifndef YYSTACK_ALLOC_MAXIMUM
314706f2543Smrg#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
315706f2543Smrg#  endif
316706f2543Smrg#  if (defined __cplusplus && ! defined _STDLIB_H \
317706f2543Smrg       && ! ((defined YYMALLOC || defined malloc) \
318706f2543Smrg	     && (defined YYFREE || defined free)))
319706f2543Smrg#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
320706f2543Smrg#   ifndef _STDLIB_H
321706f2543Smrg#    define _STDLIB_H 1
322706f2543Smrg#   endif
323706f2543Smrg#  endif
324706f2543Smrg#  ifndef YYMALLOC
325706f2543Smrg#   define YYMALLOC malloc
326706f2543Smrg#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
327706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
328706f2543Smrgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
329706f2543Smrg#   endif
330706f2543Smrg#  endif
331706f2543Smrg#  ifndef YYFREE
332706f2543Smrg#   define YYFREE free
333706f2543Smrg#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
334706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
335706f2543Smrgvoid free (void *); /* INFRINGES ON USER NAME SPACE */
336706f2543Smrg#   endif
337706f2543Smrg#  endif
338706f2543Smrg# endif
339706f2543Smrg#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
340706f2543Smrg
341706f2543Smrg
342706f2543Smrg#if (! defined yyoverflow \
343706f2543Smrg     && (! defined __cplusplus \
344706f2543Smrg	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
345706f2543Smrg
346706f2543Smrg/* A type that is properly aligned for any stack member.  */
347706f2543Smrgunion yyalloc
348706f2543Smrg{
349706f2543Smrg  yytype_int16 yyss_alloc;
350706f2543Smrg  YYSTYPE yyvs_alloc;
351706f2543Smrg};
352706f2543Smrg
353706f2543Smrg/* The size of the maximum gap between one aligned stack and the next.  */
354706f2543Smrg# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
355706f2543Smrg
356706f2543Smrg/* The size of an array large to enough to hold all stacks, each with
357706f2543Smrg   N elements.  */
358706f2543Smrg# define YYSTACK_BYTES(N) \
359706f2543Smrg     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
360706f2543Smrg      + YYSTACK_GAP_MAXIMUM)
361706f2543Smrg
362706f2543Smrg/* Copy COUNT objects from FROM to TO.  The source and destination do
363706f2543Smrg   not overlap.  */
364706f2543Smrg# ifndef YYCOPY
365706f2543Smrg#  if defined __GNUC__ && 1 < __GNUC__
366706f2543Smrg#   define YYCOPY(To, From, Count) \
367706f2543Smrg      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
368706f2543Smrg#  else
369706f2543Smrg#   define YYCOPY(To, From, Count)		\
370706f2543Smrg      do					\
371706f2543Smrg	{					\
372706f2543Smrg	  YYSIZE_T yyi;				\
373706f2543Smrg	  for (yyi = 0; yyi < (Count); yyi++)	\
374706f2543Smrg	    (To)[yyi] = (From)[yyi];		\
375706f2543Smrg	}					\
376706f2543Smrg      while (YYID (0))
377706f2543Smrg#  endif
378706f2543Smrg# endif
379706f2543Smrg
380706f2543Smrg/* Relocate STACK from its old location to the new one.  The
381706f2543Smrg   local variables YYSIZE and YYSTACKSIZE give the old and new number of
382706f2543Smrg   elements in the stack, and YYPTR gives the new location of the
383706f2543Smrg   stack.  Advance YYPTR to a properly aligned location for the next
384706f2543Smrg   stack.  */
385706f2543Smrg# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
386706f2543Smrg    do									\
387706f2543Smrg      {									\
388706f2543Smrg	YYSIZE_T yynewbytes;						\
389706f2543Smrg	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
390706f2543Smrg	Stack = &yyptr->Stack_alloc;					\
391706f2543Smrg	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
392706f2543Smrg	yyptr += yynewbytes / sizeof (*yyptr);				\
393706f2543Smrg      }									\
394706f2543Smrg    while (YYID (0))
395706f2543Smrg
396706f2543Smrg#endif
397706f2543Smrg
398706f2543Smrg/* YYFINAL -- State number of the termination state.  */
399706f2543Smrg#define YYFINAL  13
400706f2543Smrg/* YYLAST -- Last index in YYTABLE.  */
401706f2543Smrg#define YYLAST   106
402706f2543Smrg
403706f2543Smrg/* YYNTOKENS -- Number of terminals.  */
404706f2543Smrg#define YYNTOKENS  18
405706f2543Smrg/* YYNNTS -- Number of nonterminals.  */
406706f2543Smrg#define YYNNTS  25
407706f2543Smrg/* YYNRULES -- Number of rules.  */
408706f2543Smrg#define YYNRULES  59
409706f2543Smrg/* YYNRULES -- Number of states.  */
410706f2543Smrg#define YYNSTATES  95
411706f2543Smrg
412706f2543Smrg/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
413706f2543Smrg#define YYUNDEFTOK  2
414706f2543Smrg#define YYMAXUTOK   268
415706f2543Smrg
416706f2543Smrg#define YYTRANSLATE(YYX)						\
417706f2543Smrg  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
418706f2543Smrg
419706f2543Smrg/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
420706f2543Smrgstatic const yytype_uint8 yytranslate[] =
421706f2543Smrg{
422706f2543Smrg       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
423706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
424706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
425706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
426706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     6,     2,     2,
427706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     5,
428706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
432706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
433706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434706f2543Smrg       2,     2,     2,     3,     2,     4,     2,     2,     2,     2,
435706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
436706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446706f2543Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
447706f2543Smrg       2,     2,     2,     2,     2,     2,     1,     2,     7,     8,
448706f2543Smrg       9,    10,    11,    12,    13,    14,    15,    16,    17
449706f2543Smrg};
450706f2543Smrg
451706f2543Smrg#if YYDEBUG
452706f2543Smrg/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
453706f2543Smrg   YYRHS.  */
454706f2543Smrgstatic const yytype_uint8 yyprhs[] =
455706f2543Smrg{
456706f2543Smrg       0,     0,     3,     5,     7,    10,    12,    14,    19,    25,
457706f2543Smrg      31,    38,    40,    43,    45,    47,    49,    51,    53,    57,
458706f2543Smrg      61,    66,    68,    71,    74,    77,    79,    81,    85,    88,
459706f2543Smrg      90,    96,   101,   106,   111,   115,   119,   122,   128,   133,
460706f2543Smrg     137,   139,   142,   144,   147,   149,   152,   154,   157,   159,
461706f2543Smrg     162,   164,   167,   169,   172,   174,   177,   179,   182,   184
462706f2543Smrg};
463706f2543Smrg
464706f2543Smrg/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
465706f2543Smrgstatic const yytype_int8 yyrhs[] =
466706f2543Smrg{
467706f2543Smrg      19,     0,    -1,    20,    -1,    21,    -1,    20,    21,    -1,
468706f2543Smrg      22,    -1,    17,    -1,     7,    39,    23,    40,    -1,     7,
469706f2543Smrg      35,    39,    23,    40,    -1,     7,    34,    39,    23,    40,
470706f2543Smrg      -1,     7,    34,    35,    39,    23,    40,    -1,    24,    -1,
471706f2543Smrg      23,    24,    -1,    17,    -1,    31,    -1,    32,    -1,    25,
472706f2543Smrg      -1,    26,    -1,    10,    42,    38,    -1,    11,    42,    38,
473706f2543Smrg      -1,    11,    39,    27,    40,    -1,    28,    -1,    27,    28,
474706f2543Smrg      -1,    42,    38,    -1,    35,    36,    -1,    35,    -1,    36,
475706f2543Smrg      -1,    29,     6,    29,    -1,     6,    29,    -1,    29,    -1,
476706f2543Smrg      33,    34,    30,    37,    38,    -1,    33,    30,    37,    38,
477706f2543Smrg      -1,    33,    34,    37,    38,    -1,    33,    34,    30,    38,
478706f2543Smrg      -1,    33,    30,    38,    -1,    33,    34,    38,    -1,    33,
479706f2543Smrg      38,    -1,    41,    35,    35,    42,    38,    -1,    41,    35,
480706f2543Smrg      42,    38,    -1,    41,    42,    38,    -1,     8,    -1,     8,
481706f2543Smrg      16,    -1,    12,    -1,    12,    16,    -1,    13,    -1,    13,
482706f2543Smrg      16,    -1,    14,    -1,    14,    16,    -1,    15,    -1,    15,
483706f2543Smrg      16,    -1,     5,    -1,     5,    16,    -1,     3,    -1,     3,
484706f2543Smrg      16,    -1,     4,    -1,     4,    16,    -1,     9,    -1,     9,
485706f2543Smrg      16,    -1,    34,    -1,    42,    34,    -1
486706f2543Smrg};
487706f2543Smrg
488706f2543Smrg/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
489706f2543Smrgstatic const yytype_uint8 yyrline[] =
490706f2543Smrg{
491706f2543Smrg       0,    95,    95,    98,    99,   102,   103,   106,   108,   110,
492706f2543Smrg     112,   116,   117,   120,   121,   122,   123,   124,   127,   131,
493706f2543Smrg     133,   139,   140,   143,   147,   149,   151,   155,   157,   159,
494706f2543Smrg     163,   165,   167,   170,   172,   174,   176,   180,   182,   184,
495706f2543Smrg     188,   189,   192,   193,   196,   197,   200,   201,   204,   205,
496706f2543Smrg     208,   209,   212,   213,   216,   217,   220,   221,   224,   225
497706f2543Smrg};
498706f2543Smrg#endif
499706f2543Smrg
500706f2543Smrg#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
501706f2543Smrg/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
502706f2543Smrg   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
503706f2543Smrgstatic const char *const yytname[] =
504706f2543Smrg{
505706f2543Smrg  "$end", "error", "$undefined", "'{'", "'}'", "';'", "'/'", "T_VIRTUAL",
506706f2543Smrg  "T_DISPLAY", "T_WALL", "T_OPTION", "T_PARAM", "T_STRING", "T_DIMENSION",
507706f2543Smrg  "T_OFFSET", "T_ORIGIN", "T_COMMENT", "T_LINE_COMMENT", "$accept",
508706f2543Smrg  "Program", "EntryList", "Entry", "Virtual", "SubList", "Sub",
509706f2543Smrg  "OptionEntry", "ParamEntry", "ParamList", "Param", "PartialDim",
510706f2543Smrg  "FullDim", "DisplayEntry", "WallEntry", "Display", "Name", "Dimension",
511706f2543Smrg  "Offset", "Origin", "Terminal", "Open", "Close", "Wall", "NameList", 0
512706f2543Smrg};
513706f2543Smrg#endif
514706f2543Smrg
515706f2543Smrg# ifdef YYPRINT
516706f2543Smrg/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
517706f2543Smrg   token YYLEX-NUM.  */
518706f2543Smrgstatic const yytype_uint16 yytoknum[] =
519706f2543Smrg{
520706f2543Smrg       0,   256,   257,   123,   125,    59,    47,   258,   259,   260,
521706f2543Smrg     261,   262,   263,   264,   265,   266,   267,   268
522706f2543Smrg};
523706f2543Smrg# endif
524706f2543Smrg
525706f2543Smrg/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
526706f2543Smrgstatic const yytype_uint8 yyr1[] =
527706f2543Smrg{
528706f2543Smrg       0,    18,    19,    20,    20,    21,    21,    22,    22,    22,
529706f2543Smrg      22,    23,    23,    24,    24,    24,    24,    24,    25,    26,
530706f2543Smrg      26,    27,    27,    28,    29,    29,    29,    30,    30,    30,
531706f2543Smrg      31,    31,    31,    31,    31,    31,    31,    32,    32,    32,
532706f2543Smrg      33,    33,    34,    34,    35,    35,    36,    36,    37,    37,
533706f2543Smrg      38,    38,    39,    39,    40,    40,    41,    41,    42,    42
534706f2543Smrg};
535706f2543Smrg
536706f2543Smrg/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
537706f2543Smrgstatic const yytype_uint8 yyr2[] =
538706f2543Smrg{
539706f2543Smrg       0,     2,     1,     1,     2,     1,     1,     4,     5,     5,
540706f2543Smrg       6,     1,     2,     1,     1,     1,     1,     1,     3,     3,
541706f2543Smrg       4,     1,     2,     2,     2,     1,     1,     3,     2,     1,
542706f2543Smrg       5,     4,     4,     4,     3,     3,     2,     5,     4,     3,
543706f2543Smrg       1,     2,     1,     2,     1,     2,     1,     2,     1,     2,
544706f2543Smrg       1,     2,     1,     2,     1,     2,     1,     2,     1,     2
545706f2543Smrg};
546706f2543Smrg
547706f2543Smrg/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
548706f2543Smrg   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
549706f2543Smrg   means the default is an error.  */
550706f2543Smrgstatic const yytype_uint8 yydefact[] =
551706f2543Smrg{
552706f2543Smrg       0,     0,     6,     0,     2,     3,     5,    52,    42,    44,
553706f2543Smrg       0,     0,     0,     1,     4,    53,    43,    45,     0,     0,
554706f2543Smrg       0,    40,    56,     0,     0,    13,     0,    11,    16,    17,
555706f2543Smrg      14,    15,     0,     0,     0,     0,     0,    41,    57,    58,
556706f2543Smrg       0,     0,     0,    54,    12,     7,    50,     0,    46,    29,
557706f2543Smrg       0,     0,    25,    26,    36,     0,     0,     0,     9,     8,
558706f2543Smrg      59,    18,     0,    21,     0,    19,    55,    51,    28,    47,
559706f2543Smrg       0,    48,     0,    34,     0,     0,    35,    24,     0,     0,
560706f2543Smrg      39,    10,    22,    20,    23,    27,    49,    31,     0,    33,
561706f2543Smrg      32,     0,    38,    30,    37
562706f2543Smrg};
563706f2543Smrg
564706f2543Smrg/* YYDEFGOTO[NTERM-NUM].  */
565706f2543Smrgstatic const yytype_int8 yydefgoto[] =
566706f2543Smrg{
567706f2543Smrg      -1,     3,     4,     5,     6,    26,    27,    28,    29,    62,
568706f2543Smrg      63,    49,    50,    30,    31,    32,    39,    52,    53,    72,
569706f2543Smrg      54,    12,    45,    33,    64
570706f2543Smrg};
571706f2543Smrg
572706f2543Smrg/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
573706f2543Smrg   STATE-NUM.  */
574706f2543Smrg#define YYPACT_NINF -32
575706f2543Smrgstatic const yytype_int8 yypact[] =
576706f2543Smrg{
577706f2543Smrg      -3,    41,   -32,    22,    -3,   -32,   -32,    12,    35,    46,
578706f2543Smrg       5,    62,    75,   -32,   -32,   -32,   -32,   -32,    62,    75,
579706f2543Smrg      75,    51,    54,    59,    18,   -32,    65,   -32,   -32,   -32,
580706f2543Smrg     -32,   -32,    88,    37,    75,    65,    65,   -32,   -32,   -32,
581706f2543Smrg      86,    59,    86,    61,   -32,   -32,    79,    -4,    80,    28,
582706f2543Smrg      31,    74,    67,   -32,   -32,    37,    86,    65,   -32,   -32,
583706f2543Smrg     -32,   -32,    56,   -32,    86,   -32,   -32,   -32,   -32,   -32,
584706f2543Smrg      -4,    81,    94,   -32,    31,    94,   -32,   -32,    59,    86,
585706f2543Smrg     -32,   -32,   -32,   -32,   -32,   -32,   -32,   -32,    94,   -32,
586706f2543Smrg     -32,    86,   -32,   -32,   -32
587706f2543Smrg};
588706f2543Smrg
589706f2543Smrg/* YYPGOTO[NTERM-NUM].  */
590706f2543Smrgstatic const yytype_int8 yypgoto[] =
591706f2543Smrg{
592706f2543Smrg     -32,   -32,   -32,    99,   -32,     6,   -19,   -32,   -32,   -32,
593706f2543Smrg      42,   -28,    55,   -32,   -32,   -32,    -1,     2,    53,   -31,
594706f2543Smrg     -27,    48,   -30,   -32,   -22
595706f2543Smrg};
596706f2543Smrg
597706f2543Smrg/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
598706f2543Smrg   positive, shift that token.  If negative, reduce the rule which
599706f2543Smrg   number is the opposite.  If zero, do what YYDEFACT says.
600706f2543Smrg   If YYTABLE_NINF, syntax error.  */
601706f2543Smrg#define YYTABLE_NINF -1
602706f2543Smrgstatic const yytype_uint8 yytable[] =
603706f2543Smrg{
604706f2543Smrg      10,    40,    42,    11,     1,    58,    59,    44,     7,     9,
605706f2543Smrg      48,    56,    18,    61,     2,    65,    44,    44,     9,    68,
606706f2543Smrg      75,     7,    13,    73,    76,    35,    36,    81,    15,    80,
607706f2543Smrg       8,    51,    83,    79,    70,    55,    46,    84,    44,    60,
608706f2543Smrg      57,    60,    85,    88,     7,    87,    71,    89,    90,     8,
609706f2543Smrg       9,    16,    92,     8,     9,    60,    91,    78,    19,    20,
610706f2543Smrg      43,    93,    17,    60,    94,     7,    34,    37,     8,    43,
611706f2543Smrg      38,     8,    41,    21,    22,    23,    24,    66,    60,    46,
612706f2543Smrg      47,    48,    25,    21,    22,    23,    24,     9,    48,    71,
613706f2543Smrg      60,    46,    25,    46,    47,    67,    69,    86,     8,    46,
614706f2543Smrg       8,     9,    48,    14,    82,    77,    74
615706f2543Smrg};
616706f2543Smrg
617706f2543Smrgstatic const yytype_uint8 yycheck[] =
618706f2543Smrg{
619706f2543Smrg       1,    23,    24,     1,     7,    35,    36,    26,     3,    13,
620706f2543Smrg      14,    33,    10,    40,    17,    42,    35,    36,    13,    47,
621706f2543Smrg      51,     3,     0,    50,    51,    19,    20,    57,    16,    56,
622706f2543Smrg      12,    32,    62,    55,     6,    33,     5,    64,    57,    40,
623706f2543Smrg      34,    42,    70,    74,     3,    72,    15,    74,    75,    12,
624706f2543Smrg      13,    16,    79,    12,    13,    56,    78,    55,    10,    11,
625706f2543Smrg       4,    88,    16,    64,    91,     3,    18,    16,    12,     4,
626706f2543Smrg      16,    12,    24,     8,     9,    10,    11,    16,    79,     5,
627706f2543Smrg       6,    14,    17,     8,     9,    10,    11,    13,    14,    15,
628706f2543Smrg      91,     5,    17,     5,     6,    16,    16,    16,    12,     5,
629706f2543Smrg      12,    13,    14,     4,    62,    52,    51
630706f2543Smrg};
631706f2543Smrg
632706f2543Smrg/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
633706f2543Smrg   symbol of state STATE-NUM.  */
634706f2543Smrgstatic const yytype_uint8 yystos[] =
635706f2543Smrg{
636706f2543Smrg       0,     7,    17,    19,    20,    21,    22,     3,    12,    13,
637706f2543Smrg      34,    35,    39,     0,    21,    16,    16,    16,    35,    39,
638706f2543Smrg      39,     8,     9,    10,    11,    17,    23,    24,    25,    26,
639706f2543Smrg      31,    32,    33,    41,    39,    23,    23,    16,    16,    34,
640706f2543Smrg      42,    39,    42,     4,    24,    40,     5,     6,    14,    29,
641706f2543Smrg      30,    34,    35,    36,    38,    35,    42,    23,    40,    40,
642706f2543Smrg      34,    38,    27,    28,    42,    38,    16,    16,    29,    16,
643706f2543Smrg       6,    15,    37,    38,    30,    37,    38,    36,    35,    42,
644706f2543Smrg      38,    40,    28,    40,    38,    29,    16,    38,    37,    38,
645706f2543Smrg      38,    42,    38,    38,    38
646706f2543Smrg};
647706f2543Smrg
648706f2543Smrg#define yyerrok		(yyerrstatus = 0)
649706f2543Smrg#define yyclearin	(yychar = YYEMPTY)
650706f2543Smrg#define YYEMPTY		(-2)
651706f2543Smrg#define YYEOF		0
652706f2543Smrg
653706f2543Smrg#define YYACCEPT	goto yyacceptlab
654706f2543Smrg#define YYABORT		goto yyabortlab
655706f2543Smrg#define YYERROR		goto yyerrorlab
656706f2543Smrg
657706f2543Smrg
658706f2543Smrg/* Like YYERROR except do call yyerror.  This remains here temporarily
659706f2543Smrg   to ease the transition to the new meaning of YYERROR, for GCC.
660706f2543Smrg   Once GCC version 2 has supplanted version 1, this can go.  However,
661706f2543Smrg   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
662706f2543Smrg   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
663706f2543Smrg   discussed.  */
664706f2543Smrg
665706f2543Smrg#define YYFAIL		goto yyerrlab
666706f2543Smrg#if defined YYFAIL
667706f2543Smrg  /* This is here to suppress warnings from the GCC cpp's
668706f2543Smrg     -Wunused-macros.  Normally we don't worry about that warning, but
669706f2543Smrg     some users do, and we want to make it easy for users to remove
670706f2543Smrg     YYFAIL uses, which will produce warnings from Bison 2.5.  */
671706f2543Smrg#endif
672706f2543Smrg
673706f2543Smrg#define YYRECOVERING()  (!!yyerrstatus)
674706f2543Smrg
675706f2543Smrg#define YYBACKUP(Token, Value)					\
676706f2543Smrgdo								\
677706f2543Smrg  if (yychar == YYEMPTY && yylen == 1)				\
678706f2543Smrg    {								\
679706f2543Smrg      yychar = (Token);						\
680706f2543Smrg      yylval = (Value);						\
681706f2543Smrg      yytoken = YYTRANSLATE (yychar);				\
682706f2543Smrg      YYPOPSTACK (1);						\
683706f2543Smrg      goto yybackup;						\
684706f2543Smrg    }								\
685706f2543Smrg  else								\
686706f2543Smrg    {								\
687706f2543Smrg      yyerror (YY_("syntax error: cannot back up")); \
688706f2543Smrg      YYERROR;							\
689706f2543Smrg    }								\
690706f2543Smrgwhile (YYID (0))
691706f2543Smrg
692706f2543Smrg
693706f2543Smrg#define YYTERROR	1
694706f2543Smrg#define YYERRCODE	256
695706f2543Smrg
696706f2543Smrg
697706f2543Smrg/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
698706f2543Smrg   If N is 0, then set CURRENT to the empty location which ends
699706f2543Smrg   the previous symbol: RHS[0] (always defined).  */
700706f2543Smrg
701706f2543Smrg#define YYRHSLOC(Rhs, K) ((Rhs)[K])
702706f2543Smrg#ifndef YYLLOC_DEFAULT
703706f2543Smrg# define YYLLOC_DEFAULT(Current, Rhs, N)				\
704706f2543Smrg    do									\
705706f2543Smrg      if (YYID (N))                                                    \
706706f2543Smrg	{								\
707706f2543Smrg	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
708706f2543Smrg	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
709706f2543Smrg	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
710706f2543Smrg	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
711706f2543Smrg	}								\
712706f2543Smrg      else								\
713706f2543Smrg	{								\
714706f2543Smrg	  (Current).first_line   = (Current).last_line   =		\
715706f2543Smrg	    YYRHSLOC (Rhs, 0).last_line;				\
716706f2543Smrg	  (Current).first_column = (Current).last_column =		\
717706f2543Smrg	    YYRHSLOC (Rhs, 0).last_column;				\
718706f2543Smrg	}								\
719706f2543Smrg    while (YYID (0))
720706f2543Smrg#endif
721706f2543Smrg
722706f2543Smrg
723706f2543Smrg/* YY_LOCATION_PRINT -- Print the location on the stream.
724706f2543Smrg   This macro was not mandated originally: define only if we know
725706f2543Smrg   we won't break user code: when these are the locations we know.  */
726706f2543Smrg
727706f2543Smrg#ifndef YY_LOCATION_PRINT
728706f2543Smrg# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
729706f2543Smrg#  define YY_LOCATION_PRINT(File, Loc)			\
730706f2543Smrg     fprintf (File, "%d.%d-%d.%d",			\
731706f2543Smrg	      (Loc).first_line, (Loc).first_column,	\
732706f2543Smrg	      (Loc).last_line,  (Loc).last_column)
733706f2543Smrg# else
734706f2543Smrg#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
735706f2543Smrg# endif
736706f2543Smrg#endif
737706f2543Smrg
738706f2543Smrg
739706f2543Smrg/* YYLEX -- calling `yylex' with the right arguments.  */
740706f2543Smrg
741706f2543Smrg#ifdef YYLEX_PARAM
742706f2543Smrg# define YYLEX yylex (YYLEX_PARAM)
743706f2543Smrg#else
744706f2543Smrg# define YYLEX yylex ()
745706f2543Smrg#endif
746706f2543Smrg
747706f2543Smrg/* Enable debugging if requested.  */
748706f2543Smrg#if YYDEBUG
749706f2543Smrg
750706f2543Smrg# ifndef YYFPRINTF
751706f2543Smrg#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
752706f2543Smrg#  define YYFPRINTF fprintf
753706f2543Smrg# endif
754706f2543Smrg
755706f2543Smrg# define YYDPRINTF(Args)			\
756706f2543Smrgdo {						\
757706f2543Smrg  if (yydebug)					\
758706f2543Smrg    YYFPRINTF Args;				\
759706f2543Smrg} while (YYID (0))
760706f2543Smrg
761706f2543Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
762706f2543Smrgdo {									  \
763706f2543Smrg  if (yydebug)								  \
764706f2543Smrg    {									  \
765706f2543Smrg      YYFPRINTF (stderr, "%s ", Title);					  \
766706f2543Smrg      yy_symbol_print (stderr,						  \
767706f2543Smrg		  Type, Value); \
768706f2543Smrg      YYFPRINTF (stderr, "\n");						  \
769706f2543Smrg    }									  \
770706f2543Smrg} while (YYID (0))
771706f2543Smrg
772706f2543Smrg
773706f2543Smrg/*--------------------------------.
774706f2543Smrg| Print this symbol on YYOUTPUT.  |
775706f2543Smrg`--------------------------------*/
776706f2543Smrg
777706f2543Smrg/*ARGSUSED*/
778706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
779706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
780706f2543Smrgstatic void
781706f2543Smrgyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
782706f2543Smrg#else
783706f2543Smrgstatic void
784706f2543Smrgyy_symbol_value_print (yyoutput, yytype, yyvaluep)
785706f2543Smrg    FILE *yyoutput;
786706f2543Smrg    int yytype;
787706f2543Smrg    YYSTYPE const * const yyvaluep;
788706f2543Smrg#endif
789706f2543Smrg{
790706f2543Smrg  if (!yyvaluep)
791706f2543Smrg    return;
792706f2543Smrg# ifdef YYPRINT
793706f2543Smrg  if (yytype < YYNTOKENS)
794706f2543Smrg    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
795706f2543Smrg# else
796706f2543Smrg  YYUSE (yyoutput);
797706f2543Smrg# endif
798706f2543Smrg  switch (yytype)
799706f2543Smrg    {
800706f2543Smrg      default:
801706f2543Smrg	break;
802706f2543Smrg    }
803706f2543Smrg}
804706f2543Smrg
805706f2543Smrg
806706f2543Smrg/*--------------------------------.
807706f2543Smrg| Print this symbol on YYOUTPUT.  |
808706f2543Smrg`--------------------------------*/
809706f2543Smrg
810706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
811706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
812706f2543Smrgstatic void
813706f2543Smrgyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
814706f2543Smrg#else
815706f2543Smrgstatic void
816706f2543Smrgyy_symbol_print (yyoutput, yytype, yyvaluep)
817706f2543Smrg    FILE *yyoutput;
818706f2543Smrg    int yytype;
819706f2543Smrg    YYSTYPE const * const yyvaluep;
820706f2543Smrg#endif
821706f2543Smrg{
822706f2543Smrg  if (yytype < YYNTOKENS)
823706f2543Smrg    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
824706f2543Smrg  else
825706f2543Smrg    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
826706f2543Smrg
827706f2543Smrg  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
828706f2543Smrg  YYFPRINTF (yyoutput, ")");
829706f2543Smrg}
830706f2543Smrg
831706f2543Smrg/*------------------------------------------------------------------.
832706f2543Smrg| yy_stack_print -- Print the state stack from its BOTTOM up to its |
833706f2543Smrg| TOP (included).                                                   |
834706f2543Smrg`------------------------------------------------------------------*/
835706f2543Smrg
836706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
837706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
838706f2543Smrgstatic void
839706f2543Smrgyy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
840706f2543Smrg#else
841706f2543Smrgstatic void
842706f2543Smrgyy_stack_print (yybottom, yytop)
843706f2543Smrg    yytype_int16 *yybottom;
844706f2543Smrg    yytype_int16 *yytop;
845706f2543Smrg#endif
846706f2543Smrg{
847706f2543Smrg  YYFPRINTF (stderr, "Stack now");
848706f2543Smrg  for (; yybottom <= yytop; yybottom++)
849706f2543Smrg    {
850706f2543Smrg      int yybot = *yybottom;
851706f2543Smrg      YYFPRINTF (stderr, " %d", yybot);
852706f2543Smrg    }
853706f2543Smrg  YYFPRINTF (stderr, "\n");
854706f2543Smrg}
855706f2543Smrg
856706f2543Smrg# define YY_STACK_PRINT(Bottom, Top)				\
857706f2543Smrgdo {								\
858706f2543Smrg  if (yydebug)							\
859706f2543Smrg    yy_stack_print ((Bottom), (Top));				\
860706f2543Smrg} while (YYID (0))
861706f2543Smrg
862706f2543Smrg
863706f2543Smrg/*------------------------------------------------.
864706f2543Smrg| Report that the YYRULE is going to be reduced.  |
865706f2543Smrg`------------------------------------------------*/
866706f2543Smrg
867706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
868706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
869706f2543Smrgstatic void
870706f2543Smrgyy_reduce_print (YYSTYPE *yyvsp, int yyrule)
871706f2543Smrg#else
872706f2543Smrgstatic void
873706f2543Smrgyy_reduce_print (yyvsp, yyrule)
874706f2543Smrg    YYSTYPE *yyvsp;
875706f2543Smrg    int yyrule;
876706f2543Smrg#endif
877706f2543Smrg{
878706f2543Smrg  int yynrhs = yyr2[yyrule];
879706f2543Smrg  int yyi;
880706f2543Smrg  unsigned long int yylno = yyrline[yyrule];
881706f2543Smrg  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
882706f2543Smrg	     yyrule - 1, yylno);
883706f2543Smrg  /* The symbols being reduced.  */
884706f2543Smrg  for (yyi = 0; yyi < yynrhs; yyi++)
885706f2543Smrg    {
886706f2543Smrg      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
887706f2543Smrg      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
888706f2543Smrg		       &(yyvsp[(yyi + 1) - (yynrhs)])
889706f2543Smrg		       		       );
890706f2543Smrg      YYFPRINTF (stderr, "\n");
891706f2543Smrg    }
892706f2543Smrg}
893706f2543Smrg
894706f2543Smrg# define YY_REDUCE_PRINT(Rule)		\
895706f2543Smrgdo {					\
896706f2543Smrg  if (yydebug)				\
897706f2543Smrg    yy_reduce_print (yyvsp, Rule); \
898706f2543Smrg} while (YYID (0))
899706f2543Smrg
900706f2543Smrg/* Nonzero means print parse trace.  It is left uninitialized so that
901706f2543Smrg   multiple parsers can coexist.  */
902706f2543Smrgint yydebug;
903706f2543Smrg#else /* !YYDEBUG */
904706f2543Smrg# define YYDPRINTF(Args)
905706f2543Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
906706f2543Smrg# define YY_STACK_PRINT(Bottom, Top)
907706f2543Smrg# define YY_REDUCE_PRINT(Rule)
908706f2543Smrg#endif /* !YYDEBUG */
909706f2543Smrg
910706f2543Smrg
911706f2543Smrg/* YYINITDEPTH -- initial size of the parser's stacks.  */
912706f2543Smrg#ifndef	YYINITDEPTH
913706f2543Smrg# define YYINITDEPTH 200
914706f2543Smrg#endif
915706f2543Smrg
916706f2543Smrg/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
917706f2543Smrg   if the built-in stack extension method is used).
918706f2543Smrg
919706f2543Smrg   Do not make this value too large; the results are undefined if
920706f2543Smrg   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
921706f2543Smrg   evaluated with infinite-precision integer arithmetic.  */
922706f2543Smrg
923706f2543Smrg#ifndef YYMAXDEPTH
924706f2543Smrg# define YYMAXDEPTH 10000
925706f2543Smrg#endif
926706f2543Smrg
927706f2543Smrg
928706f2543Smrg
929706f2543Smrg#if YYERROR_VERBOSE
930706f2543Smrg
931706f2543Smrg# ifndef yystrlen
932706f2543Smrg#  if defined __GLIBC__ && defined _STRING_H
933706f2543Smrg#   define yystrlen strlen
934706f2543Smrg#  else
935706f2543Smrg/* Return the length of YYSTR.  */
936706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
937706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
938706f2543Smrgstatic YYSIZE_T
939706f2543Smrgyystrlen (const char *yystr)
940706f2543Smrg#else
941706f2543Smrgstatic YYSIZE_T
942706f2543Smrgyystrlen (yystr)
943706f2543Smrg    const char *yystr;
944706f2543Smrg#endif
945706f2543Smrg{
946706f2543Smrg  YYSIZE_T yylen;
947706f2543Smrg  for (yylen = 0; yystr[yylen]; yylen++)
948706f2543Smrg    continue;
949706f2543Smrg  return yylen;
950706f2543Smrg}
951706f2543Smrg#  endif
952706f2543Smrg# endif
953706f2543Smrg
954706f2543Smrg# ifndef yystpcpy
955706f2543Smrg#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
956706f2543Smrg#   define yystpcpy stpcpy
957706f2543Smrg#  else
958706f2543Smrg/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
959706f2543Smrg   YYDEST.  */
960706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
961706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
962706f2543Smrgstatic char *
963706f2543Smrgyystpcpy (char *yydest, const char *yysrc)
964706f2543Smrg#else
965706f2543Smrgstatic char *
966706f2543Smrgyystpcpy (yydest, yysrc)
967706f2543Smrg    char *yydest;
968706f2543Smrg    const char *yysrc;
969706f2543Smrg#endif
970706f2543Smrg{
971706f2543Smrg  char *yyd = yydest;
972706f2543Smrg  const char *yys = yysrc;
973706f2543Smrg
974706f2543Smrg  while ((*yyd++ = *yys++) != '\0')
975706f2543Smrg    continue;
976706f2543Smrg
977706f2543Smrg  return yyd - 1;
978706f2543Smrg}
979706f2543Smrg#  endif
980706f2543Smrg# endif
981706f2543Smrg
982706f2543Smrg# ifndef yytnamerr
983706f2543Smrg/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
984706f2543Smrg   quotes and backslashes, so that it's suitable for yyerror.  The
985706f2543Smrg   heuristic is that double-quoting is unnecessary unless the string
986706f2543Smrg   contains an apostrophe, a comma, or backslash (other than
987706f2543Smrg   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
988706f2543Smrg   null, do not copy; instead, return the length of what the result
989706f2543Smrg   would have been.  */
990706f2543Smrgstatic YYSIZE_T
991706f2543Smrgyytnamerr (char *yyres, const char *yystr)
992706f2543Smrg{
993706f2543Smrg  if (*yystr == '"')
994706f2543Smrg    {
995706f2543Smrg      YYSIZE_T yyn = 0;
996706f2543Smrg      char const *yyp = yystr;
997706f2543Smrg
998706f2543Smrg      for (;;)
999706f2543Smrg	switch (*++yyp)
1000706f2543Smrg	  {
1001706f2543Smrg	  case '\'':
1002706f2543Smrg	  case ',':
1003706f2543Smrg	    goto do_not_strip_quotes;
1004706f2543Smrg
1005706f2543Smrg	  case '\\':
1006706f2543Smrg	    if (*++yyp != '\\')
1007706f2543Smrg	      goto do_not_strip_quotes;
1008706f2543Smrg	    /* Fall through.  */
1009706f2543Smrg	  default:
1010706f2543Smrg	    if (yyres)
1011706f2543Smrg	      yyres[yyn] = *yyp;
1012706f2543Smrg	    yyn++;
1013706f2543Smrg	    break;
1014706f2543Smrg
1015706f2543Smrg	  case '"':
1016706f2543Smrg	    if (yyres)
1017706f2543Smrg	      yyres[yyn] = '\0';
1018706f2543Smrg	    return yyn;
1019706f2543Smrg	  }
1020706f2543Smrg    do_not_strip_quotes: ;
1021706f2543Smrg    }
1022706f2543Smrg
1023706f2543Smrg  if (! yyres)
1024706f2543Smrg    return yystrlen (yystr);
1025706f2543Smrg
1026706f2543Smrg  return yystpcpy (yyres, yystr) - yyres;
1027706f2543Smrg}
1028706f2543Smrg# endif
1029706f2543Smrg
1030706f2543Smrg/* Copy into YYRESULT an error message about the unexpected token
1031706f2543Smrg   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1032706f2543Smrg   including the terminating null byte.  If YYRESULT is null, do not
1033706f2543Smrg   copy anything; just return the number of bytes that would be
1034706f2543Smrg   copied.  As a special case, return 0 if an ordinary "syntax error"
1035706f2543Smrg   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1036706f2543Smrg   size calculation.  */
1037706f2543Smrgstatic YYSIZE_T
1038706f2543Smrgyysyntax_error (char *yyresult, int yystate, int yychar)
1039706f2543Smrg{
1040706f2543Smrg  int yyn = yypact[yystate];
1041706f2543Smrg
1042706f2543Smrg  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1043706f2543Smrg    return 0;
1044706f2543Smrg  else
1045706f2543Smrg    {
1046706f2543Smrg      int yytype = YYTRANSLATE (yychar);
1047706f2543Smrg      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1048706f2543Smrg      YYSIZE_T yysize = yysize0;
1049706f2543Smrg      YYSIZE_T yysize1;
1050706f2543Smrg      int yysize_overflow = 0;
1051706f2543Smrg      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1052706f2543Smrg      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1053706f2543Smrg      int yyx;
1054706f2543Smrg
1055706f2543Smrg# if 0
1056706f2543Smrg      /* This is so xgettext sees the translatable formats that are
1057706f2543Smrg	 constructed on the fly.  */
1058706f2543Smrg      YY_("syntax error, unexpected %s");
1059706f2543Smrg      YY_("syntax error, unexpected %s, expecting %s");
1060706f2543Smrg      YY_("syntax error, unexpected %s, expecting %s or %s");
1061706f2543Smrg      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1062706f2543Smrg      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1063706f2543Smrg# endif
1064706f2543Smrg      char *yyfmt;
1065706f2543Smrg      char const *yyf;
1066706f2543Smrg      static char const yyunexpected[] = "syntax error, unexpected %s";
1067706f2543Smrg      static char const yyexpecting[] = ", expecting %s";
1068706f2543Smrg      static char const yyor[] = " or %s";
1069706f2543Smrg      char yyformat[sizeof yyunexpected
1070706f2543Smrg		    + sizeof yyexpecting - 1
1071706f2543Smrg		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1072706f2543Smrg		       * (sizeof yyor - 1))];
1073706f2543Smrg      char const *yyprefix = yyexpecting;
1074706f2543Smrg
1075706f2543Smrg      /* Start YYX at -YYN if negative to avoid negative indexes in
1076706f2543Smrg	 YYCHECK.  */
1077706f2543Smrg      int yyxbegin = yyn < 0 ? -yyn : 0;
1078706f2543Smrg
1079706f2543Smrg      /* Stay within bounds of both yycheck and yytname.  */
1080706f2543Smrg      int yychecklim = YYLAST - yyn + 1;
1081706f2543Smrg      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1082706f2543Smrg      int yycount = 1;
1083706f2543Smrg
1084706f2543Smrg      yyarg[0] = yytname[yytype];
1085706f2543Smrg      yyfmt = yystpcpy (yyformat, yyunexpected);
1086706f2543Smrg
1087706f2543Smrg      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1088706f2543Smrg	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1089706f2543Smrg	  {
1090706f2543Smrg	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1091706f2543Smrg	      {
1092706f2543Smrg		yycount = 1;
1093706f2543Smrg		yysize = yysize0;
1094706f2543Smrg		yyformat[sizeof yyunexpected - 1] = '\0';
1095706f2543Smrg		break;
1096706f2543Smrg	      }
1097706f2543Smrg	    yyarg[yycount++] = yytname[yyx];
1098706f2543Smrg	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1099706f2543Smrg	    yysize_overflow |= (yysize1 < yysize);
1100706f2543Smrg	    yysize = yysize1;
1101706f2543Smrg	    yyfmt = yystpcpy (yyfmt, yyprefix);
1102706f2543Smrg	    yyprefix = yyor;
1103706f2543Smrg	  }
1104706f2543Smrg
1105706f2543Smrg      yyf = YY_(yyformat);
1106706f2543Smrg      yysize1 = yysize + yystrlen (yyf);
1107706f2543Smrg      yysize_overflow |= (yysize1 < yysize);
1108706f2543Smrg      yysize = yysize1;
1109706f2543Smrg
1110706f2543Smrg      if (yysize_overflow)
1111706f2543Smrg	return YYSIZE_MAXIMUM;
1112706f2543Smrg
1113706f2543Smrg      if (yyresult)
1114706f2543Smrg	{
1115706f2543Smrg	  /* Avoid sprintf, as that infringes on the user's name space.
1116706f2543Smrg	     Don't have undefined behavior even if the translation
1117706f2543Smrg	     produced a string with the wrong number of "%s"s.  */
1118706f2543Smrg	  char *yyp = yyresult;
1119706f2543Smrg	  int yyi = 0;
1120706f2543Smrg	  while ((*yyp = *yyf) != '\0')
1121706f2543Smrg	    {
1122706f2543Smrg	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1123706f2543Smrg		{
1124706f2543Smrg		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1125706f2543Smrg		  yyf += 2;
1126706f2543Smrg		}
1127706f2543Smrg	      else
1128706f2543Smrg		{
1129706f2543Smrg		  yyp++;
1130706f2543Smrg		  yyf++;
1131706f2543Smrg		}
1132706f2543Smrg	    }
1133706f2543Smrg	}
1134706f2543Smrg      return yysize;
1135706f2543Smrg    }
1136706f2543Smrg}
1137706f2543Smrg#endif /* YYERROR_VERBOSE */
1138706f2543Smrg
1139706f2543Smrg
1140706f2543Smrg/*-----------------------------------------------.
1141706f2543Smrg| Release the memory associated to this symbol.  |
1142706f2543Smrg`-----------------------------------------------*/
1143706f2543Smrg
1144706f2543Smrg/*ARGSUSED*/
1145706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1146706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
1147706f2543Smrgstatic void
1148706f2543Smrgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1149706f2543Smrg#else
1150706f2543Smrgstatic void
1151706f2543Smrgyydestruct (yymsg, yytype, yyvaluep)
1152706f2543Smrg    const char *yymsg;
1153706f2543Smrg    int yytype;
1154706f2543Smrg    YYSTYPE *yyvaluep;
1155706f2543Smrg#endif
1156706f2543Smrg{
1157706f2543Smrg  YYUSE (yyvaluep);
1158706f2543Smrg
1159706f2543Smrg  if (!yymsg)
1160706f2543Smrg    yymsg = "Deleting";
1161706f2543Smrg  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1162706f2543Smrg
1163706f2543Smrg  switch (yytype)
1164706f2543Smrg    {
1165706f2543Smrg
1166706f2543Smrg      default:
1167706f2543Smrg	break;
1168706f2543Smrg    }
1169706f2543Smrg}
1170706f2543Smrg
1171706f2543Smrg/* Prevent warnings from -Wmissing-prototypes.  */
1172706f2543Smrg#ifdef YYPARSE_PARAM
1173706f2543Smrg#if defined __STDC__ || defined __cplusplus
1174706f2543Smrgint yyparse (void *YYPARSE_PARAM);
1175706f2543Smrg#else
1176706f2543Smrgint yyparse ();
1177706f2543Smrg#endif
1178706f2543Smrg#else /* ! YYPARSE_PARAM */
1179706f2543Smrg#if defined __STDC__ || defined __cplusplus
1180706f2543Smrgint yyparse (void);
1181706f2543Smrg#else
1182706f2543Smrgint yyparse ();
1183706f2543Smrg#endif
1184706f2543Smrg#endif /* ! YYPARSE_PARAM */
1185706f2543Smrg
1186706f2543Smrg
1187706f2543Smrg/* The lookahead symbol.  */
1188706f2543Smrgint yychar;
1189706f2543Smrg
1190706f2543Smrg/* The semantic value of the lookahead symbol.  */
1191706f2543SmrgYYSTYPE yylval;
1192706f2543Smrg
1193706f2543Smrg/* Number of syntax errors so far.  */
1194706f2543Smrgint yynerrs;
1195706f2543Smrg
1196706f2543Smrg
1197706f2543Smrg
1198706f2543Smrg/*-------------------------.
1199706f2543Smrg| yyparse or yypush_parse.  |
1200706f2543Smrg`-------------------------*/
1201706f2543Smrg
1202706f2543Smrg#ifdef YYPARSE_PARAM
1203706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1204706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
1205706f2543Smrgint
1206706f2543Smrgyyparse (void *YYPARSE_PARAM)
1207706f2543Smrg#else
1208706f2543Smrgint
1209706f2543Smrgyyparse (YYPARSE_PARAM)
1210706f2543Smrg    void *YYPARSE_PARAM;
1211706f2543Smrg#endif
1212706f2543Smrg#else /* ! YYPARSE_PARAM */
1213706f2543Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1214706f2543Smrg     || defined __cplusplus || defined _MSC_VER)
1215706f2543Smrgint
1216706f2543Smrgyyparse (void)
1217706f2543Smrg#else
1218706f2543Smrgint
1219706f2543Smrgyyparse ()
1220706f2543Smrg
1221706f2543Smrg#endif
1222706f2543Smrg#endif
1223706f2543Smrg{
1224706f2543Smrg
1225706f2543Smrg
1226706f2543Smrg    int yystate;
1227706f2543Smrg    /* Number of tokens to shift before error messages enabled.  */
1228706f2543Smrg    int yyerrstatus;
1229706f2543Smrg
1230706f2543Smrg    /* The stacks and their tools:
1231706f2543Smrg       `yyss': related to states.
1232706f2543Smrg       `yyvs': related to semantic values.
1233706f2543Smrg
1234706f2543Smrg       Refer to the stacks thru separate pointers, to allow yyoverflow
1235706f2543Smrg       to reallocate them elsewhere.  */
1236706f2543Smrg
1237706f2543Smrg    /* The state stack.  */
1238706f2543Smrg    yytype_int16 yyssa[YYINITDEPTH];
1239706f2543Smrg    yytype_int16 *yyss;
1240706f2543Smrg    yytype_int16 *yyssp;
1241706f2543Smrg
1242706f2543Smrg    /* The semantic value stack.  */
1243706f2543Smrg    YYSTYPE yyvsa[YYINITDEPTH];
1244706f2543Smrg    YYSTYPE *yyvs;
1245706f2543Smrg    YYSTYPE *yyvsp;
1246706f2543Smrg
1247706f2543Smrg    YYSIZE_T yystacksize;
1248706f2543Smrg
1249706f2543Smrg  int yyn;
1250706f2543Smrg  int yyresult;
1251706f2543Smrg  /* Lookahead token as an internal (translated) token number.  */
1252706f2543Smrg  int yytoken;
1253706f2543Smrg  /* The variables used to return semantic value and location from the
1254706f2543Smrg     action routines.  */
1255706f2543Smrg  YYSTYPE yyval;
1256706f2543Smrg
1257706f2543Smrg#if YYERROR_VERBOSE
1258706f2543Smrg  /* Buffer for error messages, and its allocated size.  */
1259706f2543Smrg  char yymsgbuf[128];
1260706f2543Smrg  char *yymsg = yymsgbuf;
1261706f2543Smrg  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1262706f2543Smrg#endif
1263706f2543Smrg
1264706f2543Smrg#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1265706f2543Smrg
1266706f2543Smrg  /* The number of symbols on the RHS of the reduced rule.
1267706f2543Smrg     Keep to zero when no symbol should be popped.  */
1268706f2543Smrg  int yylen = 0;
1269706f2543Smrg
1270706f2543Smrg  yytoken = 0;
1271706f2543Smrg  yyss = yyssa;
1272706f2543Smrg  yyvs = yyvsa;
1273706f2543Smrg  yystacksize = YYINITDEPTH;
1274706f2543Smrg
1275706f2543Smrg  YYDPRINTF ((stderr, "Starting parse\n"));
1276706f2543Smrg
1277706f2543Smrg  yystate = 0;
1278706f2543Smrg  yyerrstatus = 0;
1279706f2543Smrg  yynerrs = 0;
1280706f2543Smrg  yychar = YYEMPTY; /* Cause a token to be read.  */
1281706f2543Smrg
1282706f2543Smrg  /* Initialize stack pointers.
1283706f2543Smrg     Waste one element of value and location stack
1284706f2543Smrg     so that they stay on the same level as the state stack.
1285706f2543Smrg     The wasted elements are never initialized.  */
1286706f2543Smrg  yyssp = yyss;
1287706f2543Smrg  yyvsp = yyvs;
1288706f2543Smrg
1289706f2543Smrg  goto yysetstate;
1290706f2543Smrg
1291706f2543Smrg/*------------------------------------------------------------.
1292706f2543Smrg| yynewstate -- Push a new state, which is found in yystate.  |
1293706f2543Smrg`------------------------------------------------------------*/
1294706f2543Smrg yynewstate:
1295706f2543Smrg  /* In all cases, when you get here, the value and location stacks
1296706f2543Smrg     have just been pushed.  So pushing a state here evens the stacks.  */
1297706f2543Smrg  yyssp++;
1298706f2543Smrg
1299706f2543Smrg yysetstate:
1300706f2543Smrg  *yyssp = yystate;
1301706f2543Smrg
1302706f2543Smrg  if (yyss + yystacksize - 1 <= yyssp)
1303706f2543Smrg    {
1304706f2543Smrg      /* Get the current used size of the three stacks, in elements.  */
1305706f2543Smrg      YYSIZE_T yysize = yyssp - yyss + 1;
1306706f2543Smrg
1307706f2543Smrg#ifdef yyoverflow
1308706f2543Smrg      {
1309706f2543Smrg	/* Give user a chance to reallocate the stack.  Use copies of
1310706f2543Smrg	   these so that the &'s don't force the real ones into
1311706f2543Smrg	   memory.  */
1312706f2543Smrg	YYSTYPE *yyvs1 = yyvs;
1313706f2543Smrg	yytype_int16 *yyss1 = yyss;
1314706f2543Smrg
1315706f2543Smrg	/* Each stack pointer address is followed by the size of the
1316706f2543Smrg	   data in use in that stack, in bytes.  This used to be a
1317706f2543Smrg	   conditional around just the two extra args, but that might
1318706f2543Smrg	   be undefined if yyoverflow is a macro.  */
1319706f2543Smrg	yyoverflow (YY_("memory exhausted"),
1320706f2543Smrg		    &yyss1, yysize * sizeof (*yyssp),
1321706f2543Smrg		    &yyvs1, yysize * sizeof (*yyvsp),
1322706f2543Smrg		    &yystacksize);
1323706f2543Smrg
1324706f2543Smrg	yyss = yyss1;
1325706f2543Smrg	yyvs = yyvs1;
1326706f2543Smrg      }
1327706f2543Smrg#else /* no yyoverflow */
1328706f2543Smrg# ifndef YYSTACK_RELOCATE
1329706f2543Smrg      goto yyexhaustedlab;
1330706f2543Smrg# else
1331706f2543Smrg      /* Extend the stack our own way.  */
1332706f2543Smrg      if (YYMAXDEPTH <= yystacksize)
1333706f2543Smrg	goto yyexhaustedlab;
1334706f2543Smrg      yystacksize *= 2;
1335706f2543Smrg      if (YYMAXDEPTH < yystacksize)
1336706f2543Smrg	yystacksize = YYMAXDEPTH;
1337706f2543Smrg
1338706f2543Smrg      {
1339706f2543Smrg	yytype_int16 *yyss1 = yyss;
1340706f2543Smrg	union yyalloc *yyptr =
1341706f2543Smrg	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1342706f2543Smrg	if (! yyptr)
1343706f2543Smrg	  goto yyexhaustedlab;
1344706f2543Smrg	YYSTACK_RELOCATE (yyss_alloc, yyss);
1345706f2543Smrg	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1346706f2543Smrg#  undef YYSTACK_RELOCATE
1347706f2543Smrg	if (yyss1 != yyssa)
1348706f2543Smrg	  YYSTACK_FREE (yyss1);
1349706f2543Smrg      }
1350706f2543Smrg# endif
1351706f2543Smrg#endif /* no yyoverflow */
1352706f2543Smrg
1353706f2543Smrg      yyssp = yyss + yysize - 1;
1354706f2543Smrg      yyvsp = yyvs + yysize - 1;
1355706f2543Smrg
1356706f2543Smrg      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1357706f2543Smrg		  (unsigned long int) yystacksize));
1358706f2543Smrg
1359706f2543Smrg      if (yyss + yystacksize - 1 <= yyssp)
1360706f2543Smrg	YYABORT;
1361706f2543Smrg    }
1362706f2543Smrg
1363706f2543Smrg  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1364706f2543Smrg
1365706f2543Smrg  if (yystate == YYFINAL)
1366706f2543Smrg    YYACCEPT;
1367706f2543Smrg
1368706f2543Smrg  goto yybackup;
1369706f2543Smrg
1370706f2543Smrg/*-----------.
1371706f2543Smrg| yybackup.  |
1372706f2543Smrg`-----------*/
1373706f2543Smrgyybackup:
1374706f2543Smrg
1375706f2543Smrg  /* Do appropriate processing given the current state.  Read a
1376706f2543Smrg     lookahead token if we need one and don't already have one.  */
1377706f2543Smrg
1378706f2543Smrg  /* First try to decide what to do without reference to lookahead token.  */
1379706f2543Smrg  yyn = yypact[yystate];
1380706f2543Smrg  if (yyn == YYPACT_NINF)
1381706f2543Smrg    goto yydefault;
1382706f2543Smrg
1383706f2543Smrg  /* Not known => get a lookahead token if don't already have one.  */
1384706f2543Smrg
1385706f2543Smrg  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1386706f2543Smrg  if (yychar == YYEMPTY)
1387706f2543Smrg    {
1388706f2543Smrg      YYDPRINTF ((stderr, "Reading a token: "));
1389706f2543Smrg      yychar = YYLEX;
1390706f2543Smrg    }
1391706f2543Smrg
1392706f2543Smrg  if (yychar <= YYEOF)
1393706f2543Smrg    {
1394706f2543Smrg      yychar = yytoken = YYEOF;
1395706f2543Smrg      YYDPRINTF ((stderr, "Now at end of input.\n"));
1396706f2543Smrg    }
1397706f2543Smrg  else
1398706f2543Smrg    {
1399706f2543Smrg      yytoken = YYTRANSLATE (yychar);
1400706f2543Smrg      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1401706f2543Smrg    }
1402706f2543Smrg
1403706f2543Smrg  /* If the proper action on seeing token YYTOKEN is to reduce or to
1404706f2543Smrg     detect an error, take that action.  */
1405706f2543Smrg  yyn += yytoken;
1406706f2543Smrg  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1407706f2543Smrg    goto yydefault;
1408706f2543Smrg  yyn = yytable[yyn];
1409706f2543Smrg  if (yyn <= 0)
1410706f2543Smrg    {
1411706f2543Smrg      if (yyn == 0 || yyn == YYTABLE_NINF)
1412706f2543Smrg	goto yyerrlab;
1413706f2543Smrg      yyn = -yyn;
1414706f2543Smrg      goto yyreduce;
1415706f2543Smrg    }
1416706f2543Smrg
1417706f2543Smrg  /* Count tokens shifted since error; after three, turn off error
1418706f2543Smrg     status.  */
1419706f2543Smrg  if (yyerrstatus)
1420706f2543Smrg    yyerrstatus--;
1421706f2543Smrg
1422706f2543Smrg  /* Shift the lookahead token.  */
1423706f2543Smrg  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1424706f2543Smrg
1425706f2543Smrg  /* Discard the shifted token.  */
1426706f2543Smrg  yychar = YYEMPTY;
1427706f2543Smrg
1428706f2543Smrg  yystate = yyn;
1429706f2543Smrg  *++yyvsp = yylval;
1430706f2543Smrg
1431706f2543Smrg  goto yynewstate;
1432706f2543Smrg
1433706f2543Smrg
1434706f2543Smrg/*-----------------------------------------------------------.
1435706f2543Smrg| yydefault -- do the default action for the current state.  |
1436706f2543Smrg`-----------------------------------------------------------*/
1437706f2543Smrgyydefault:
1438706f2543Smrg  yyn = yydefact[yystate];
1439706f2543Smrg  if (yyn == 0)
1440706f2543Smrg    goto yyerrlab;
1441706f2543Smrg  goto yyreduce;
1442706f2543Smrg
1443706f2543Smrg
1444706f2543Smrg/*-----------------------------.
1445706f2543Smrg| yyreduce -- Do a reduction.  |
1446706f2543Smrg`-----------------------------*/
1447706f2543Smrgyyreduce:
1448706f2543Smrg  /* yyn is the number of a rule to reduce with.  */
1449706f2543Smrg  yylen = yyr2[yyn];
1450706f2543Smrg
1451706f2543Smrg  /* If YYLEN is nonzero, implement the default value of the action:
1452706f2543Smrg     `$$ = $1'.
1453706f2543Smrg
1454706f2543Smrg     Otherwise, the following line sets YYVAL to garbage.
1455706f2543Smrg     This behavior is undocumented and Bison
1456706f2543Smrg     users should not rely upon it.  Assigning to YYVAL
1457706f2543Smrg     unconditionally makes the parser a bit smaller, and it avoids a
1458706f2543Smrg     GCC warning that YYVAL may be used uninitialized.  */
1459706f2543Smrg  yyval = yyvsp[1-yylen];
1460706f2543Smrg
1461706f2543Smrg
1462706f2543Smrg  YY_REDUCE_PRINT (yyn);
1463706f2543Smrg  switch (yyn)
1464706f2543Smrg    {
1465706f2543Smrg        case 2:
1466706f2543Smrg
1467706f2543Smrg/* Line 1464 of yacc.c  */
1468706f2543Smrg#line 95 "parser.y"
1469706f2543Smrg    { dmxConfigEntry = (yyvsp[(1) - (1)].entry); }
1470706f2543Smrg    break;
1471706f2543Smrg
1472706f2543Smrg  case 4:
1473706f2543Smrg
1474706f2543Smrg/* Line 1464 of yacc.c  */
1475706f2543Smrg#line 99 "parser.y"
1476706f2543Smrg    { APPEND(DMXConfigEntryPtr,(yyvsp[(1) - (2)].entry),(yyvsp[(2) - (2)].entry)); (yyval.entry) = (yyvsp[(1) - (2)].entry); }
1477706f2543Smrg    break;
1478706f2543Smrg
1479706f2543Smrg  case 5:
1480706f2543Smrg
1481706f2543Smrg/* Line 1464 of yacc.c  */
1482706f2543Smrg#line 102 "parser.y"
1483706f2543Smrg    { (yyval.entry) = dmxConfigEntryVirtual((yyvsp[(1) - (1)].virtual)); }
1484706f2543Smrg    break;
1485706f2543Smrg
1486706f2543Smrg  case 6:
1487706f2543Smrg
1488706f2543Smrg/* Line 1464 of yacc.c  */
1489706f2543Smrg#line 103 "parser.y"
1490706f2543Smrg    { (yyval.entry) = dmxConfigEntryComment((yyvsp[(1) - (1)].comment)); }
1491706f2543Smrg    break;
1492706f2543Smrg
1493706f2543Smrg  case 7:
1494706f2543Smrg
1495706f2543Smrg/* Line 1464 of yacc.c  */
1496706f2543Smrg#line 107 "parser.y"
1497706f2543Smrg    { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[(1) - (4)].token), NULL, NULL, (yyvsp[(2) - (4)].token), (yyvsp[(3) - (4)].subentry), (yyvsp[(4) - (4)].token)); }
1498706f2543Smrg    break;
1499706f2543Smrg
1500706f2543Smrg  case 8:
1501706f2543Smrg
1502706f2543Smrg/* Line 1464 of yacc.c  */
1503706f2543Smrg#line 109 "parser.y"
1504706f2543Smrg    { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[(1) - (5)].token), NULL, (yyvsp[(2) - (5)].pair), (yyvsp[(3) - (5)].token), (yyvsp[(4) - (5)].subentry), (yyvsp[(5) - (5)].token)); }
1505706f2543Smrg    break;
1506706f2543Smrg
1507706f2543Smrg  case 9:
1508706f2543Smrg
1509706f2543Smrg/* Line 1464 of yacc.c  */
1510706f2543Smrg#line 111 "parser.y"
1511706f2543Smrg    { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[(1) - (5)].token), (yyvsp[(2) - (5)].string), NULL, (yyvsp[(3) - (5)].token), (yyvsp[(4) - (5)].subentry), (yyvsp[(5) - (5)].token)); }
1512706f2543Smrg    break;
1513706f2543Smrg
1514706f2543Smrg  case 10:
1515706f2543Smrg
1516706f2543Smrg/* Line 1464 of yacc.c  */
1517706f2543Smrg#line 113 "parser.y"
1518706f2543Smrg    { (yyval.virtual) = dmxConfigCreateVirtual((yyvsp[(1) - (6)].token), (yyvsp[(2) - (6)].string), (yyvsp[(3) - (6)].pair), (yyvsp[(4) - (6)].token), (yyvsp[(5) - (6)].subentry), (yyvsp[(6) - (6)].token) ); }
1519706f2543Smrg    break;
1520706f2543Smrg
1521706f2543Smrg  case 12:
1522706f2543Smrg
1523706f2543Smrg/* Line 1464 of yacc.c  */
1524706f2543Smrg#line 117 "parser.y"
1525706f2543Smrg    { APPEND(DMXConfigSubPtr,(yyvsp[(1) - (2)].subentry),(yyvsp[(2) - (2)].subentry)); (yyval.subentry) = (yyvsp[(1) - (2)].subentry); }
1526706f2543Smrg    break;
1527706f2543Smrg
1528706f2543Smrg  case 13:
1529706f2543Smrg
1530706f2543Smrg/* Line 1464 of yacc.c  */
1531706f2543Smrg#line 120 "parser.y"
1532706f2543Smrg    { (yyval.subentry) = dmxConfigSubComment((yyvsp[(1) - (1)].comment)); }
1533706f2543Smrg    break;
1534706f2543Smrg
1535706f2543Smrg  case 14:
1536706f2543Smrg
1537706f2543Smrg/* Line 1464 of yacc.c  */
1538706f2543Smrg#line 121 "parser.y"
1539706f2543Smrg    { (yyval.subentry) = dmxConfigSubDisplay((yyvsp[(1) - (1)].display)); }
1540706f2543Smrg    break;
1541706f2543Smrg
1542706f2543Smrg  case 15:
1543706f2543Smrg
1544706f2543Smrg/* Line 1464 of yacc.c  */
1545706f2543Smrg#line 122 "parser.y"
1546706f2543Smrg    { (yyval.subentry) = dmxConfigSubWall((yyvsp[(1) - (1)].wall)); }
1547706f2543Smrg    break;
1548706f2543Smrg
1549706f2543Smrg  case 16:
1550706f2543Smrg
1551706f2543Smrg/* Line 1464 of yacc.c  */
1552706f2543Smrg#line 123 "parser.y"
1553706f2543Smrg    { (yyval.subentry) = dmxConfigSubOption((yyvsp[(1) - (1)].option)); }
1554706f2543Smrg    break;
1555706f2543Smrg
1556706f2543Smrg  case 17:
1557706f2543Smrg
1558706f2543Smrg/* Line 1464 of yacc.c  */
1559706f2543Smrg#line 124 "parser.y"
1560706f2543Smrg    { (yyval.subentry) = dmxConfigSubParam((yyvsp[(1) - (1)].param)); }
1561706f2543Smrg    break;
1562706f2543Smrg
1563706f2543Smrg  case 18:
1564706f2543Smrg
1565706f2543Smrg/* Line 1464 of yacc.c  */
1566706f2543Smrg#line 128 "parser.y"
1567706f2543Smrg    { (yyval.option) = dmxConfigCreateOption((yyvsp[(1) - (3)].token), (yyvsp[(2) - (3)].string), (yyvsp[(3) - (3)].token)); }
1568706f2543Smrg    break;
1569706f2543Smrg
1570706f2543Smrg  case 19:
1571706f2543Smrg
1572706f2543Smrg/* Line 1464 of yacc.c  */
1573706f2543Smrg#line 132 "parser.y"
1574706f2543Smrg    { (yyval.param) = dmxConfigCreateParam((yyvsp[(1) - (3)].token), NULL, (yyvsp[(2) - (3)].string), NULL, (yyvsp[(3) - (3)].token)); }
1575706f2543Smrg    break;
1576706f2543Smrg
1577706f2543Smrg  case 20:
1578706f2543Smrg
1579706f2543Smrg/* Line 1464 of yacc.c  */
1580706f2543Smrg#line 134 "parser.y"
1581706f2543Smrg    { (yyval.param) = dmxConfigCreateParam((yyvsp[(1) - (4)].token), (yyvsp[(2) - (4)].token), NULL, (yyvsp[(4) - (4)].token), NULL);
1582706f2543Smrg               (yyval.param)->next = (yyvsp[(3) - (4)].param);
1583706f2543Smrg             }
1584706f2543Smrg    break;
1585706f2543Smrg
1586706f2543Smrg  case 22:
1587706f2543Smrg
1588706f2543Smrg/* Line 1464 of yacc.c  */
1589706f2543Smrg#line 140 "parser.y"
1590706f2543Smrg    { APPEND(DMXConfigParamPtr,(yyvsp[(1) - (2)].param),(yyvsp[(2) - (2)].param)); (yyval.param) = (yyvsp[(1) - (2)].param); }
1591706f2543Smrg    break;
1592706f2543Smrg
1593706f2543Smrg  case 23:
1594706f2543Smrg
1595706f2543Smrg/* Line 1464 of yacc.c  */
1596706f2543Smrg#line 144 "parser.y"
1597706f2543Smrg    { (yyval.param) = dmxConfigCreateParam(NULL, NULL, (yyvsp[(1) - (2)].string), NULL, (yyvsp[(2) - (2)].token)); }
1598706f2543Smrg    break;
1599706f2543Smrg
1600706f2543Smrg  case 24:
1601706f2543Smrg
1602706f2543Smrg/* Line 1464 of yacc.c  */
1603706f2543Smrg#line 148 "parser.y"
1604706f2543Smrg    { (yyval.pdim) = dmxConfigCreatePartDim((yyvsp[(1) - (2)].pair), (yyvsp[(2) - (2)].pair)); }
1605706f2543Smrg    break;
1606706f2543Smrg
1607706f2543Smrg  case 25:
1608706f2543Smrg
1609706f2543Smrg/* Line 1464 of yacc.c  */
1610706f2543Smrg#line 150 "parser.y"
1611706f2543Smrg    { (yyval.pdim) = dmxConfigCreatePartDim((yyvsp[(1) - (1)].pair), NULL); }
1612706f2543Smrg    break;
1613706f2543Smrg
1614706f2543Smrg  case 26:
1615706f2543Smrg
1616706f2543Smrg/* Line 1464 of yacc.c  */
1617706f2543Smrg#line 152 "parser.y"
1618706f2543Smrg    { (yyval.pdim) = dmxConfigCreatePartDim(NULL, (yyvsp[(1) - (1)].pair)); }
1619706f2543Smrg    break;
1620706f2543Smrg
1621706f2543Smrg  case 27:
1622706f2543Smrg
1623706f2543Smrg/* Line 1464 of yacc.c  */
1624706f2543Smrg#line 156 "parser.y"
1625706f2543Smrg    { (yyval.fdim) = dmxConfigCreateFullDim((yyvsp[(1) - (3)].pdim), (yyvsp[(3) - (3)].pdim)); }
1626706f2543Smrg    break;
1627706f2543Smrg
1628706f2543Smrg  case 28:
1629706f2543Smrg
1630706f2543Smrg/* Line 1464 of yacc.c  */
1631706f2543Smrg#line 158 "parser.y"
1632706f2543Smrg    { (yyval.fdim) = dmxConfigCreateFullDim(NULL, (yyvsp[(2) - (2)].pdim)); }
1633706f2543Smrg    break;
1634706f2543Smrg
1635706f2543Smrg  case 29:
1636706f2543Smrg
1637706f2543Smrg/* Line 1464 of yacc.c  */
1638706f2543Smrg#line 160 "parser.y"
1639706f2543Smrg    { (yyval.fdim) = dmxConfigCreateFullDim((yyvsp[(1) - (1)].pdim), NULL); }
1640706f2543Smrg    break;
1641706f2543Smrg
1642706f2543Smrg  case 30:
1643706f2543Smrg
1644706f2543Smrg/* Line 1464 of yacc.c  */
1645706f2543Smrg#line 164 "parser.y"
1646706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (5)].token), (yyvsp[(2) - (5)].string), (yyvsp[(3) - (5)].fdim), (yyvsp[(4) - (5)].pair), (yyvsp[(5) - (5)].token)); }
1647706f2543Smrg    break;
1648706f2543Smrg
1649706f2543Smrg  case 31:
1650706f2543Smrg
1651706f2543Smrg/* Line 1464 of yacc.c  */
1652706f2543Smrg#line 166 "parser.y"
1653706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (4)].token), NULL, (yyvsp[(2) - (4)].fdim), (yyvsp[(3) - (4)].pair), (yyvsp[(4) - (4)].token)); }
1654706f2543Smrg    break;
1655706f2543Smrg
1656706f2543Smrg  case 32:
1657706f2543Smrg
1658706f2543Smrg/* Line 1464 of yacc.c  */
1659706f2543Smrg#line 168 "parser.y"
1660706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (4)].token), (yyvsp[(2) - (4)].string), NULL, (yyvsp[(3) - (4)].pair), (yyvsp[(4) - (4)].token)); }
1661706f2543Smrg    break;
1662706f2543Smrg
1663706f2543Smrg  case 33:
1664706f2543Smrg
1665706f2543Smrg/* Line 1464 of yacc.c  */
1666706f2543Smrg#line 171 "parser.y"
1667706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (4)].token), (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].fdim), NULL, (yyvsp[(4) - (4)].token)); }
1668706f2543Smrg    break;
1669706f2543Smrg
1670706f2543Smrg  case 34:
1671706f2543Smrg
1672706f2543Smrg/* Line 1464 of yacc.c  */
1673706f2543Smrg#line 173 "parser.y"
1674706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (3)].token), NULL, (yyvsp[(2) - (3)].fdim), NULL, (yyvsp[(3) - (3)].token)); }
1675706f2543Smrg    break;
1676706f2543Smrg
1677706f2543Smrg  case 35:
1678706f2543Smrg
1679706f2543Smrg/* Line 1464 of yacc.c  */
1680706f2543Smrg#line 175 "parser.y"
1681706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (3)].token), (yyvsp[(2) - (3)].string), NULL, NULL, (yyvsp[(3) - (3)].token)); }
1682706f2543Smrg    break;
1683706f2543Smrg
1684706f2543Smrg  case 36:
1685706f2543Smrg
1686706f2543Smrg/* Line 1464 of yacc.c  */
1687706f2543Smrg#line 177 "parser.y"
1688706f2543Smrg    { (yyval.display) = dmxConfigCreateDisplay((yyvsp[(1) - (2)].token), NULL, NULL, NULL, (yyvsp[(2) - (2)].token)); }
1689706f2543Smrg    break;
1690706f2543Smrg
1691706f2543Smrg  case 37:
1692706f2543Smrg
1693706f2543Smrg/* Line 1464 of yacc.c  */
1694706f2543Smrg#line 181 "parser.y"
1695706f2543Smrg    { (yyval.wall) = dmxConfigCreateWall((yyvsp[(1) - (5)].token), (yyvsp[(2) - (5)].pair), (yyvsp[(3) - (5)].pair), (yyvsp[(4) - (5)].string), (yyvsp[(5) - (5)].token)); }
1696706f2543Smrg    break;
1697706f2543Smrg
1698706f2543Smrg  case 38:
1699706f2543Smrg
1700706f2543Smrg/* Line 1464 of yacc.c  */
1701706f2543Smrg#line 183 "parser.y"
1702706f2543Smrg    { (yyval.wall) = dmxConfigCreateWall((yyvsp[(1) - (4)].token), (yyvsp[(2) - (4)].pair), NULL, (yyvsp[(3) - (4)].string), (yyvsp[(4) - (4)].token)); }
1703706f2543Smrg    break;
1704706f2543Smrg
1705706f2543Smrg  case 39:
1706706f2543Smrg
1707706f2543Smrg/* Line 1464 of yacc.c  */
1708706f2543Smrg#line 185 "parser.y"
1709706f2543Smrg    { (yyval.wall) = dmxConfigCreateWall((yyvsp[(1) - (3)].token), NULL, NULL, (yyvsp[(2) - (3)].string), (yyvsp[(3) - (3)].token)); }
1710706f2543Smrg    break;
1711706f2543Smrg
1712706f2543Smrg  case 41:
1713706f2543Smrg
1714706f2543Smrg/* Line 1464 of yacc.c  */
1715706f2543Smrg#line 189 "parser.y"
1716706f2543Smrg    { (yyval.token) = (yyvsp[(1) - (2)].token); (yyval.token)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1717706f2543Smrg    break;
1718706f2543Smrg
1719706f2543Smrg  case 43:
1720706f2543Smrg
1721706f2543Smrg/* Line 1464 of yacc.c  */
1722706f2543Smrg#line 193 "parser.y"
1723706f2543Smrg    { (yyval.string) = (yyvsp[(1) - (2)].string); (yyval.string)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1724706f2543Smrg    break;
1725706f2543Smrg
1726706f2543Smrg  case 45:
1727706f2543Smrg
1728706f2543Smrg/* Line 1464 of yacc.c  */
1729706f2543Smrg#line 197 "parser.y"
1730706f2543Smrg    { (yyval.pair) = (yyvsp[(1) - (2)].pair); (yyval.pair)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1731706f2543Smrg    break;
1732706f2543Smrg
1733706f2543Smrg  case 47:
1734706f2543Smrg
1735706f2543Smrg/* Line 1464 of yacc.c  */
1736706f2543Smrg#line 201 "parser.y"
1737706f2543Smrg    { (yyval.pair) = (yyvsp[(1) - (2)].pair); (yyval.pair)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1738706f2543Smrg    break;
1739706f2543Smrg
1740706f2543Smrg  case 49:
1741706f2543Smrg
1742706f2543Smrg/* Line 1464 of yacc.c  */
1743706f2543Smrg#line 205 "parser.y"
1744706f2543Smrg    { (yyval.pair) = (yyvsp[(1) - (2)].pair); (yyval.pair)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1745706f2543Smrg    break;
1746706f2543Smrg
1747706f2543Smrg  case 51:
1748706f2543Smrg
1749706f2543Smrg/* Line 1464 of yacc.c  */
1750706f2543Smrg#line 209 "parser.y"
1751706f2543Smrg    { (yyval.token) = (yyvsp[(1) - (2)].token); (yyval.token)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1752706f2543Smrg    break;
1753706f2543Smrg
1754706f2543Smrg  case 53:
1755706f2543Smrg
1756706f2543Smrg/* Line 1464 of yacc.c  */
1757706f2543Smrg#line 213 "parser.y"
1758706f2543Smrg    { (yyval.token) = (yyvsp[(1) - (2)].token); (yyval.token)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1759706f2543Smrg    break;
1760706f2543Smrg
1761706f2543Smrg  case 55:
1762706f2543Smrg
1763706f2543Smrg/* Line 1464 of yacc.c  */
1764706f2543Smrg#line 217 "parser.y"
1765706f2543Smrg    { (yyval.token) = (yyvsp[(1) - (2)].token); (yyval.token)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1766706f2543Smrg    break;
1767706f2543Smrg
1768706f2543Smrg  case 57:
1769706f2543Smrg
1770706f2543Smrg/* Line 1464 of yacc.c  */
1771706f2543Smrg#line 221 "parser.y"
1772706f2543Smrg    { (yyval.token) = (yyvsp[(1) - (2)].token); (yyval.token)->comment = (yyvsp[(2) - (2)].comment)->comment; }
1773706f2543Smrg    break;
1774706f2543Smrg
1775706f2543Smrg  case 59:
1776706f2543Smrg
1777706f2543Smrg/* Line 1464 of yacc.c  */
1778706f2543Smrg#line 225 "parser.y"
1779706f2543Smrg    { APPEND(DMXConfigStringPtr, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].string)); (yyval.string) = (yyvsp[(1) - (2)].string); }
1780706f2543Smrg    break;
1781706f2543Smrg
1782706f2543Smrg
1783706f2543Smrg
1784706f2543Smrg/* Line 1464 of yacc.c  */
1785706f2543Smrg#line 1786 "parser.c"
1786706f2543Smrg      default: break;
1787706f2543Smrg    }
1788706f2543Smrg  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1789706f2543Smrg
1790706f2543Smrg  YYPOPSTACK (yylen);
1791706f2543Smrg  yylen = 0;
1792706f2543Smrg  YY_STACK_PRINT (yyss, yyssp);
1793706f2543Smrg
1794706f2543Smrg  *++yyvsp = yyval;
1795706f2543Smrg
1796706f2543Smrg  /* Now `shift' the result of the reduction.  Determine what state
1797706f2543Smrg     that goes to, based on the state we popped back to and the rule
1798706f2543Smrg     number reduced by.  */
1799706f2543Smrg
1800706f2543Smrg  yyn = yyr1[yyn];
1801706f2543Smrg
1802706f2543Smrg  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1803706f2543Smrg  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1804706f2543Smrg    yystate = yytable[yystate];
1805706f2543Smrg  else
1806706f2543Smrg    yystate = yydefgoto[yyn - YYNTOKENS];
1807706f2543Smrg
1808706f2543Smrg  goto yynewstate;
1809706f2543Smrg
1810706f2543Smrg
1811706f2543Smrg/*------------------------------------.
1812706f2543Smrg| yyerrlab -- here on detecting error |
1813706f2543Smrg`------------------------------------*/
1814706f2543Smrgyyerrlab:
1815706f2543Smrg  /* If not already recovering from an error, report this error.  */
1816706f2543Smrg  if (!yyerrstatus)
1817706f2543Smrg    {
1818706f2543Smrg      ++yynerrs;
1819706f2543Smrg#if ! YYERROR_VERBOSE
1820706f2543Smrg      yyerror (YY_("syntax error"));
1821706f2543Smrg#else
1822706f2543Smrg      {
1823706f2543Smrg	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1824706f2543Smrg	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1825706f2543Smrg	  {
1826706f2543Smrg	    YYSIZE_T yyalloc = 2 * yysize;
1827706f2543Smrg	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1828706f2543Smrg	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
1829706f2543Smrg	    if (yymsg != yymsgbuf)
1830706f2543Smrg	      YYSTACK_FREE (yymsg);
1831706f2543Smrg	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1832706f2543Smrg	    if (yymsg)
1833706f2543Smrg	      yymsg_alloc = yyalloc;
1834706f2543Smrg	    else
1835706f2543Smrg	      {
1836706f2543Smrg		yymsg = yymsgbuf;
1837706f2543Smrg		yymsg_alloc = sizeof yymsgbuf;
1838706f2543Smrg	      }
1839706f2543Smrg	  }
1840706f2543Smrg
1841706f2543Smrg	if (0 < yysize && yysize <= yymsg_alloc)
1842706f2543Smrg	  {
1843706f2543Smrg	    (void) yysyntax_error (yymsg, yystate, yychar);
1844706f2543Smrg	    yyerror (yymsg);
1845706f2543Smrg	  }
1846706f2543Smrg	else
1847706f2543Smrg	  {
1848706f2543Smrg	    yyerror (YY_("syntax error"));
1849706f2543Smrg	    if (yysize != 0)
1850706f2543Smrg	      goto yyexhaustedlab;
1851706f2543Smrg	  }
1852706f2543Smrg      }
1853706f2543Smrg#endif
1854706f2543Smrg    }
1855706f2543Smrg
1856706f2543Smrg
1857706f2543Smrg
1858706f2543Smrg  if (yyerrstatus == 3)
1859706f2543Smrg    {
1860706f2543Smrg      /* If just tried and failed to reuse lookahead token after an
1861706f2543Smrg	 error, discard it.  */
1862706f2543Smrg
1863706f2543Smrg      if (yychar <= YYEOF)
1864706f2543Smrg	{
1865706f2543Smrg	  /* Return failure if at end of input.  */
1866706f2543Smrg	  if (yychar == YYEOF)
1867706f2543Smrg	    YYABORT;
1868706f2543Smrg	}
1869706f2543Smrg      else
1870706f2543Smrg	{
1871706f2543Smrg	  yydestruct ("Error: discarding",
1872706f2543Smrg		      yytoken, &yylval);
1873706f2543Smrg	  yychar = YYEMPTY;
1874706f2543Smrg	}
1875706f2543Smrg    }
1876706f2543Smrg
1877706f2543Smrg  /* Else will try to reuse lookahead token after shifting the error
1878706f2543Smrg     token.  */
1879706f2543Smrg  goto yyerrlab1;
1880706f2543Smrg
1881706f2543Smrg
1882706f2543Smrg/*---------------------------------------------------.
1883706f2543Smrg| yyerrorlab -- error raised explicitly by YYERROR.  |
1884706f2543Smrg`---------------------------------------------------*/
1885706f2543Smrgyyerrorlab:
1886706f2543Smrg
1887706f2543Smrg  /* Pacify compilers like GCC when the user code never invokes
1888706f2543Smrg     YYERROR and the label yyerrorlab therefore never appears in user
1889706f2543Smrg     code.  */
1890706f2543Smrg  if (/*CONSTCOND*/ 0)
1891706f2543Smrg     goto yyerrorlab;
1892706f2543Smrg
1893706f2543Smrg  /* Do not reclaim the symbols of the rule which action triggered
1894706f2543Smrg     this YYERROR.  */
1895706f2543Smrg  YYPOPSTACK (yylen);
1896706f2543Smrg  yylen = 0;
1897706f2543Smrg  YY_STACK_PRINT (yyss, yyssp);
1898706f2543Smrg  yystate = *yyssp;
1899706f2543Smrg  goto yyerrlab1;
1900706f2543Smrg
1901706f2543Smrg
1902706f2543Smrg/*-------------------------------------------------------------.
1903706f2543Smrg| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1904706f2543Smrg`-------------------------------------------------------------*/
1905706f2543Smrgyyerrlab1:
1906706f2543Smrg  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
1907706f2543Smrg
1908706f2543Smrg  for (;;)
1909706f2543Smrg    {
1910706f2543Smrg      yyn = yypact[yystate];
1911706f2543Smrg      if (yyn != YYPACT_NINF)
1912706f2543Smrg	{
1913706f2543Smrg	  yyn += YYTERROR;
1914706f2543Smrg	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1915706f2543Smrg	    {
1916706f2543Smrg	      yyn = yytable[yyn];
1917706f2543Smrg	      if (0 < yyn)
1918706f2543Smrg		break;
1919706f2543Smrg	    }
1920706f2543Smrg	}
1921706f2543Smrg
1922706f2543Smrg      /* Pop the current state because it cannot handle the error token.  */
1923706f2543Smrg      if (yyssp == yyss)
1924706f2543Smrg	YYABORT;
1925706f2543Smrg
1926706f2543Smrg
1927706f2543Smrg      yydestruct ("Error: popping",
1928706f2543Smrg		  yystos[yystate], yyvsp);
1929706f2543Smrg      YYPOPSTACK (1);
1930706f2543Smrg      yystate = *yyssp;
1931706f2543Smrg      YY_STACK_PRINT (yyss, yyssp);
1932706f2543Smrg    }
1933706f2543Smrg
1934706f2543Smrg  *++yyvsp = yylval;
1935706f2543Smrg
1936706f2543Smrg
1937706f2543Smrg  /* Shift the error token.  */
1938706f2543Smrg  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1939706f2543Smrg
1940706f2543Smrg  yystate = yyn;
1941706f2543Smrg  goto yynewstate;
1942706f2543Smrg
1943706f2543Smrg
1944706f2543Smrg/*-------------------------------------.
1945706f2543Smrg| yyacceptlab -- YYACCEPT comes here.  |
1946706f2543Smrg`-------------------------------------*/
1947706f2543Smrgyyacceptlab:
1948706f2543Smrg  yyresult = 0;
1949706f2543Smrg  goto yyreturn;
1950706f2543Smrg
1951706f2543Smrg/*-----------------------------------.
1952706f2543Smrg| yyabortlab -- YYABORT comes here.  |
1953706f2543Smrg`-----------------------------------*/
1954706f2543Smrgyyabortlab:
1955706f2543Smrg  yyresult = 1;
1956706f2543Smrg  goto yyreturn;
1957706f2543Smrg
1958706f2543Smrg#if !defined(yyoverflow) || YYERROR_VERBOSE
1959706f2543Smrg/*-------------------------------------------------.
1960706f2543Smrg| yyexhaustedlab -- memory exhaustion comes here.  |
1961706f2543Smrg`-------------------------------------------------*/
1962706f2543Smrgyyexhaustedlab:
1963706f2543Smrg  yyerror (YY_("memory exhausted"));
1964706f2543Smrg  yyresult = 2;
1965706f2543Smrg  /* Fall through.  */
1966706f2543Smrg#endif
1967706f2543Smrg
1968706f2543Smrgyyreturn:
1969706f2543Smrg  if (yychar != YYEMPTY)
1970706f2543Smrg     yydestruct ("Cleanup: discarding lookahead",
1971706f2543Smrg		 yytoken, &yylval);
1972706f2543Smrg  /* Do not reclaim the symbols of the rule which action triggered
1973706f2543Smrg     this YYABORT or YYACCEPT.  */
1974706f2543Smrg  YYPOPSTACK (yylen);
1975706f2543Smrg  YY_STACK_PRINT (yyss, yyssp);
1976706f2543Smrg  while (yyssp != yyss)
1977706f2543Smrg    {
1978706f2543Smrg      yydestruct ("Cleanup: popping",
1979706f2543Smrg		  yystos[*yyssp], yyvsp);
1980706f2543Smrg      YYPOPSTACK (1);
1981706f2543Smrg    }
1982706f2543Smrg#ifndef yyoverflow
1983706f2543Smrg  if (yyss != yyssa)
1984706f2543Smrg    YYSTACK_FREE (yyss);
1985706f2543Smrg#endif
1986706f2543Smrg#if YYERROR_VERBOSE
1987706f2543Smrg  if (yymsg != yymsgbuf)
1988706f2543Smrg    YYSTACK_FREE (yymsg);
1989706f2543Smrg#endif
1990706f2543Smrg  /* Make sure YYID is used.  */
1991706f2543Smrg  return YYID (yyresult);
1992706f2543Smrg}
1993706f2543Smrg
1994706f2543Smrg
1995706f2543Smrg
1996