gram.c revision 350952b9
1350952b9Smrg/* A Bison parser, made by GNU Bison 2.3.  */
2fd7d9bd3Smrg
3350952b9Smrg/* Skeleton implementation for Bison's Yacc-like parsers in C
4350952b9Smrg
5350952b9Smrg   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6350952b9Smrg   Free Software Foundation, Inc.
7fd7d9bd3Smrg
8fd7d9bd3Smrg   This program is free software; you can redistribute it and/or modify
9fd7d9bd3Smrg   it under the terms of the GNU General Public License as published by
10fd7d9bd3Smrg   the Free Software Foundation; either version 2, or (at your option)
11fd7d9bd3Smrg   any later version.
12fd7d9bd3Smrg
13fd7d9bd3Smrg   This program is distributed in the hope that it will be useful,
14fd7d9bd3Smrg   but WITHOUT ANY WARRANTY; without even the implied warranty of
15fd7d9bd3Smrg   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16fd7d9bd3Smrg   GNU General Public License for more details.
17fd7d9bd3Smrg
18fd7d9bd3Smrg   You should have received a copy of the GNU General Public License
19fd7d9bd3Smrg   along with this program; if not, write to the Free Software
20350952b9Smrg   Foundation, Inc., 51 Franklin Street, Fifth Floor,
21350952b9Smrg   Boston, MA 02110-1301, USA.  */
22350952b9Smrg
23350952b9Smrg/* As a special exception, you may create a larger work that contains
24350952b9Smrg   part or all of the Bison parser skeleton and distribute that work
25350952b9Smrg   under terms of your choice, so long as that work isn't itself a
26350952b9Smrg   parser generator using the skeleton or a modified version thereof
27350952b9Smrg   as a parser skeleton.  Alternatively, if you modify or redistribute
28350952b9Smrg   the parser skeleton itself, you may (at your option) remove this
29350952b9Smrg   special exception, which will cause the skeleton and the resulting
30350952b9Smrg   Bison output files to be licensed under the GNU General Public
31350952b9Smrg   License without this special exception.
32fd7d9bd3Smrg
33350952b9Smrg   This special exception was added by the Free Software Foundation in
34350952b9Smrg   version 2.2 of Bison.  */
35fd7d9bd3Smrg
36350952b9Smrg/* C LALR(1) parser skeleton written by Richard Stallman, by
37350952b9Smrg   simplifying the original so-called "semantic" parser.  */
38fd7d9bd3Smrg
39fd7d9bd3Smrg/* All symbols defined below should begin with yy or YY, to avoid
40fd7d9bd3Smrg   infringing on user name space.  This should be done even for local
41fd7d9bd3Smrg   variables, as they might otherwise be expanded by user macros.
42fd7d9bd3Smrg   There are some unavoidable exceptions within include files to
43fd7d9bd3Smrg   define necessary library symbols; they are noted "INFRINGES ON
44fd7d9bd3Smrg   USER NAME SPACE" below.  */
45fd7d9bd3Smrg
46fd7d9bd3Smrg/* Identify Bison output.  */
47fd7d9bd3Smrg#define YYBISON 1
48fd7d9bd3Smrg
49350952b9Smrg/* Bison version.  */
50350952b9Smrg#define YYBISON_VERSION "2.3"
51350952b9Smrg
52fd7d9bd3Smrg/* Skeleton name.  */
53fd7d9bd3Smrg#define YYSKELETON_NAME "yacc.c"
54fd7d9bd3Smrg
55fd7d9bd3Smrg/* Pure parsers.  */
56fd7d9bd3Smrg#define YYPURE 0
57fd7d9bd3Smrg
58fd7d9bd3Smrg/* Using locations.  */
59fd7d9bd3Smrg#define YYLSP_NEEDED 0
60fd7d9bd3Smrg
61fd7d9bd3Smrg
62fd7d9bd3Smrg
63fd7d9bd3Smrg/* Tokens.  */
64fd7d9bd3Smrg#ifndef YYTOKENTYPE
65fd7d9bd3Smrg# define YYTOKENTYPE
66fd7d9bd3Smrg   /* Put the tokens into the symbol table, so that GDB and other debuggers
67fd7d9bd3Smrg      know about them.  */
68fd7d9bd3Smrg   enum yytokentype {
69fd7d9bd3Smrg     STRING = 258,
70fd7d9bd3Smrg     NUMBER = 259,
71fd7d9bd3Smrg     RUN = 260,
72fd7d9bd3Smrg     FUNCTION = 261,
73fd7d9bd3Smrg     FUNCTIONTYPE = 262,
74fd7d9bd3Smrg     TEST = 263,
75fd7d9bd3Smrg     TESTTYPE = 264,
76fd7d9bd3Smrg     LINESTYLE = 265,
77fd7d9bd3Smrg     LINESTYLETYPE = 266,
78fd7d9bd3Smrg     CAPSTYLE = 267,
79fd7d9bd3Smrg     CAPSTYLETYPE = 268,
80fd7d9bd3Smrg     JOINSTYLE = 269,
81fd7d9bd3Smrg     JOINSTYLETYPE = 270,
82fd7d9bd3Smrg     ROUND = 271,
83fd7d9bd3Smrg     SOLID = 272,
84fd7d9bd3Smrg     FILLSTYLE = 273,
85fd7d9bd3Smrg     FILLSTYLETYPE = 274,
86fd7d9bd3Smrg     FILLRULE = 275,
87fd7d9bd3Smrg     FILLRULETYPE = 276,
88fd7d9bd3Smrg     ARCMODE = 277,
89fd7d9bd3Smrg     ARCMODETYPE = 278,
90fd7d9bd3Smrg     FOREGROUND = 279,
91fd7d9bd3Smrg     BACKGROUND = 280,
92fd7d9bd3Smrg     LINEWIDTH = 281,
93fd7d9bd3Smrg     PLANEMASK = 282,
94fd7d9bd3Smrg     DASHLIST = 283,
95fd7d9bd3Smrg     PERCENT = 284,
96fd7d9bd3Smrg     FONT = 285
97fd7d9bd3Smrg   };
98fd7d9bd3Smrg#endif
99350952b9Smrg/* Tokens.  */
100fd7d9bd3Smrg#define STRING 258
101fd7d9bd3Smrg#define NUMBER 259
102fd7d9bd3Smrg#define RUN 260
103fd7d9bd3Smrg#define FUNCTION 261
104fd7d9bd3Smrg#define FUNCTIONTYPE 262
105fd7d9bd3Smrg#define TEST 263
106fd7d9bd3Smrg#define TESTTYPE 264
107fd7d9bd3Smrg#define LINESTYLE 265
108fd7d9bd3Smrg#define LINESTYLETYPE 266
109fd7d9bd3Smrg#define CAPSTYLE 267
110fd7d9bd3Smrg#define CAPSTYLETYPE 268
111fd7d9bd3Smrg#define JOINSTYLE 269
112fd7d9bd3Smrg#define JOINSTYLETYPE 270
113fd7d9bd3Smrg#define ROUND 271
114fd7d9bd3Smrg#define SOLID 272
115fd7d9bd3Smrg#define FILLSTYLE 273
116fd7d9bd3Smrg#define FILLSTYLETYPE 274
117fd7d9bd3Smrg#define FILLRULE 275
118fd7d9bd3Smrg#define FILLRULETYPE 276
119fd7d9bd3Smrg#define ARCMODE 277
120fd7d9bd3Smrg#define ARCMODETYPE 278
121fd7d9bd3Smrg#define FOREGROUND 279
122fd7d9bd3Smrg#define BACKGROUND 280
123fd7d9bd3Smrg#define LINEWIDTH 281
124fd7d9bd3Smrg#define PLANEMASK 282
125fd7d9bd3Smrg#define DASHLIST 283
126fd7d9bd3Smrg#define PERCENT 284
127fd7d9bd3Smrg#define FONT 285
128fd7d9bd3Smrg
129fd7d9bd3Smrg
130fd7d9bd3Smrg
131fd7d9bd3Smrg
132fd7d9bd3Smrg/* Copy the first part of user declarations.  */
133fd7d9bd3Smrg#line 6 "gram.y"
134fd7d9bd3Smrg
135fd7d9bd3Smrg#define YYDEBUG 1
136fd7d9bd3Smrg
137fd7d9bd3Smrg#include <stdio.h>
138fd7d9bd3Smrg#include <X11/X.h>
139fd7d9bd3Smrg#include <X11/Intrinsic.h>
140fd7d9bd3Smrg#include "xgc.h"
141fd7d9bd3Smrg
142fd7d9bd3Smrgextern int yylineno;
143fd7d9bd3Smrg
144fd7d9bd3Smrg
145fd7d9bd3Smrg
146fd7d9bd3Smrg/* Enabling traces.  */
147fd7d9bd3Smrg#ifndef YYDEBUG
148fd7d9bd3Smrg# define YYDEBUG 0
149fd7d9bd3Smrg#endif
150fd7d9bd3Smrg
151fd7d9bd3Smrg/* Enabling verbose error messages.  */
152fd7d9bd3Smrg#ifdef YYERROR_VERBOSE
153fd7d9bd3Smrg# undef YYERROR_VERBOSE
154fd7d9bd3Smrg# define YYERROR_VERBOSE 1
155fd7d9bd3Smrg#else
156fd7d9bd3Smrg# define YYERROR_VERBOSE 0
157fd7d9bd3Smrg#endif
158fd7d9bd3Smrg
159350952b9Smrg/* Enabling the token table.  */
160350952b9Smrg#ifndef YYTOKEN_TABLE
161350952b9Smrg# define YYTOKEN_TABLE 0
162350952b9Smrg#endif
163350952b9Smrg
164350952b9Smrg#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
165350952b9Smrgtypedef union YYSTYPE
166fd7d9bd3Smrg#line 19 "gram.y"
167350952b9Smrg{
168fd7d9bd3Smrg  int num;
169fd7d9bd3Smrg  char *ptr;
170350952b9Smrg}
171350952b9Smrg/* Line 187 of yacc.c.  */
172350952b9Smrg#line 173 "gram.c"
173350952b9Smrg	YYSTYPE;
174fd7d9bd3Smrg# define yystype YYSTYPE /* obsolescent; will be withdrawn */
175fd7d9bd3Smrg# define YYSTYPE_IS_DECLARED 1
176fd7d9bd3Smrg# define YYSTYPE_IS_TRIVIAL 1
177fd7d9bd3Smrg#endif
178fd7d9bd3Smrg
179fd7d9bd3Smrg
180fd7d9bd3Smrg
181fd7d9bd3Smrg/* Copy the second part of user declarations.  */
182fd7d9bd3Smrg
183fd7d9bd3Smrg
184350952b9Smrg/* Line 216 of yacc.c.  */
185350952b9Smrg#line 186 "gram.c"
186fd7d9bd3Smrg
187350952b9Smrg#ifdef short
188350952b9Smrg# undef short
189350952b9Smrg#endif
190350952b9Smrg
191350952b9Smrg#ifdef YYTYPE_UINT8
192350952b9Smrgtypedef YYTYPE_UINT8 yytype_uint8;
193350952b9Smrg#else
194350952b9Smrgtypedef unsigned char yytype_uint8;
195350952b9Smrg#endif
196fd7d9bd3Smrg
197350952b9Smrg#ifdef YYTYPE_INT8
198350952b9Smrgtypedef YYTYPE_INT8 yytype_int8;
199350952b9Smrg#elif (defined __STDC__ || defined __C99__FUNC__ \
200350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
201350952b9Smrgtypedef signed char yytype_int8;
202350952b9Smrg#else
203350952b9Smrgtypedef short int yytype_int8;
204350952b9Smrg#endif
205350952b9Smrg
206350952b9Smrg#ifdef YYTYPE_UINT16
207350952b9Smrgtypedef YYTYPE_UINT16 yytype_uint16;
208350952b9Smrg#else
209350952b9Smrgtypedef unsigned short int yytype_uint16;
210350952b9Smrg#endif
211350952b9Smrg
212350952b9Smrg#ifdef YYTYPE_INT16
213350952b9Smrgtypedef YYTYPE_INT16 yytype_int16;
214350952b9Smrg#else
215350952b9Smrgtypedef short int yytype_int16;
216350952b9Smrg#endif
217350952b9Smrg
218350952b9Smrg#ifndef YYSIZE_T
219350952b9Smrg# ifdef __SIZE_TYPE__
220350952b9Smrg#  define YYSIZE_T __SIZE_TYPE__
221350952b9Smrg# elif defined size_t
222350952b9Smrg#  define YYSIZE_T size_t
223350952b9Smrg# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
224350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
225350952b9Smrg#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
226350952b9Smrg#  define YYSIZE_T size_t
227350952b9Smrg# else
228350952b9Smrg#  define YYSIZE_T unsigned int
229fd7d9bd3Smrg# endif
230350952b9Smrg#endif
231350952b9Smrg
232350952b9Smrg#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
233350952b9Smrg
234350952b9Smrg#ifndef YY_
235350952b9Smrg# if YYENABLE_NLS
236350952b9Smrg#  if ENABLE_NLS
237350952b9Smrg#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
238350952b9Smrg#   define YY_(msgid) dgettext ("bison-runtime", msgid)
239350952b9Smrg#  endif
240350952b9Smrg# endif
241350952b9Smrg# ifndef YY_
242350952b9Smrg#  define YY_(msgid) msgid
243fd7d9bd3Smrg# endif
244350952b9Smrg#endif
245350952b9Smrg
246350952b9Smrg/* Suppress unused-variable warnings by "using" E.  */
247350952b9Smrg#if ! defined lint || defined __GNUC__
248350952b9Smrg# define YYUSE(e) ((void) (e))
249350952b9Smrg#else
250350952b9Smrg# define YYUSE(e) /* empty */
251350952b9Smrg#endif
252350952b9Smrg
253350952b9Smrg/* Identity function, used to suppress warnings about constant conditions.  */
254350952b9Smrg#ifndef lint
255350952b9Smrg# define YYID(n) (n)
256350952b9Smrg#else
257350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
258350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
259350952b9Smrgstatic int
260350952b9SmrgYYID (int i)
261350952b9Smrg#else
262350952b9Smrgstatic int
263350952b9SmrgYYID (i)
264350952b9Smrg    int i;
265350952b9Smrg#endif
266350952b9Smrg{
267350952b9Smrg  return i;
268350952b9Smrg}
269350952b9Smrg#endif
270350952b9Smrg
271350952b9Smrg#if ! defined yyoverflow || YYERROR_VERBOSE
272fd7d9bd3Smrg
273fd7d9bd3Smrg/* The parser invokes alloca or malloc; define the necessary symbols.  */
274fd7d9bd3Smrg
275fd7d9bd3Smrg# ifdef YYSTACK_USE_ALLOCA
276fd7d9bd3Smrg#  if YYSTACK_USE_ALLOCA
277fd7d9bd3Smrg#   ifdef __GNUC__
278fd7d9bd3Smrg#    define YYSTACK_ALLOC __builtin_alloca
279350952b9Smrg#   elif defined __BUILTIN_VA_ARG_INCR
280350952b9Smrg#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
281350952b9Smrg#   elif defined _AIX
282350952b9Smrg#    define YYSTACK_ALLOC __alloca
283350952b9Smrg#   elif defined _MSC_VER
284350952b9Smrg#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
285350952b9Smrg#    define alloca _alloca
286350952b9Smrg#   else
287350952b9Smrg#    define YYSTACK_ALLOC alloca
288350952b9Smrg#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
289350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
290350952b9Smrg#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
291350952b9Smrg#     ifndef _STDLIB_H
292350952b9Smrg#      define _STDLIB_H 1
293350952b9Smrg#     endif
294350952b9Smrg#    endif
295fd7d9bd3Smrg#   endif
296fd7d9bd3Smrg#  endif
297fd7d9bd3Smrg# endif
298fd7d9bd3Smrg
299fd7d9bd3Smrg# ifdef YYSTACK_ALLOC
300350952b9Smrg   /* Pacify GCC's `empty if-body' warning.  */
301350952b9Smrg#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
302350952b9Smrg#  ifndef YYSTACK_ALLOC_MAXIMUM
303350952b9Smrg    /* The OS might guarantee only one guard page at the bottom of the stack,
304350952b9Smrg       and a page size can be as small as 4096 bytes.  So we cannot safely
305350952b9Smrg       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
306350952b9Smrg       to allow for a few compiler-allocated temporary stack slots.  */
307350952b9Smrg#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
308fd7d9bd3Smrg#  endif
309350952b9Smrg# else
310fd7d9bd3Smrg#  define YYSTACK_ALLOC YYMALLOC
311fd7d9bd3Smrg#  define YYSTACK_FREE YYFREE
312350952b9Smrg#  ifndef YYSTACK_ALLOC_MAXIMUM
313350952b9Smrg#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
314350952b9Smrg#  endif
315350952b9Smrg#  if (defined __cplusplus && ! defined _STDLIB_H \
316350952b9Smrg       && ! ((defined YYMALLOC || defined malloc) \
317350952b9Smrg	     && (defined YYFREE || defined free)))
318350952b9Smrg#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
319350952b9Smrg#   ifndef _STDLIB_H
320350952b9Smrg#    define _STDLIB_H 1
321350952b9Smrg#   endif
322350952b9Smrg#  endif
323350952b9Smrg#  ifndef YYMALLOC
324350952b9Smrg#   define YYMALLOC malloc
325350952b9Smrg#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
326350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
327350952b9Smrgvoid *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
328350952b9Smrg#   endif
329350952b9Smrg#  endif
330350952b9Smrg#  ifndef YYFREE
331350952b9Smrg#   define YYFREE free
332350952b9Smrg#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
333350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
334350952b9Smrgvoid free (void *); /* INFRINGES ON USER NAME SPACE */
335350952b9Smrg#   endif
336350952b9Smrg#  endif
337fd7d9bd3Smrg# endif
338350952b9Smrg#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
339fd7d9bd3Smrg
340fd7d9bd3Smrg
341350952b9Smrg#if (! defined yyoverflow \
342350952b9Smrg     && (! defined __cplusplus \
343350952b9Smrg	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
344fd7d9bd3Smrg
345fd7d9bd3Smrg/* A type that is properly aligned for any stack member.  */
346fd7d9bd3Smrgunion yyalloc
347fd7d9bd3Smrg{
348350952b9Smrg  yytype_int16 yyss;
349fd7d9bd3Smrg  YYSTYPE yyvs;
350fd7d9bd3Smrg  };
351fd7d9bd3Smrg
352fd7d9bd3Smrg/* The size of the maximum gap between one aligned stack and the next.  */
353fd7d9bd3Smrg# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
354fd7d9bd3Smrg
355fd7d9bd3Smrg/* The size of an array large to enough to hold all stacks, each with
356fd7d9bd3Smrg   N elements.  */
357fd7d9bd3Smrg# define YYSTACK_BYTES(N) \
358350952b9Smrg     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
359fd7d9bd3Smrg      + YYSTACK_GAP_MAXIMUM)
360fd7d9bd3Smrg
361fd7d9bd3Smrg/* Copy COUNT objects from FROM to TO.  The source and destination do
362fd7d9bd3Smrg   not overlap.  */
363fd7d9bd3Smrg# ifndef YYCOPY
364350952b9Smrg#  if defined __GNUC__ && 1 < __GNUC__
365fd7d9bd3Smrg#   define YYCOPY(To, From, Count) \
366fd7d9bd3Smrg      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
367fd7d9bd3Smrg#  else
368fd7d9bd3Smrg#   define YYCOPY(To, From, Count)		\
369fd7d9bd3Smrg      do					\
370fd7d9bd3Smrg	{					\
371350952b9Smrg	  YYSIZE_T yyi;				\
372fd7d9bd3Smrg	  for (yyi = 0; yyi < (Count); yyi++)	\
373fd7d9bd3Smrg	    (To)[yyi] = (From)[yyi];		\
374fd7d9bd3Smrg	}					\
375350952b9Smrg      while (YYID (0))
376fd7d9bd3Smrg#  endif
377fd7d9bd3Smrg# endif
378fd7d9bd3Smrg
379fd7d9bd3Smrg/* Relocate STACK from its old location to the new one.  The
380fd7d9bd3Smrg   local variables YYSIZE and YYSTACKSIZE give the old and new number of
381fd7d9bd3Smrg   elements in the stack, and YYPTR gives the new location of the
382fd7d9bd3Smrg   stack.  Advance YYPTR to a properly aligned location for the next
383fd7d9bd3Smrg   stack.  */
384fd7d9bd3Smrg# define YYSTACK_RELOCATE(Stack)					\
385fd7d9bd3Smrg    do									\
386fd7d9bd3Smrg      {									\
387fd7d9bd3Smrg	YYSIZE_T yynewbytes;						\
388fd7d9bd3Smrg	YYCOPY (&yyptr->Stack, Stack, yysize);				\
389fd7d9bd3Smrg	Stack = &yyptr->Stack;						\
390fd7d9bd3Smrg	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
391fd7d9bd3Smrg	yyptr += yynewbytes / sizeof (*yyptr);				\
392fd7d9bd3Smrg      }									\
393350952b9Smrg    while (YYID (0))
394fd7d9bd3Smrg
395fd7d9bd3Smrg#endif
396fd7d9bd3Smrg
397350952b9Smrg/* YYFINAL -- State number of the termination state.  */
398fd7d9bd3Smrg#define YYFINAL  3
399fd7d9bd3Smrg/* YYLAST -- Last index in YYTABLE.  */
400fd7d9bd3Smrg#define YYLAST   40
401fd7d9bd3Smrg
402350952b9Smrg/* YYNTOKENS -- Number of terminals.  */
403fd7d9bd3Smrg#define YYNTOKENS  32
404350952b9Smrg/* YYNNTS -- Number of nonterminals.  */
405fd7d9bd3Smrg#define YYNNTS  4
406350952b9Smrg/* YYNRULES -- Number of rules.  */
407fd7d9bd3Smrg#define YYNRULES  26
408350952b9Smrg/* YYNRULES -- Number of states.  */
409fd7d9bd3Smrg#define YYNSTATES  43
410fd7d9bd3Smrg
411fd7d9bd3Smrg/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
412fd7d9bd3Smrg#define YYUNDEFTOK  2
413fd7d9bd3Smrg#define YYMAXUTOK   285
414fd7d9bd3Smrg
415350952b9Smrg#define YYTRANSLATE(YYX)						\
416fd7d9bd3Smrg  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
417fd7d9bd3Smrg
418fd7d9bd3Smrg/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
419350952b9Smrgstatic const yytype_uint8 yytranslate[] =
420fd7d9bd3Smrg{
421fd7d9bd3Smrg       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
422fd7d9bd3Smrg      31,     2,     2,     2,     2,     2,     2,     2,     2,     2,
423fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
424fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
425fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
426fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
427fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
428fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
429fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
430fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
431fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
432fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
433fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
434fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
435fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
436fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
437fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
438fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
439fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
440fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
441fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
442fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
443fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
444fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
445fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
446fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
447fd7d9bd3Smrg       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
448fd7d9bd3Smrg      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
449fd7d9bd3Smrg      25,    26,    27,    28,    29,    30
450fd7d9bd3Smrg};
451fd7d9bd3Smrg
452fd7d9bd3Smrg#if YYDEBUG
453fd7d9bd3Smrg/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
454fd7d9bd3Smrg   YYRHS.  */
455350952b9Smrgstatic const yytype_uint8 yyprhs[] =
456fd7d9bd3Smrg{
457fd7d9bd3Smrg       0,     0,     3,     5,     6,     9,    13,    15,    17,    20,
458fd7d9bd3Smrg      23,    26,    29,    32,    35,    38,    41,    44,    47,    50,
459fd7d9bd3Smrg      53,    56,    59,    62,    65,    68,    71
460fd7d9bd3Smrg};
461fd7d9bd3Smrg
462350952b9Smrg/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
463350952b9Smrgstatic const yytype_int8 yyrhs[] =
464fd7d9bd3Smrg{
465fd7d9bd3Smrg      33,     0,    -1,    34,    -1,    -1,    34,    31,    -1,    34,
466fd7d9bd3Smrg      35,    31,    -1,     1,    -1,     5,    -1,     8,     9,    -1,
467fd7d9bd3Smrg       6,     7,    -1,    10,    11,    -1,    10,    17,    -1,    12,
468fd7d9bd3Smrg      13,    -1,    12,    16,    -1,    14,    15,    -1,    14,    16,
469fd7d9bd3Smrg      -1,    18,    19,    -1,    18,    17,    -1,    20,    21,    -1,
470fd7d9bd3Smrg      22,    23,    -1,    24,     4,    -1,    25,     4,    -1,    26,
471fd7d9bd3Smrg       4,    -1,    27,     4,    -1,    28,     4,    -1,    30,     3,
472fd7d9bd3Smrg      -1,    29,     4,    -1
473fd7d9bd3Smrg};
474fd7d9bd3Smrg
475fd7d9bd3Smrg/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
476350952b9Smrgstatic const yytype_uint8 yyrline[] =
477fd7d9bd3Smrg{
478fd7d9bd3Smrg       0,    41,    41,    44,    45,    46,    49,    50,    52,    54,
479fd7d9bd3Smrg      56,    58,    60,    62,    64,    66,    68,    70,    72,    74,
480fd7d9bd3Smrg      76,    78,    80,    82,    84,    86,    88
481fd7d9bd3Smrg};
482fd7d9bd3Smrg#endif
483fd7d9bd3Smrg
484350952b9Smrg#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
485350952b9Smrg/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
486350952b9Smrg   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
487fd7d9bd3Smrgstatic const char *const yytname[] =
488fd7d9bd3Smrg{
489fd7d9bd3Smrg  "$end", "error", "$undefined", "STRING", "NUMBER", "RUN", "FUNCTION",
490fd7d9bd3Smrg  "FUNCTIONTYPE", "TEST", "TESTTYPE", "LINESTYLE", "LINESTYLETYPE",
491fd7d9bd3Smrg  "CAPSTYLE", "CAPSTYLETYPE", "JOINSTYLE", "JOINSTYLETYPE", "ROUND",
492fd7d9bd3Smrg  "SOLID", "FILLSTYLE", "FILLSTYLETYPE", "FILLRULE", "FILLRULETYPE",
493fd7d9bd3Smrg  "ARCMODE", "ARCMODETYPE", "FOREGROUND", "BACKGROUND", "LINEWIDTH",
494fd7d9bd3Smrg  "PLANEMASK", "DASHLIST", "PERCENT", "FONT", "'\\n'", "$accept", "all",
495fd7d9bd3Smrg  "stmts", "stmt", 0
496fd7d9bd3Smrg};
497fd7d9bd3Smrg#endif
498fd7d9bd3Smrg
499fd7d9bd3Smrg# ifdef YYPRINT
500fd7d9bd3Smrg/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
501fd7d9bd3Smrg   token YYLEX-NUM.  */
502350952b9Smrgstatic const yytype_uint16 yytoknum[] =
503fd7d9bd3Smrg{
504fd7d9bd3Smrg       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
505fd7d9bd3Smrg     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
506fd7d9bd3Smrg     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
507fd7d9bd3Smrg     285,    10
508fd7d9bd3Smrg};
509fd7d9bd3Smrg# endif
510fd7d9bd3Smrg
511fd7d9bd3Smrg/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
512350952b9Smrgstatic const yytype_uint8 yyr1[] =
513fd7d9bd3Smrg{
514fd7d9bd3Smrg       0,    32,    33,    34,    34,    34,    35,    35,    35,    35,
515fd7d9bd3Smrg      35,    35,    35,    35,    35,    35,    35,    35,    35,    35,
516fd7d9bd3Smrg      35,    35,    35,    35,    35,    35,    35
517fd7d9bd3Smrg};
518fd7d9bd3Smrg
519fd7d9bd3Smrg/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
520350952b9Smrgstatic const yytype_uint8 yyr2[] =
521fd7d9bd3Smrg{
522fd7d9bd3Smrg       0,     2,     1,     0,     2,     3,     1,     1,     2,     2,
523fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
524fd7d9bd3Smrg       2,     2,     2,     2,     2,     2,     2
525fd7d9bd3Smrg};
526fd7d9bd3Smrg
527fd7d9bd3Smrg/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
528fd7d9bd3Smrg   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
529fd7d9bd3Smrg   means the default is an error.  */
530350952b9Smrgstatic const yytype_uint8 yydefact[] =
531fd7d9bd3Smrg{
532fd7d9bd3Smrg       3,     0,     0,     1,     6,     7,     0,     0,     0,     0,
533fd7d9bd3Smrg       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
534fd7d9bd3Smrg       0,     4,     0,     9,     8,    10,    11,    12,    13,    14,
535fd7d9bd3Smrg      15,    17,    16,    18,    19,    20,    21,    22,    23,    24,
536fd7d9bd3Smrg      26,    25,     5
537fd7d9bd3Smrg};
538fd7d9bd3Smrg
539350952b9Smrg/* YYDEFGOTO[NTERM-NUM].  */
540350952b9Smrgstatic const yytype_int8 yydefgoto[] =
541fd7d9bd3Smrg{
542fd7d9bd3Smrg      -1,     1,     2,    22
543fd7d9bd3Smrg};
544fd7d9bd3Smrg
545fd7d9bd3Smrg/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
546fd7d9bd3Smrg   STATE-NUM.  */
547fd7d9bd3Smrg#define YYPACT_NINF -10
548350952b9Smrgstatic const yytype_int8 yypact[] =
549fd7d9bd3Smrg{
550fd7d9bd3Smrg     -10,     2,     0,   -10,   -10,   -10,     8,    10,    -8,    -9,
551fd7d9bd3Smrg       1,    -6,    11,    -2,    19,    29,    30,    31,    32,    33,
552fd7d9bd3Smrg      35,   -10,     9,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
553fd7d9bd3Smrg     -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,   -10,
554fd7d9bd3Smrg     -10,   -10,   -10
555fd7d9bd3Smrg};
556fd7d9bd3Smrg
557fd7d9bd3Smrg/* YYPGOTO[NTERM-NUM].  */
558350952b9Smrgstatic const yytype_int8 yypgoto[] =
559fd7d9bd3Smrg{
560fd7d9bd3Smrg     -10,   -10,   -10,   -10
561fd7d9bd3Smrg};
562fd7d9bd3Smrg
563fd7d9bd3Smrg/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
564fd7d9bd3Smrg   positive, shift that token.  If negative, reduce the rule which
565fd7d9bd3Smrg   number is the opposite.  If zero, do what YYDEFACT says.
566fd7d9bd3Smrg   If YYTABLE_NINF, syntax error.  */
567fd7d9bd3Smrg#define YYTABLE_NINF -3
568350952b9Smrgstatic const yytype_int8 yytable[] =
569fd7d9bd3Smrg{
570fd7d9bd3Smrg      -2,     4,     3,    25,    27,     5,     6,    28,     7,    26,
571fd7d9bd3Smrg       8,    31,     9,    32,    10,    23,    29,    30,    11,    24,
572fd7d9bd3Smrg      12,    34,    13,    35,    14,    15,    16,    17,    18,    19,
573fd7d9bd3Smrg      20,    21,    33,    36,    37,    38,    39,    40,    41,     0,
574fd7d9bd3Smrg      42
575fd7d9bd3Smrg};
576fd7d9bd3Smrg
577350952b9Smrgstatic const yytype_int8 yycheck[] =
578fd7d9bd3Smrg{
579fd7d9bd3Smrg       0,     1,     0,    11,    13,     5,     6,    16,     8,    17,
580fd7d9bd3Smrg      10,    17,    12,    19,    14,     7,    15,    16,    18,     9,
581fd7d9bd3Smrg      20,    23,    22,     4,    24,    25,    26,    27,    28,    29,
582fd7d9bd3Smrg      30,    31,    21,     4,     4,     4,     4,     4,     3,    -1,
583fd7d9bd3Smrg      31
584fd7d9bd3Smrg};
585fd7d9bd3Smrg
586fd7d9bd3Smrg/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
587fd7d9bd3Smrg   symbol of state STATE-NUM.  */
588350952b9Smrgstatic const yytype_uint8 yystos[] =
589fd7d9bd3Smrg{
590fd7d9bd3Smrg       0,    33,    34,     0,     1,     5,     6,     8,    10,    12,
591fd7d9bd3Smrg      14,    18,    20,    22,    24,    25,    26,    27,    28,    29,
592fd7d9bd3Smrg      30,    31,    35,     7,     9,    11,    17,    13,    16,    15,
593fd7d9bd3Smrg      16,    17,    19,    21,    23,     4,     4,     4,     4,     4,
594fd7d9bd3Smrg       4,     3,    31
595fd7d9bd3Smrg};
596fd7d9bd3Smrg
597fd7d9bd3Smrg#define yyerrok		(yyerrstatus = 0)
598fd7d9bd3Smrg#define yyclearin	(yychar = YYEMPTY)
599fd7d9bd3Smrg#define YYEMPTY		(-2)
600fd7d9bd3Smrg#define YYEOF		0
601fd7d9bd3Smrg
602fd7d9bd3Smrg#define YYACCEPT	goto yyacceptlab
603fd7d9bd3Smrg#define YYABORT		goto yyabortlab
604fd7d9bd3Smrg#define YYERROR		goto yyerrorlab
605fd7d9bd3Smrg
606fd7d9bd3Smrg
607fd7d9bd3Smrg/* Like YYERROR except do call yyerror.  This remains here temporarily
608fd7d9bd3Smrg   to ease the transition to the new meaning of YYERROR, for GCC.
609fd7d9bd3Smrg   Once GCC version 2 has supplanted version 1, this can go.  */
610fd7d9bd3Smrg
611fd7d9bd3Smrg#define YYFAIL		goto yyerrlab
612fd7d9bd3Smrg
613fd7d9bd3Smrg#define YYRECOVERING()  (!!yyerrstatus)
614fd7d9bd3Smrg
615fd7d9bd3Smrg#define YYBACKUP(Token, Value)					\
616fd7d9bd3Smrgdo								\
617fd7d9bd3Smrg  if (yychar == YYEMPTY && yylen == 1)				\
618fd7d9bd3Smrg    {								\
619fd7d9bd3Smrg      yychar = (Token);						\
620fd7d9bd3Smrg      yylval = (Value);						\
621fd7d9bd3Smrg      yytoken = YYTRANSLATE (yychar);				\
622350952b9Smrg      YYPOPSTACK (1);						\
623fd7d9bd3Smrg      goto yybackup;						\
624fd7d9bd3Smrg    }								\
625fd7d9bd3Smrg  else								\
626350952b9Smrg    {								\
627350952b9Smrg      yyerror (YY_("syntax error: cannot back up")); \
628fd7d9bd3Smrg      YYERROR;							\
629fd7d9bd3Smrg    }								\
630350952b9Smrgwhile (YYID (0))
631350952b9Smrg
632fd7d9bd3Smrg
633fd7d9bd3Smrg#define YYTERROR	1
634fd7d9bd3Smrg#define YYERRCODE	256
635fd7d9bd3Smrg
636fd7d9bd3Smrg
637350952b9Smrg/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
638350952b9Smrg   If N is 0, then set CURRENT to the empty location which ends
639350952b9Smrg   the previous symbol: RHS[0] (always defined).  */
640350952b9Smrg
641350952b9Smrg#define YYRHSLOC(Rhs, K) ((Rhs)[K])
642fd7d9bd3Smrg#ifndef YYLLOC_DEFAULT
643350952b9Smrg# define YYLLOC_DEFAULT(Current, Rhs, N)				\
644350952b9Smrg    do									\
645350952b9Smrg      if (YYID (N))                                                    \
646350952b9Smrg	{								\
647350952b9Smrg	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
648350952b9Smrg	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
649350952b9Smrg	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
650350952b9Smrg	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
651350952b9Smrg	}								\
652350952b9Smrg      else								\
653350952b9Smrg	{								\
654350952b9Smrg	  (Current).first_line   = (Current).last_line   =		\
655350952b9Smrg	    YYRHSLOC (Rhs, 0).last_line;				\
656350952b9Smrg	  (Current).first_column = (Current).last_column =		\
657350952b9Smrg	    YYRHSLOC (Rhs, 0).last_column;				\
658350952b9Smrg	}								\
659350952b9Smrg    while (YYID (0))
660350952b9Smrg#endif
661350952b9Smrg
662350952b9Smrg
663350952b9Smrg/* YY_LOCATION_PRINT -- Print the location on the stream.
664350952b9Smrg   This macro was not mandated originally: define only if we know
665350952b9Smrg   we won't break user code: when these are the locations we know.  */
666350952b9Smrg
667350952b9Smrg#ifndef YY_LOCATION_PRINT
668350952b9Smrg# if YYLTYPE_IS_TRIVIAL
669350952b9Smrg#  define YY_LOCATION_PRINT(File, Loc)			\
670350952b9Smrg     fprintf (File, "%d.%d-%d.%d",			\
671350952b9Smrg	      (Loc).first_line, (Loc).first_column,	\
672350952b9Smrg	      (Loc).last_line,  (Loc).last_column)
673350952b9Smrg# else
674350952b9Smrg#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
675350952b9Smrg# endif
676fd7d9bd3Smrg#endif
677fd7d9bd3Smrg
678350952b9Smrg
679fd7d9bd3Smrg/* YYLEX -- calling `yylex' with the right arguments.  */
680fd7d9bd3Smrg
681fd7d9bd3Smrg#ifdef YYLEX_PARAM
682fd7d9bd3Smrg# define YYLEX yylex (YYLEX_PARAM)
683fd7d9bd3Smrg#else
684fd7d9bd3Smrg# define YYLEX yylex ()
685fd7d9bd3Smrg#endif
686fd7d9bd3Smrg
687fd7d9bd3Smrg/* Enable debugging if requested.  */
688fd7d9bd3Smrg#if YYDEBUG
689fd7d9bd3Smrg
690fd7d9bd3Smrg# ifndef YYFPRINTF
691fd7d9bd3Smrg#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
692fd7d9bd3Smrg#  define YYFPRINTF fprintf
693fd7d9bd3Smrg# endif
694fd7d9bd3Smrg
695fd7d9bd3Smrg# define YYDPRINTF(Args)			\
696fd7d9bd3Smrgdo {						\
697fd7d9bd3Smrg  if (yydebug)					\
698fd7d9bd3Smrg    YYFPRINTF Args;				\
699350952b9Smrg} while (YYID (0))
700fd7d9bd3Smrg
701350952b9Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
702350952b9Smrgdo {									  \
703350952b9Smrg  if (yydebug)								  \
704350952b9Smrg    {									  \
705350952b9Smrg      YYFPRINTF (stderr, "%s ", Title);					  \
706350952b9Smrg      yy_symbol_print (stderr,						  \
707350952b9Smrg		  Type, Value); \
708350952b9Smrg      YYFPRINTF (stderr, "\n");						  \
709350952b9Smrg    }									  \
710350952b9Smrg} while (YYID (0))
711fd7d9bd3Smrg
712350952b9Smrg
713350952b9Smrg/*--------------------------------.
714350952b9Smrg| Print this symbol on YYOUTPUT.  |
715350952b9Smrg`--------------------------------*/
716350952b9Smrg
717350952b9Smrg/*ARGSUSED*/
718350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
719350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
720350952b9Smrgstatic void
721350952b9Smrgyy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
722350952b9Smrg#else
723350952b9Smrgstatic void
724350952b9Smrgyy_symbol_value_print (yyoutput, yytype, yyvaluep)
725350952b9Smrg    FILE *yyoutput;
726350952b9Smrg    int yytype;
727350952b9Smrg    YYSTYPE const * const yyvaluep;
728350952b9Smrg#endif
729350952b9Smrg{
730350952b9Smrg  if (!yyvaluep)
731350952b9Smrg    return;
732350952b9Smrg# ifdef YYPRINT
733350952b9Smrg  if (yytype < YYNTOKENS)
734350952b9Smrg    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
735350952b9Smrg# else
736350952b9Smrg  YYUSE (yyoutput);
737350952b9Smrg# endif
738350952b9Smrg  switch (yytype)
739350952b9Smrg    {
740350952b9Smrg      default:
741350952b9Smrg	break;
742350952b9Smrg    }
743350952b9Smrg}
744350952b9Smrg
745350952b9Smrg
746350952b9Smrg/*--------------------------------.
747350952b9Smrg| Print this symbol on YYOUTPUT.  |
748350952b9Smrg`--------------------------------*/
749350952b9Smrg
750350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
751350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
752350952b9Smrgstatic void
753350952b9Smrgyy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
754350952b9Smrg#else
755350952b9Smrgstatic void
756350952b9Smrgyy_symbol_print (yyoutput, yytype, yyvaluep)
757350952b9Smrg    FILE *yyoutput;
758350952b9Smrg    int yytype;
759350952b9Smrg    YYSTYPE const * const yyvaluep;
760350952b9Smrg#endif
761350952b9Smrg{
762350952b9Smrg  if (yytype < YYNTOKENS)
763350952b9Smrg    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
764350952b9Smrg  else
765350952b9Smrg    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
766350952b9Smrg
767350952b9Smrg  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
768350952b9Smrg  YYFPRINTF (yyoutput, ")");
769350952b9Smrg}
770fd7d9bd3Smrg
771fd7d9bd3Smrg/*------------------------------------------------------------------.
772fd7d9bd3Smrg| yy_stack_print -- Print the state stack from its BOTTOM up to its |
773fd7d9bd3Smrg| TOP (included).                                                   |
774fd7d9bd3Smrg`------------------------------------------------------------------*/
775fd7d9bd3Smrg
776350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
777350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
778fd7d9bd3Smrgstatic void
779350952b9Smrgyy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
780fd7d9bd3Smrg#else
781fd7d9bd3Smrgstatic void
782fd7d9bd3Smrgyy_stack_print (bottom, top)
783350952b9Smrg    yytype_int16 *bottom;
784350952b9Smrg    yytype_int16 *top;
785fd7d9bd3Smrg#endif
786fd7d9bd3Smrg{
787fd7d9bd3Smrg  YYFPRINTF (stderr, "Stack now");
788350952b9Smrg  for (; bottom <= top; ++bottom)
789fd7d9bd3Smrg    YYFPRINTF (stderr, " %d", *bottom);
790fd7d9bd3Smrg  YYFPRINTF (stderr, "\n");
791fd7d9bd3Smrg}
792fd7d9bd3Smrg
793fd7d9bd3Smrg# define YY_STACK_PRINT(Bottom, Top)				\
794fd7d9bd3Smrgdo {								\
795fd7d9bd3Smrg  if (yydebug)							\
796fd7d9bd3Smrg    yy_stack_print ((Bottom), (Top));				\
797350952b9Smrg} while (YYID (0))
798fd7d9bd3Smrg
799fd7d9bd3Smrg
800fd7d9bd3Smrg/*------------------------------------------------.
801fd7d9bd3Smrg| Report that the YYRULE is going to be reduced.  |
802fd7d9bd3Smrg`------------------------------------------------*/
803fd7d9bd3Smrg
804350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
805350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
806fd7d9bd3Smrgstatic void
807350952b9Smrgyy_reduce_print (YYSTYPE *yyvsp, int yyrule)
808fd7d9bd3Smrg#else
809fd7d9bd3Smrgstatic void
810350952b9Smrgyy_reduce_print (yyvsp, yyrule)
811350952b9Smrg    YYSTYPE *yyvsp;
812fd7d9bd3Smrg    int yyrule;
813fd7d9bd3Smrg#endif
814fd7d9bd3Smrg{
815350952b9Smrg  int yynrhs = yyr2[yyrule];
816fd7d9bd3Smrg  int yyi;
817350952b9Smrg  unsigned long int yylno = yyrline[yyrule];
818350952b9Smrg  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
819350952b9Smrg	     yyrule - 1, yylno);
820350952b9Smrg  /* The symbols being reduced.  */
821350952b9Smrg  for (yyi = 0; yyi < yynrhs; yyi++)
822350952b9Smrg    {
823350952b9Smrg      fprintf (stderr, "   $%d = ", yyi + 1);
824350952b9Smrg      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
825350952b9Smrg		       &(yyvsp[(yyi + 1) - (yynrhs)])
826350952b9Smrg		       		       );
827350952b9Smrg      fprintf (stderr, "\n");
828350952b9Smrg    }
829fd7d9bd3Smrg}
830fd7d9bd3Smrg
831fd7d9bd3Smrg# define YY_REDUCE_PRINT(Rule)		\
832fd7d9bd3Smrgdo {					\
833fd7d9bd3Smrg  if (yydebug)				\
834350952b9Smrg    yy_reduce_print (yyvsp, Rule); \
835350952b9Smrg} while (YYID (0))
836fd7d9bd3Smrg
837fd7d9bd3Smrg/* Nonzero means print parse trace.  It is left uninitialized so that
838fd7d9bd3Smrg   multiple parsers can coexist.  */
839fd7d9bd3Smrgint yydebug;
840fd7d9bd3Smrg#else /* !YYDEBUG */
841fd7d9bd3Smrg# define YYDPRINTF(Args)
842350952b9Smrg# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
843fd7d9bd3Smrg# define YY_STACK_PRINT(Bottom, Top)
844fd7d9bd3Smrg# define YY_REDUCE_PRINT(Rule)
845fd7d9bd3Smrg#endif /* !YYDEBUG */
846fd7d9bd3Smrg
847fd7d9bd3Smrg
848fd7d9bd3Smrg/* YYINITDEPTH -- initial size of the parser's stacks.  */
849fd7d9bd3Smrg#ifndef	YYINITDEPTH
850fd7d9bd3Smrg# define YYINITDEPTH 200
851fd7d9bd3Smrg#endif
852fd7d9bd3Smrg
853fd7d9bd3Smrg/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
854fd7d9bd3Smrg   if the built-in stack extension method is used).
855fd7d9bd3Smrg
856fd7d9bd3Smrg   Do not make this value too large; the results are undefined if
857350952b9Smrg   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
858fd7d9bd3Smrg   evaluated with infinite-precision integer arithmetic.  */
859fd7d9bd3Smrg
860fd7d9bd3Smrg#ifndef YYMAXDEPTH
861fd7d9bd3Smrg# define YYMAXDEPTH 10000
862fd7d9bd3Smrg#endif
863fd7d9bd3Smrg
864fd7d9bd3Smrg
865fd7d9bd3Smrg
866fd7d9bd3Smrg#if YYERROR_VERBOSE
867fd7d9bd3Smrg
868fd7d9bd3Smrg# ifndef yystrlen
869350952b9Smrg#  if defined __GLIBC__ && defined _STRING_H
870fd7d9bd3Smrg#   define yystrlen strlen
871fd7d9bd3Smrg#  else
872fd7d9bd3Smrg/* Return the length of YYSTR.  */
873350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
874350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
875fd7d9bd3Smrgstatic YYSIZE_T
876fd7d9bd3Smrgyystrlen (const char *yystr)
877350952b9Smrg#else
878350952b9Smrgstatic YYSIZE_T
879fd7d9bd3Smrgyystrlen (yystr)
880350952b9Smrg    const char *yystr;
881350952b9Smrg#endif
882fd7d9bd3Smrg{
883350952b9Smrg  YYSIZE_T yylen;
884350952b9Smrg  for (yylen = 0; yystr[yylen]; yylen++)
885fd7d9bd3Smrg    continue;
886350952b9Smrg  return yylen;
887fd7d9bd3Smrg}
888fd7d9bd3Smrg#  endif
889fd7d9bd3Smrg# endif
890fd7d9bd3Smrg
891fd7d9bd3Smrg# ifndef yystpcpy
892350952b9Smrg#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
893fd7d9bd3Smrg#   define yystpcpy stpcpy
894fd7d9bd3Smrg#  else
895fd7d9bd3Smrg/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
896fd7d9bd3Smrg   YYDEST.  */
897350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
898350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
899fd7d9bd3Smrgstatic char *
900fd7d9bd3Smrgyystpcpy (char *yydest, const char *yysrc)
901350952b9Smrg#else
902350952b9Smrgstatic char *
903fd7d9bd3Smrgyystpcpy (yydest, yysrc)
904350952b9Smrg    char *yydest;
905350952b9Smrg    const char *yysrc;
906350952b9Smrg#endif
907fd7d9bd3Smrg{
908350952b9Smrg  char *yyd = yydest;
909350952b9Smrg  const char *yys = yysrc;
910fd7d9bd3Smrg
911fd7d9bd3Smrg  while ((*yyd++ = *yys++) != '\0')
912fd7d9bd3Smrg    continue;
913fd7d9bd3Smrg
914fd7d9bd3Smrg  return yyd - 1;
915fd7d9bd3Smrg}
916fd7d9bd3Smrg#  endif
917fd7d9bd3Smrg# endif
918fd7d9bd3Smrg
919350952b9Smrg# ifndef yytnamerr
920350952b9Smrg/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
921350952b9Smrg   quotes and backslashes, so that it's suitable for yyerror.  The
922350952b9Smrg   heuristic is that double-quoting is unnecessary unless the string
923350952b9Smrg   contains an apostrophe, a comma, or backslash (other than
924350952b9Smrg   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
925350952b9Smrg   null, do not copy; instead, return the length of what the result
926350952b9Smrg   would have been.  */
927350952b9Smrgstatic YYSIZE_T
928350952b9Smrgyytnamerr (char *yyres, const char *yystr)
929350952b9Smrg{
930350952b9Smrg  if (*yystr == '"')
931350952b9Smrg    {
932350952b9Smrg      YYSIZE_T yyn = 0;
933350952b9Smrg      char const *yyp = yystr;
934350952b9Smrg
935350952b9Smrg      for (;;)
936350952b9Smrg	switch (*++yyp)
937350952b9Smrg	  {
938350952b9Smrg	  case '\'':
939350952b9Smrg	  case ',':
940350952b9Smrg	    goto do_not_strip_quotes;
941350952b9Smrg
942350952b9Smrg	  case '\\':
943350952b9Smrg	    if (*++yyp != '\\')
944350952b9Smrg	      goto do_not_strip_quotes;
945350952b9Smrg	    /* Fall through.  */
946350952b9Smrg	  default:
947350952b9Smrg	    if (yyres)
948350952b9Smrg	      yyres[yyn] = *yyp;
949350952b9Smrg	    yyn++;
950350952b9Smrg	    break;
951350952b9Smrg
952350952b9Smrg	  case '"':
953350952b9Smrg	    if (yyres)
954350952b9Smrg	      yyres[yyn] = '\0';
955350952b9Smrg	    return yyn;
956350952b9Smrg	  }
957350952b9Smrg    do_not_strip_quotes: ;
958350952b9Smrg    }
959fd7d9bd3Smrg
960350952b9Smrg  if (! yyres)
961350952b9Smrg    return yystrlen (yystr);
962fd7d9bd3Smrg
963350952b9Smrg  return yystpcpy (yyres, yystr) - yyres;
964350952b9Smrg}
965350952b9Smrg# endif
966fd7d9bd3Smrg
967350952b9Smrg/* Copy into YYRESULT an error message about the unexpected token
968350952b9Smrg   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
969350952b9Smrg   including the terminating null byte.  If YYRESULT is null, do not
970350952b9Smrg   copy anything; just return the number of bytes that would be
971350952b9Smrg   copied.  As a special case, return 0 if an ordinary "syntax error"
972350952b9Smrg   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
973350952b9Smrg   size calculation.  */
974350952b9Smrgstatic YYSIZE_T
975350952b9Smrgyysyntax_error (char *yyresult, int yystate, int yychar)
976fd7d9bd3Smrg{
977350952b9Smrg  int yyn = yypact[yystate];
978fd7d9bd3Smrg
979350952b9Smrg  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
980350952b9Smrg    return 0;
981fd7d9bd3Smrg  else
982fd7d9bd3Smrg    {
983350952b9Smrg      int yytype = YYTRANSLATE (yychar);
984350952b9Smrg      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
985350952b9Smrg      YYSIZE_T yysize = yysize0;
986350952b9Smrg      YYSIZE_T yysize1;
987350952b9Smrg      int yysize_overflow = 0;
988350952b9Smrg      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
989350952b9Smrg      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
990350952b9Smrg      int yyx;
991350952b9Smrg
992350952b9Smrg# if 0
993350952b9Smrg      /* This is so xgettext sees the translatable formats that are
994350952b9Smrg	 constructed on the fly.  */
995350952b9Smrg      YY_("syntax error, unexpected %s");
996350952b9Smrg      YY_("syntax error, unexpected %s, expecting %s");
997350952b9Smrg      YY_("syntax error, unexpected %s, expecting %s or %s");
998350952b9Smrg      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
999350952b9Smrg      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1000350952b9Smrg# endif
1001350952b9Smrg      char *yyfmt;
1002350952b9Smrg      char const *yyf;
1003350952b9Smrg      static char const yyunexpected[] = "syntax error, unexpected %s";
1004350952b9Smrg      static char const yyexpecting[] = ", expecting %s";
1005350952b9Smrg      static char const yyor[] = " or %s";
1006350952b9Smrg      char yyformat[sizeof yyunexpected
1007350952b9Smrg		    + sizeof yyexpecting - 1
1008350952b9Smrg		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1009350952b9Smrg		       * (sizeof yyor - 1))];
1010350952b9Smrg      char const *yyprefix = yyexpecting;
1011350952b9Smrg
1012350952b9Smrg      /* Start YYX at -YYN if negative to avoid negative indexes in
1013350952b9Smrg	 YYCHECK.  */
1014350952b9Smrg      int yyxbegin = yyn < 0 ? -yyn : 0;
1015350952b9Smrg
1016350952b9Smrg      /* Stay within bounds of both yycheck and yytname.  */
1017350952b9Smrg      int yychecklim = YYLAST - yyn + 1;
1018350952b9Smrg      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1019350952b9Smrg      int yycount = 1;
1020350952b9Smrg
1021350952b9Smrg      yyarg[0] = yytname[yytype];
1022350952b9Smrg      yyfmt = yystpcpy (yyformat, yyunexpected);
1023350952b9Smrg
1024350952b9Smrg      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1025350952b9Smrg	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1026350952b9Smrg	  {
1027350952b9Smrg	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1028350952b9Smrg	      {
1029350952b9Smrg		yycount = 1;
1030350952b9Smrg		yysize = yysize0;
1031350952b9Smrg		yyformat[sizeof yyunexpected - 1] = '\0';
1032350952b9Smrg		break;
1033350952b9Smrg	      }
1034350952b9Smrg	    yyarg[yycount++] = yytname[yyx];
1035350952b9Smrg	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1036350952b9Smrg	    yysize_overflow |= (yysize1 < yysize);
1037350952b9Smrg	    yysize = yysize1;
1038350952b9Smrg	    yyfmt = yystpcpy (yyfmt, yyprefix);
1039350952b9Smrg	    yyprefix = yyor;
1040350952b9Smrg	  }
1041350952b9Smrg
1042350952b9Smrg      yyf = YY_(yyformat);
1043350952b9Smrg      yysize1 = yysize + yystrlen (yyf);
1044350952b9Smrg      yysize_overflow |= (yysize1 < yysize);
1045350952b9Smrg      yysize = yysize1;
1046350952b9Smrg
1047350952b9Smrg      if (yysize_overflow)
1048350952b9Smrg	return YYSIZE_MAXIMUM;
1049350952b9Smrg
1050350952b9Smrg      if (yyresult)
1051350952b9Smrg	{
1052350952b9Smrg	  /* Avoid sprintf, as that infringes on the user's name space.
1053350952b9Smrg	     Don't have undefined behavior even if the translation
1054350952b9Smrg	     produced a string with the wrong number of "%s"s.  */
1055350952b9Smrg	  char *yyp = yyresult;
1056350952b9Smrg	  int yyi = 0;
1057350952b9Smrg	  while ((*yyp = *yyf) != '\0')
1058350952b9Smrg	    {
1059350952b9Smrg	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1060350952b9Smrg		{
1061350952b9Smrg		  yyp += yytnamerr (yyp, yyarg[yyi++]);
1062350952b9Smrg		  yyf += 2;
1063350952b9Smrg		}
1064350952b9Smrg	      else
1065350952b9Smrg		{
1066350952b9Smrg		  yyp++;
1067350952b9Smrg		  yyf++;
1068350952b9Smrg		}
1069350952b9Smrg	    }
1070350952b9Smrg	}
1071350952b9Smrg      return yysize;
1072fd7d9bd3Smrg    }
1073fd7d9bd3Smrg}
1074350952b9Smrg#endif /* YYERROR_VERBOSE */
1075350952b9Smrg
1076fd7d9bd3Smrg
1077fd7d9bd3Smrg/*-----------------------------------------------.
1078fd7d9bd3Smrg| Release the memory associated to this symbol.  |
1079fd7d9bd3Smrg`-----------------------------------------------*/
1080fd7d9bd3Smrg
1081350952b9Smrg/*ARGSUSED*/
1082350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1083350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
1084fd7d9bd3Smrgstatic void
1085350952b9Smrgyydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1086fd7d9bd3Smrg#else
1087fd7d9bd3Smrgstatic void
1088350952b9Smrgyydestruct (yymsg, yytype, yyvaluep)
1089350952b9Smrg    const char *yymsg;
1090fd7d9bd3Smrg    int yytype;
1091fd7d9bd3Smrg    YYSTYPE *yyvaluep;
1092fd7d9bd3Smrg#endif
1093fd7d9bd3Smrg{
1094350952b9Smrg  YYUSE (yyvaluep);
1095350952b9Smrg
1096350952b9Smrg  if (!yymsg)
1097350952b9Smrg    yymsg = "Deleting";
1098350952b9Smrg  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1099fd7d9bd3Smrg
1100fd7d9bd3Smrg  switch (yytype)
1101fd7d9bd3Smrg    {
1102fd7d9bd3Smrg
1103fd7d9bd3Smrg      default:
1104350952b9Smrg	break;
1105fd7d9bd3Smrg    }
1106fd7d9bd3Smrg}
1107fd7d9bd3Smrg
1108fd7d9bd3Smrg
1109fd7d9bd3Smrg/* Prevent warnings from -Wmissing-prototypes.  */
1110fd7d9bd3Smrg
1111fd7d9bd3Smrg#ifdef YYPARSE_PARAM
1112350952b9Smrg#if defined __STDC__ || defined __cplusplus
1113fd7d9bd3Smrgint yyparse (void *YYPARSE_PARAM);
1114350952b9Smrg#else
1115fd7d9bd3Smrgint yyparse ();
1116350952b9Smrg#endif
1117fd7d9bd3Smrg#else /* ! YYPARSE_PARAM */
1118350952b9Smrg#if defined __STDC__ || defined __cplusplus
1119fd7d9bd3Smrgint yyparse (void);
1120fd7d9bd3Smrg#else
1121fd7d9bd3Smrgint yyparse ();
1122fd7d9bd3Smrg#endif
1123fd7d9bd3Smrg#endif /* ! YYPARSE_PARAM */
1124fd7d9bd3Smrg
1125fd7d9bd3Smrg
1126fd7d9bd3Smrg
1127350952b9Smrg/* The look-ahead symbol.  */
1128fd7d9bd3Smrgint yychar;
1129fd7d9bd3Smrg
1130350952b9Smrg/* The semantic value of the look-ahead symbol.  */
1131fd7d9bd3SmrgYYSTYPE yylval;
1132fd7d9bd3Smrg
1133fd7d9bd3Smrg/* Number of syntax errors so far.  */
1134fd7d9bd3Smrgint yynerrs;
1135fd7d9bd3Smrg
1136fd7d9bd3Smrg
1137fd7d9bd3Smrg
1138fd7d9bd3Smrg/*----------.
1139fd7d9bd3Smrg| yyparse.  |
1140fd7d9bd3Smrg`----------*/
1141fd7d9bd3Smrg
1142fd7d9bd3Smrg#ifdef YYPARSE_PARAM
1143350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1144350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
1145350952b9Smrgint
1146350952b9Smrgyyparse (void *YYPARSE_PARAM)
1147350952b9Smrg#else
1148350952b9Smrgint
1149350952b9Smrgyyparse (YYPARSE_PARAM)
1150350952b9Smrg    void *YYPARSE_PARAM;
1151350952b9Smrg#endif
1152fd7d9bd3Smrg#else /* ! YYPARSE_PARAM */
1153350952b9Smrg#if (defined __STDC__ || defined __C99__FUNC__ \
1154350952b9Smrg     || defined __cplusplus || defined _MSC_VER)
1155fd7d9bd3Smrgint
1156fd7d9bd3Smrgyyparse (void)
1157fd7d9bd3Smrg#else
1158fd7d9bd3Smrgint
1159fd7d9bd3Smrgyyparse ()
1160fd7d9bd3Smrg
1161fd7d9bd3Smrg#endif
1162fd7d9bd3Smrg#endif
1163fd7d9bd3Smrg{
1164fd7d9bd3Smrg
1165350952b9Smrg  int yystate;
1166350952b9Smrg  int yyn;
1167fd7d9bd3Smrg  int yyresult;
1168fd7d9bd3Smrg  /* Number of tokens to shift before error messages enabled.  */
1169fd7d9bd3Smrg  int yyerrstatus;
1170350952b9Smrg  /* Look-ahead token as an internal (translated) token number.  */
1171fd7d9bd3Smrg  int yytoken = 0;
1172350952b9Smrg#if YYERROR_VERBOSE
1173350952b9Smrg  /* Buffer for error messages, and its allocated size.  */
1174350952b9Smrg  char yymsgbuf[128];
1175350952b9Smrg  char *yymsg = yymsgbuf;
1176350952b9Smrg  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1177350952b9Smrg#endif
1178fd7d9bd3Smrg
1179fd7d9bd3Smrg  /* Three stacks and their tools:
1180fd7d9bd3Smrg     `yyss': related to states,
1181fd7d9bd3Smrg     `yyvs': related to semantic values,
1182fd7d9bd3Smrg     `yyls': related to locations.
1183fd7d9bd3Smrg
1184fd7d9bd3Smrg     Refer to the stacks thru separate pointers, to allow yyoverflow
1185fd7d9bd3Smrg     to reallocate them elsewhere.  */
1186fd7d9bd3Smrg
1187fd7d9bd3Smrg  /* The state stack.  */
1188350952b9Smrg  yytype_int16 yyssa[YYINITDEPTH];
1189350952b9Smrg  yytype_int16 *yyss = yyssa;
1190350952b9Smrg  yytype_int16 *yyssp;
1191fd7d9bd3Smrg
1192fd7d9bd3Smrg  /* The semantic value stack.  */
1193fd7d9bd3Smrg  YYSTYPE yyvsa[YYINITDEPTH];
1194fd7d9bd3Smrg  YYSTYPE *yyvs = yyvsa;
1195350952b9Smrg  YYSTYPE *yyvsp;
1196fd7d9bd3Smrg
1197fd7d9bd3Smrg
1198fd7d9bd3Smrg
1199350952b9Smrg#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1200fd7d9bd3Smrg
1201fd7d9bd3Smrg  YYSIZE_T yystacksize = YYINITDEPTH;
1202fd7d9bd3Smrg
1203fd7d9bd3Smrg  /* The variables used to return semantic value and location from the
1204fd7d9bd3Smrg     action routines.  */
1205fd7d9bd3Smrg  YYSTYPE yyval;
1206fd7d9bd3Smrg
1207fd7d9bd3Smrg
1208350952b9Smrg  /* The number of symbols on the RHS of the reduced rule.
1209350952b9Smrg     Keep to zero when no symbol should be popped.  */
1210350952b9Smrg  int yylen = 0;
1211fd7d9bd3Smrg
1212fd7d9bd3Smrg  YYDPRINTF ((stderr, "Starting parse\n"));
1213fd7d9bd3Smrg
1214fd7d9bd3Smrg  yystate = 0;
1215fd7d9bd3Smrg  yyerrstatus = 0;
1216fd7d9bd3Smrg  yynerrs = 0;
1217fd7d9bd3Smrg  yychar = YYEMPTY;		/* Cause a token to be read.  */
1218fd7d9bd3Smrg
1219fd7d9bd3Smrg  /* Initialize stack pointers.
1220fd7d9bd3Smrg     Waste one element of value and location stack
1221fd7d9bd3Smrg     so that they stay on the same level as the state stack.
1222fd7d9bd3Smrg     The wasted elements are never initialized.  */
1223fd7d9bd3Smrg
1224fd7d9bd3Smrg  yyssp = yyss;
1225fd7d9bd3Smrg  yyvsp = yyvs;
1226fd7d9bd3Smrg
1227fd7d9bd3Smrg  goto yysetstate;
1228fd7d9bd3Smrg
1229fd7d9bd3Smrg/*------------------------------------------------------------.
1230fd7d9bd3Smrg| yynewstate -- Push a new state, which is found in yystate.  |
1231fd7d9bd3Smrg`------------------------------------------------------------*/
1232fd7d9bd3Smrg yynewstate:
1233fd7d9bd3Smrg  /* In all cases, when you get here, the value and location stacks
1234350952b9Smrg     have just been pushed.  So pushing a state here evens the stacks.  */
1235fd7d9bd3Smrg  yyssp++;
1236fd7d9bd3Smrg
1237fd7d9bd3Smrg yysetstate:
1238fd7d9bd3Smrg  *yyssp = yystate;
1239fd7d9bd3Smrg
1240fd7d9bd3Smrg  if (yyss + yystacksize - 1 <= yyssp)
1241fd7d9bd3Smrg    {
1242fd7d9bd3Smrg      /* Get the current used size of the three stacks, in elements.  */
1243fd7d9bd3Smrg      YYSIZE_T yysize = yyssp - yyss + 1;
1244fd7d9bd3Smrg
1245fd7d9bd3Smrg#ifdef yyoverflow
1246fd7d9bd3Smrg      {
1247350952b9Smrg	/* Give user a chance to reallocate the stack.  Use copies of
1248fd7d9bd3Smrg	   these so that the &'s don't force the real ones into
1249fd7d9bd3Smrg	   memory.  */
1250fd7d9bd3Smrg	YYSTYPE *yyvs1 = yyvs;
1251350952b9Smrg	yytype_int16 *yyss1 = yyss;
1252fd7d9bd3Smrg
1253fd7d9bd3Smrg
1254fd7d9bd3Smrg	/* Each stack pointer address is followed by the size of the
1255fd7d9bd3Smrg	   data in use in that stack, in bytes.  This used to be a
1256fd7d9bd3Smrg	   conditional around just the two extra args, but that might
1257fd7d9bd3Smrg	   be undefined if yyoverflow is a macro.  */
1258350952b9Smrg	yyoverflow (YY_("memory exhausted"),
1259fd7d9bd3Smrg		    &yyss1, yysize * sizeof (*yyssp),
1260fd7d9bd3Smrg		    &yyvs1, yysize * sizeof (*yyvsp),
1261fd7d9bd3Smrg
1262fd7d9bd3Smrg		    &yystacksize);
1263fd7d9bd3Smrg
1264fd7d9bd3Smrg	yyss = yyss1;
1265fd7d9bd3Smrg	yyvs = yyvs1;
1266fd7d9bd3Smrg      }
1267fd7d9bd3Smrg#else /* no yyoverflow */
1268fd7d9bd3Smrg# ifndef YYSTACK_RELOCATE
1269350952b9Smrg      goto yyexhaustedlab;
1270fd7d9bd3Smrg# else
1271fd7d9bd3Smrg      /* Extend the stack our own way.  */
1272fd7d9bd3Smrg      if (YYMAXDEPTH <= yystacksize)
1273350952b9Smrg	goto yyexhaustedlab;
1274fd7d9bd3Smrg      yystacksize *= 2;
1275fd7d9bd3Smrg      if (YYMAXDEPTH < yystacksize)
1276fd7d9bd3Smrg	yystacksize = YYMAXDEPTH;
1277fd7d9bd3Smrg
1278fd7d9bd3Smrg      {
1279350952b9Smrg	yytype_int16 *yyss1 = yyss;
1280fd7d9bd3Smrg	union yyalloc *yyptr =
1281fd7d9bd3Smrg	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1282fd7d9bd3Smrg	if (! yyptr)
1283350952b9Smrg	  goto yyexhaustedlab;
1284fd7d9bd3Smrg	YYSTACK_RELOCATE (yyss);
1285fd7d9bd3Smrg	YYSTACK_RELOCATE (yyvs);
1286fd7d9bd3Smrg
1287fd7d9bd3Smrg#  undef YYSTACK_RELOCATE
1288fd7d9bd3Smrg	if (yyss1 != yyssa)
1289fd7d9bd3Smrg	  YYSTACK_FREE (yyss1);
1290fd7d9bd3Smrg      }
1291fd7d9bd3Smrg# endif
1292fd7d9bd3Smrg#endif /* no yyoverflow */
1293fd7d9bd3Smrg
1294fd7d9bd3Smrg      yyssp = yyss + yysize - 1;
1295fd7d9bd3Smrg      yyvsp = yyvs + yysize - 1;
1296fd7d9bd3Smrg
1297fd7d9bd3Smrg
1298fd7d9bd3Smrg      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1299fd7d9bd3Smrg		  (unsigned long int) yystacksize));
1300fd7d9bd3Smrg
1301fd7d9bd3Smrg      if (yyss + yystacksize - 1 <= yyssp)
1302fd7d9bd3Smrg	YYABORT;
1303fd7d9bd3Smrg    }
1304fd7d9bd3Smrg
1305fd7d9bd3Smrg  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1306fd7d9bd3Smrg
1307fd7d9bd3Smrg  goto yybackup;
1308fd7d9bd3Smrg
1309fd7d9bd3Smrg/*-----------.
1310fd7d9bd3Smrg| yybackup.  |
1311fd7d9bd3Smrg`-----------*/
1312fd7d9bd3Smrgyybackup:
1313fd7d9bd3Smrg
1314350952b9Smrg  /* Do appropriate processing given the current state.  Read a
1315350952b9Smrg     look-ahead token if we need one and don't already have one.  */
1316fd7d9bd3Smrg
1317350952b9Smrg  /* First try to decide what to do without reference to look-ahead token.  */
1318fd7d9bd3Smrg  yyn = yypact[yystate];
1319fd7d9bd3Smrg  if (yyn == YYPACT_NINF)
1320fd7d9bd3Smrg    goto yydefault;
1321fd7d9bd3Smrg
1322350952b9Smrg  /* Not known => get a look-ahead token if don't already have one.  */
1323fd7d9bd3Smrg
1324350952b9Smrg  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
1325fd7d9bd3Smrg  if (yychar == YYEMPTY)
1326fd7d9bd3Smrg    {
1327fd7d9bd3Smrg      YYDPRINTF ((stderr, "Reading a token: "));
1328fd7d9bd3Smrg      yychar = YYLEX;
1329fd7d9bd3Smrg    }
1330fd7d9bd3Smrg
1331fd7d9bd3Smrg  if (yychar <= YYEOF)
1332fd7d9bd3Smrg    {
1333fd7d9bd3Smrg      yychar = yytoken = YYEOF;
1334fd7d9bd3Smrg      YYDPRINTF ((stderr, "Now at end of input.\n"));
1335fd7d9bd3Smrg    }
1336fd7d9bd3Smrg  else
1337fd7d9bd3Smrg    {
1338fd7d9bd3Smrg      yytoken = YYTRANSLATE (yychar);
1339350952b9Smrg      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1340fd7d9bd3Smrg    }
1341fd7d9bd3Smrg
1342fd7d9bd3Smrg  /* If the proper action on seeing token YYTOKEN is to reduce or to
1343fd7d9bd3Smrg     detect an error, take that action.  */
1344fd7d9bd3Smrg  yyn += yytoken;
1345fd7d9bd3Smrg  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1346fd7d9bd3Smrg    goto yydefault;
1347fd7d9bd3Smrg  yyn = yytable[yyn];
1348fd7d9bd3Smrg  if (yyn <= 0)
1349fd7d9bd3Smrg    {
1350fd7d9bd3Smrg      if (yyn == 0 || yyn == YYTABLE_NINF)
1351fd7d9bd3Smrg	goto yyerrlab;
1352fd7d9bd3Smrg      yyn = -yyn;
1353fd7d9bd3Smrg      goto yyreduce;
1354fd7d9bd3Smrg    }
1355fd7d9bd3Smrg
1356fd7d9bd3Smrg  if (yyn == YYFINAL)
1357fd7d9bd3Smrg    YYACCEPT;
1358fd7d9bd3Smrg
1359fd7d9bd3Smrg  /* Count tokens shifted since error; after three, turn off error
1360fd7d9bd3Smrg     status.  */
1361fd7d9bd3Smrg  if (yyerrstatus)
1362fd7d9bd3Smrg    yyerrstatus--;
1363fd7d9bd3Smrg
1364350952b9Smrg  /* Shift the look-ahead token.  */
1365350952b9Smrg  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1366350952b9Smrg
1367350952b9Smrg  /* Discard the shifted token unless it is eof.  */
1368350952b9Smrg  if (yychar != YYEOF)
1369350952b9Smrg    yychar = YYEMPTY;
1370350952b9Smrg
1371fd7d9bd3Smrg  yystate = yyn;
1372350952b9Smrg  *++yyvsp = yylval;
1373350952b9Smrg
1374fd7d9bd3Smrg  goto yynewstate;
1375fd7d9bd3Smrg
1376fd7d9bd3Smrg
1377fd7d9bd3Smrg/*-----------------------------------------------------------.
1378fd7d9bd3Smrg| yydefault -- do the default action for the current state.  |
1379fd7d9bd3Smrg`-----------------------------------------------------------*/
1380fd7d9bd3Smrgyydefault:
1381fd7d9bd3Smrg  yyn = yydefact[yystate];
1382fd7d9bd3Smrg  if (yyn == 0)
1383fd7d9bd3Smrg    goto yyerrlab;
1384fd7d9bd3Smrg  goto yyreduce;
1385fd7d9bd3Smrg
1386fd7d9bd3Smrg
1387fd7d9bd3Smrg/*-----------------------------.
1388fd7d9bd3Smrg| yyreduce -- Do a reduction.  |
1389fd7d9bd3Smrg`-----------------------------*/
1390fd7d9bd3Smrgyyreduce:
1391fd7d9bd3Smrg  /* yyn is the number of a rule to reduce with.  */
1392fd7d9bd3Smrg  yylen = yyr2[yyn];
1393fd7d9bd3Smrg
1394fd7d9bd3Smrg  /* If YYLEN is nonzero, implement the default value of the action:
1395fd7d9bd3Smrg     `$$ = $1'.
1396fd7d9bd3Smrg
1397fd7d9bd3Smrg     Otherwise, the following line sets YYVAL to garbage.
1398fd7d9bd3Smrg     This behavior is undocumented and Bison
1399fd7d9bd3Smrg     users should not rely upon it.  Assigning to YYVAL
1400fd7d9bd3Smrg     unconditionally makes the parser a bit smaller, and it avoids a
1401fd7d9bd3Smrg     GCC warning that YYVAL may be used uninitialized.  */
1402fd7d9bd3Smrg  yyval = yyvsp[1-yylen];
1403fd7d9bd3Smrg
1404fd7d9bd3Smrg
1405fd7d9bd3Smrg  YY_REDUCE_PRINT (yyn);
1406fd7d9bd3Smrg  switch (yyn)
1407fd7d9bd3Smrg    {
1408fd7d9bd3Smrg        case 7:
1409fd7d9bd3Smrg#line 51 "gram.y"
1410fd7d9bd3Smrg    { run_test(); }
1411fd7d9bd3Smrg    break;
1412fd7d9bd3Smrg
1413fd7d9bd3Smrg  case 8:
1414fd7d9bd3Smrg#line 53 "gram.y"
1415350952b9Smrg    { change_test ((yyvsp[(2) - (2)].num), TRUE); }
1416fd7d9bd3Smrg    break;
1417fd7d9bd3Smrg
1418fd7d9bd3Smrg  case 9:
1419fd7d9bd3Smrg#line 55 "gram.y"
1420350952b9Smrg    { GC_change_function ((yyvsp[(2) - (2)].num), TRUE); }
1421fd7d9bd3Smrg    break;
1422fd7d9bd3Smrg
1423fd7d9bd3Smrg  case 10:
1424fd7d9bd3Smrg#line 57 "gram.y"
1425350952b9Smrg    { GC_change_linestyle ((yyvsp[(2) - (2)].num), TRUE); }
1426fd7d9bd3Smrg    break;
1427fd7d9bd3Smrg
1428fd7d9bd3Smrg  case 11:
1429fd7d9bd3Smrg#line 59 "gram.y"
1430fd7d9bd3Smrg    { GC_change_linestyle (LineSolid, TRUE); }
1431fd7d9bd3Smrg    break;
1432fd7d9bd3Smrg
1433fd7d9bd3Smrg  case 12:
1434fd7d9bd3Smrg#line 61 "gram.y"
1435350952b9Smrg    { GC_change_capstyle ((yyvsp[(2) - (2)].num), TRUE); }
1436fd7d9bd3Smrg    break;
1437fd7d9bd3Smrg
1438fd7d9bd3Smrg  case 13:
1439fd7d9bd3Smrg#line 63 "gram.y"
1440fd7d9bd3Smrg    { GC_change_capstyle (CapRound, TRUE); }
1441fd7d9bd3Smrg    break;
1442fd7d9bd3Smrg
1443fd7d9bd3Smrg  case 14:
1444fd7d9bd3Smrg#line 65 "gram.y"
1445350952b9Smrg    { GC_change_joinstyle ((yyvsp[(2) - (2)].num), TRUE); }
1446fd7d9bd3Smrg    break;
1447fd7d9bd3Smrg
1448fd7d9bd3Smrg  case 15:
1449fd7d9bd3Smrg#line 67 "gram.y"
1450fd7d9bd3Smrg    { GC_change_joinstyle (JoinRound, TRUE); }
1451fd7d9bd3Smrg    break;
1452fd7d9bd3Smrg
1453fd7d9bd3Smrg  case 16:
1454fd7d9bd3Smrg#line 69 "gram.y"
1455350952b9Smrg    { GC_change_fillstyle ((yyvsp[(2) - (2)].num), TRUE); }
1456fd7d9bd3Smrg    break;
1457fd7d9bd3Smrg
1458fd7d9bd3Smrg  case 17:
1459fd7d9bd3Smrg#line 71 "gram.y"
1460fd7d9bd3Smrg    { GC_change_fillstyle (FillSolid, TRUE); }
1461fd7d9bd3Smrg    break;
1462fd7d9bd3Smrg
1463fd7d9bd3Smrg  case 18:
1464fd7d9bd3Smrg#line 73 "gram.y"
1465350952b9Smrg    { GC_change_fillrule ((yyvsp[(2) - (2)].num), TRUE); }
1466fd7d9bd3Smrg    break;
1467fd7d9bd3Smrg
1468fd7d9bd3Smrg  case 19:
1469fd7d9bd3Smrg#line 75 "gram.y"
1470350952b9Smrg    { GC_change_arcmode ((yyvsp[(2) - (2)].num), TRUE); }
1471fd7d9bd3Smrg    break;
1472fd7d9bd3Smrg
1473fd7d9bd3Smrg  case 20:
1474fd7d9bd3Smrg#line 77 "gram.y"
1475350952b9Smrg    { GC_change_foreground ((yyvsp[(2) - (2)].num), TRUE); }
1476fd7d9bd3Smrg    break;
1477fd7d9bd3Smrg
1478fd7d9bd3Smrg  case 21:
1479fd7d9bd3Smrg#line 79 "gram.y"
1480350952b9Smrg    { GC_change_background ((yyvsp[(2) - (2)].num), TRUE); }
1481fd7d9bd3Smrg    break;
1482fd7d9bd3Smrg
1483fd7d9bd3Smrg  case 22:
1484fd7d9bd3Smrg#line 81 "gram.y"
1485350952b9Smrg    { GC_change_linewidth ((yyvsp[(2) - (2)].num), TRUE); }
1486fd7d9bd3Smrg    break;
1487fd7d9bd3Smrg
1488fd7d9bd3Smrg  case 23:
1489fd7d9bd3Smrg#line 83 "gram.y"
1490350952b9Smrg    { GC_change_planemask ((yyvsp[(2) - (2)].num), TRUE); }
1491fd7d9bd3Smrg    break;
1492fd7d9bd3Smrg
1493fd7d9bd3Smrg  case 24:
1494fd7d9bd3Smrg#line 85 "gram.y"
1495350952b9Smrg    { GC_change_dashlist ((yyvsp[(2) - (2)].num), TRUE); }
1496fd7d9bd3Smrg    break;
1497fd7d9bd3Smrg
1498fd7d9bd3Smrg  case 25:
1499fd7d9bd3Smrg#line 87 "gram.y"
1500350952b9Smrg    { GC_change_font ((yyvsp[(2) - (2)].ptr), TRUE); }
1501fd7d9bd3Smrg    break;
1502fd7d9bd3Smrg
1503fd7d9bd3Smrg  case 26:
1504fd7d9bd3Smrg#line 89 "gram.y"
1505350952b9Smrg    { change_percent ((yyvsp[(2) - (2)].num), TRUE); }
1506fd7d9bd3Smrg    break;
1507fd7d9bd3Smrg
1508fd7d9bd3Smrg
1509350952b9Smrg/* Line 1267 of yacc.c.  */
1510350952b9Smrg#line 1511 "gram.c"
1511350952b9Smrg      default: break;
1512fd7d9bd3Smrg    }
1513350952b9Smrg  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1514fd7d9bd3Smrg
1515350952b9Smrg  YYPOPSTACK (yylen);
1516350952b9Smrg  yylen = 0;
1517fd7d9bd3Smrg  YY_STACK_PRINT (yyss, yyssp);
1518fd7d9bd3Smrg
1519fd7d9bd3Smrg  *++yyvsp = yyval;
1520fd7d9bd3Smrg
1521fd7d9bd3Smrg
1522fd7d9bd3Smrg  /* Now `shift' the result of the reduction.  Determine what state
1523fd7d9bd3Smrg     that goes to, based on the state we popped back to and the rule
1524fd7d9bd3Smrg     number reduced by.  */
1525fd7d9bd3Smrg
1526fd7d9bd3Smrg  yyn = yyr1[yyn];
1527fd7d9bd3Smrg
1528fd7d9bd3Smrg  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
1529fd7d9bd3Smrg  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1530fd7d9bd3Smrg    yystate = yytable[yystate];
1531fd7d9bd3Smrg  else
1532fd7d9bd3Smrg    yystate = yydefgoto[yyn - YYNTOKENS];
1533fd7d9bd3Smrg
1534fd7d9bd3Smrg  goto yynewstate;
1535fd7d9bd3Smrg
1536fd7d9bd3Smrg
1537fd7d9bd3Smrg/*------------------------------------.
1538fd7d9bd3Smrg| yyerrlab -- here on detecting error |
1539fd7d9bd3Smrg`------------------------------------*/
1540fd7d9bd3Smrgyyerrlab:
1541fd7d9bd3Smrg  /* If not already recovering from an error, report this error.  */
1542fd7d9bd3Smrg  if (!yyerrstatus)
1543fd7d9bd3Smrg    {
1544fd7d9bd3Smrg      ++yynerrs;
1545350952b9Smrg#if ! YYERROR_VERBOSE
1546350952b9Smrg      yyerror (YY_("syntax error"));
1547350952b9Smrg#else
1548350952b9Smrg      {
1549350952b9Smrg	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
1550350952b9Smrg	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
1551350952b9Smrg	  {
1552350952b9Smrg	    YYSIZE_T yyalloc = 2 * yysize;
1553350952b9Smrg	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
1554350952b9Smrg	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
1555350952b9Smrg	    if (yymsg != yymsgbuf)
1556350952b9Smrg	      YYSTACK_FREE (yymsg);
1557350952b9Smrg	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
1558350952b9Smrg	    if (yymsg)
1559350952b9Smrg	      yymsg_alloc = yyalloc;
1560350952b9Smrg	    else
1561fd7d9bd3Smrg	      {
1562350952b9Smrg		yymsg = yymsgbuf;
1563350952b9Smrg		yymsg_alloc = sizeof yymsgbuf;
1564fd7d9bd3Smrg	      }
1565350952b9Smrg	  }
1566350952b9Smrg
1567350952b9Smrg	if (0 < yysize && yysize <= yymsg_alloc)
1568350952b9Smrg	  {
1569350952b9Smrg	    (void) yysyntax_error (yymsg, yystate, yychar);
1570350952b9Smrg	    yyerror (yymsg);
1571350952b9Smrg	  }
1572350952b9Smrg	else
1573350952b9Smrg	  {
1574350952b9Smrg	    yyerror (YY_("syntax error"));
1575350952b9Smrg	    if (yysize != 0)
1576350952b9Smrg	      goto yyexhaustedlab;
1577350952b9Smrg	  }
1578350952b9Smrg      }
1579350952b9Smrg#endif
1580fd7d9bd3Smrg    }
1581fd7d9bd3Smrg
1582fd7d9bd3Smrg
1583fd7d9bd3Smrg
1584fd7d9bd3Smrg  if (yyerrstatus == 3)
1585fd7d9bd3Smrg    {
1586350952b9Smrg      /* If just tried and failed to reuse look-ahead token after an
1587fd7d9bd3Smrg	 error, discard it.  */
1588fd7d9bd3Smrg
1589fd7d9bd3Smrg      if (yychar <= YYEOF)
1590350952b9Smrg	{
1591350952b9Smrg	  /* Return failure if at end of input.  */
1592fd7d9bd3Smrg	  if (yychar == YYEOF)
1593350952b9Smrg	    YYABORT;
1594350952b9Smrg	}
1595fd7d9bd3Smrg      else
1596fd7d9bd3Smrg	{
1597350952b9Smrg	  yydestruct ("Error: discarding",
1598350952b9Smrg		      yytoken, &yylval);
1599fd7d9bd3Smrg	  yychar = YYEMPTY;
1600fd7d9bd3Smrg	}
1601fd7d9bd3Smrg    }
1602fd7d9bd3Smrg
1603350952b9Smrg  /* Else will try to reuse look-ahead token after shifting the error
1604fd7d9bd3Smrg     token.  */
1605fd7d9bd3Smrg  goto yyerrlab1;
1606fd7d9bd3Smrg
1607fd7d9bd3Smrg
1608fd7d9bd3Smrg/*---------------------------------------------------.
1609fd7d9bd3Smrg| yyerrorlab -- error raised explicitly by YYERROR.  |
1610fd7d9bd3Smrg`---------------------------------------------------*/
1611fd7d9bd3Smrgyyerrorlab:
1612fd7d9bd3Smrg
1613350952b9Smrg  /* Pacify compilers like GCC when the user code never invokes
1614350952b9Smrg     YYERROR and the label yyerrorlab therefore never appears in user
1615350952b9Smrg     code.  */
1616350952b9Smrg  if (/*CONSTCOND*/ 0)
1617fd7d9bd3Smrg     goto yyerrorlab;
1618fd7d9bd3Smrg
1619350952b9Smrg  /* Do not reclaim the symbols of the rule which action triggered
1620350952b9Smrg     this YYERROR.  */
1621350952b9Smrg  YYPOPSTACK (yylen);
1622350952b9Smrg  yylen = 0;
1623350952b9Smrg  YY_STACK_PRINT (yyss, yyssp);
1624fd7d9bd3Smrg  yystate = *yyssp;
1625fd7d9bd3Smrg  goto yyerrlab1;
1626fd7d9bd3Smrg
1627fd7d9bd3Smrg
1628fd7d9bd3Smrg/*-------------------------------------------------------------.
1629fd7d9bd3Smrg| yyerrlab1 -- common code for both syntax error and YYERROR.  |
1630fd7d9bd3Smrg`-------------------------------------------------------------*/
1631fd7d9bd3Smrgyyerrlab1:
1632fd7d9bd3Smrg  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
1633fd7d9bd3Smrg
1634fd7d9bd3Smrg  for (;;)
1635fd7d9bd3Smrg    {
1636fd7d9bd3Smrg      yyn = yypact[yystate];
1637fd7d9bd3Smrg      if (yyn != YYPACT_NINF)
1638fd7d9bd3Smrg	{
1639fd7d9bd3Smrg	  yyn += YYTERROR;
1640fd7d9bd3Smrg	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1641fd7d9bd3Smrg	    {
1642fd7d9bd3Smrg	      yyn = yytable[yyn];
1643fd7d9bd3Smrg	      if (0 < yyn)
1644fd7d9bd3Smrg		break;
1645fd7d9bd3Smrg	    }
1646fd7d9bd3Smrg	}
1647fd7d9bd3Smrg
1648fd7d9bd3Smrg      /* Pop the current state because it cannot handle the error token.  */
1649fd7d9bd3Smrg      if (yyssp == yyss)
1650fd7d9bd3Smrg	YYABORT;
1651fd7d9bd3Smrg
1652350952b9Smrg
1653350952b9Smrg      yydestruct ("Error: popping",
1654350952b9Smrg		  yystos[yystate], yyvsp);
1655350952b9Smrg      YYPOPSTACK (1);
1656fd7d9bd3Smrg      yystate = *yyssp;
1657fd7d9bd3Smrg      YY_STACK_PRINT (yyss, yyssp);
1658fd7d9bd3Smrg    }
1659fd7d9bd3Smrg
1660fd7d9bd3Smrg  if (yyn == YYFINAL)
1661fd7d9bd3Smrg    YYACCEPT;
1662fd7d9bd3Smrg
1663fd7d9bd3Smrg  *++yyvsp = yylval;
1664fd7d9bd3Smrg
1665fd7d9bd3Smrg
1666350952b9Smrg  /* Shift the error token.  */
1667350952b9Smrg  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1668350952b9Smrg
1669fd7d9bd3Smrg  yystate = yyn;
1670fd7d9bd3Smrg  goto yynewstate;
1671fd7d9bd3Smrg
1672fd7d9bd3Smrg
1673fd7d9bd3Smrg/*-------------------------------------.
1674fd7d9bd3Smrg| yyacceptlab -- YYACCEPT comes here.  |
1675fd7d9bd3Smrg`-------------------------------------*/
1676fd7d9bd3Smrgyyacceptlab:
1677fd7d9bd3Smrg  yyresult = 0;
1678fd7d9bd3Smrg  goto yyreturn;
1679fd7d9bd3Smrg
1680fd7d9bd3Smrg/*-----------------------------------.
1681fd7d9bd3Smrg| yyabortlab -- YYABORT comes here.  |
1682fd7d9bd3Smrg`-----------------------------------*/
1683fd7d9bd3Smrgyyabortlab:
1684fd7d9bd3Smrg  yyresult = 1;
1685fd7d9bd3Smrg  goto yyreturn;
1686fd7d9bd3Smrg
1687fd7d9bd3Smrg#ifndef yyoverflow
1688350952b9Smrg/*-------------------------------------------------.
1689350952b9Smrg| yyexhaustedlab -- memory exhaustion comes here.  |
1690350952b9Smrg`-------------------------------------------------*/
1691350952b9Smrgyyexhaustedlab:
1692350952b9Smrg  yyerror (YY_("memory exhausted"));
1693fd7d9bd3Smrg  yyresult = 2;
1694fd7d9bd3Smrg  /* Fall through.  */
1695fd7d9bd3Smrg#endif
1696fd7d9bd3Smrg
1697fd7d9bd3Smrgyyreturn:
1698350952b9Smrg  if (yychar != YYEOF && yychar != YYEMPTY)
1699350952b9Smrg     yydestruct ("Cleanup: discarding lookahead",
1700350952b9Smrg		 yytoken, &yylval);
1701350952b9Smrg  /* Do not reclaim the symbols of the rule which action triggered
1702350952b9Smrg     this YYABORT or YYACCEPT.  */
1703350952b9Smrg  YYPOPSTACK (yylen);
1704350952b9Smrg  YY_STACK_PRINT (yyss, yyssp);
1705350952b9Smrg  while (yyssp != yyss)
1706350952b9Smrg    {
1707350952b9Smrg      yydestruct ("Cleanup: popping",
1708350952b9Smrg		  yystos[*yyssp], yyvsp);
1709350952b9Smrg      YYPOPSTACK (1);
1710350952b9Smrg    }
1711fd7d9bd3Smrg#ifndef yyoverflow
1712fd7d9bd3Smrg  if (yyss != yyssa)
1713fd7d9bd3Smrg    YYSTACK_FREE (yyss);
1714fd7d9bd3Smrg#endif
1715350952b9Smrg#if YYERROR_VERBOSE
1716350952b9Smrg  if (yymsg != yymsgbuf)
1717350952b9Smrg    YYSTACK_FREE (yymsg);
1718350952b9Smrg#endif
1719350952b9Smrg  /* Make sure YYID is used.  */
1720350952b9Smrg  return YYID (yyresult);
1721fd7d9bd3Smrg}
1722fd7d9bd3Smrg
1723fd7d9bd3Smrg
1724fd7d9bd3Smrg#line 92 "gram.y"
1725fd7d9bd3Smrg
1726fd7d9bd3Smrgvoid
1727fd7d9bd3Smrgyyerror(const char *s)
1728fd7d9bd3Smrg{
1729fd7d9bd3Smrg  fprintf(stderr, "xgc: syntax error, line %d\n", yylineno);
1730fd7d9bd3Smrg}
1731fd7d9bd3Smrg
1732