Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /* A Bison parser, made by GNU Bison 3.5.1.  */  | 
2  |  |  | 
3  |  | /* Bison implementation for Yacc-like parsers in C  | 
4  |  |  | 
5  |  |    Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,  | 
6  |  |    Inc.  | 
7  |  |  | 
8  |  |    This program is free software: you can redistribute it and/or modify  | 
9  |  |    it under the terms of the GNU General Public License as published by  | 
10  |  |    the Free Software Foundation, either version 3 of the License, or  | 
11  |  |    (at your option) any later version.  | 
12  |  |  | 
13  |  |    This program is distributed in the hope that it will be useful,  | 
14  |  |    but WITHOUT ANY WARRANTY; without even the implied warranty of  | 
15  |  |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  | 
16  |  |    GNU General Public License for more details.  | 
17  |  |  | 
18  |  |    You should have received a copy of the GNU General Public License  | 
19  |  |    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */  | 
20  |  |  | 
21  |  | /* As a special exception, you may create a larger work that contains  | 
22  |  |    part or all of the Bison parser skeleton and distribute that work  | 
23  |  |    under terms of your choice, so long as that work isn't itself a  | 
24  |  |    parser generator using the skeleton or a modified version thereof  | 
25  |  |    as a parser skeleton.  Alternatively, if you modify or redistribute  | 
26  |  |    the parser skeleton itself, you may (at your option) remove this  | 
27  |  |    special exception, which will cause the skeleton and the resulting  | 
28  |  |    Bison output files to be licensed under the GNU General Public  | 
29  |  |    License without this special exception.  | 
30  |  |  | 
31  |  |    This special exception was added by the Free Software Foundation in  | 
32  |  |    version 2.2 of Bison.  */  | 
33  |  |  | 
34  |  | /* C LALR(1) parser skeleton written by Richard Stallman, by  | 
35  |  |    simplifying the original so-called "semantic" parser.  */  | 
36  |  |  | 
37  |  | /* All symbols defined below should begin with yy or YY, to avoid  | 
38  |  |    infringing on user name space.  This should be done even for local  | 
39  |  |    variables, as they might otherwise be expanded by user macros.  | 
40  |  |    There are some unavoidable exceptions within include files to  | 
41  |  |    define necessary library symbols; they are noted "INFRINGES ON  | 
42  |  |    USER NAME SPACE" below.  */  | 
43  |  |  | 
44  |  | /* Undocumented macros, especially those whose name start with YY_,  | 
45  |  |    are private implementation details.  Do not rely on them.  */  | 
46  |  |  | 
47  |  | /* Identify Bison output.  */  | 
48  |  | #define YYBISON 1  | 
49  |  |  | 
50  |  | /* Bison version.  */  | 
51  |  | #define YYBISON_VERSION "3.5.1"  | 
52  |  |  | 
53  |  | /* Skeleton name.  */  | 
54  |  | #define YYSKELETON_NAME "yacc.c"  | 
55  |  |  | 
56  |  | /* Pure parsers.  */  | 
57  |  | #define YYPURE 0  | 
58  |  |  | 
59  |  | /* Push parsers.  */  | 
60  |  | #define YYPUSH 0  | 
61  |  |  | 
62  |  | /* Pull parsers.  */  | 
63  |  | #define YYPULL 1  | 
64  |  |  | 
65  |  |  | 
66  |  |  | 
67  |  |  | 
68  |  | /* First part of user prologue.  */  | 
69  |  | #line 1 "cue_parser.y"  | 
70  |  |  | 
71  |  | /*  | 
72  |  |  * Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen  | 
73  |  |  * Copyright (c) 2009, 2010 Jochen Keil  | 
74  |  |  * For license terms, see the file COPYING in this distribution.  | 
75  |  |  */  | 
76  |  |  | 
77  |  | #include <stdlib.h>  | 
78  |  | #include <stdio.h>  | 
79  |  | #include <string.h>  | 
80  |  |  | 
81  |  | #include "cd.h"  | 
82  |  | #include "time.h"  | 
83  |  |  | 
84  |  | #ifdef YY_BUF_SIZE  | 
85  |  | #undef YY_BUF_SIZE  | 
86  |  | #endif  | 
87  | 0  | #define YY_BUF_SIZE 16384  | 
88  |  |  | 
89  |  | #define YYDEBUG 1  | 
90  |  |  | 
91  |  | char fnamebuf[PARSER_BUFFER];  | 
92  |  |  | 
93  |  | /* debugging */  | 
94  |  | //int yydebug = 1;  | 
95  |  |  | 
96  |  | extern int yylineno;  | 
97  |  | extern FILE* yyin;  | 
98  |  |  | 
99  |  | static Cd *cd = NULL;  | 
100  |  | static Track *track = NULL;  | 
101  |  | static Track *prev_track = NULL;  | 
102  |  | static Cdtext *cdtext = NULL;  | 
103  |  | static Rem *rem = NULL;  | 
104  |  | static char *prev_filename = NULL;  /* last file in or before last track */  | 
105  |  | static char *cur_filename = NULL; /* last file in the last track */  | 
106  |  | static char *new_filename = NULL; /* last file in this track */  | 
107  |  |  | 
108  |  | /* lexer interface */  | 
109  |  | typedef struct yy_buffer_state* YY_BUFFER_STATE;  | 
110  |  |  | 
111  |  | int yylex(void);  | 
112  |  | void yyerror(const char*);  | 
113  |  | YY_BUFFER_STATE yy_scan_string(const char*);  | 
114  |  | YY_BUFFER_STATE yy_create_buffer(FILE*, int);  | 
115  |  | void yy_switch_to_buffer(YY_BUFFER_STATE);  | 
116  |  | void yy_delete_buffer(YY_BUFFER_STATE);  | 
117  |  |  | 
118  |  | /* parser interface */  | 
119  |  | int yyparse(void);  | 
120  |  | Cd *cue_parse_file(FILE *fp);  | 
121  |  | Cd *cue_parse_string(const char*);  | 
122  |  |  | 
123  |  | #line 124 "/work/cue_parser.c"  | 
124  |  |  | 
125  |  | # ifndef YY_CAST  | 
126  |  | #  ifdef __cplusplus  | 
127  |  | #   define YY_CAST(Type, Val) static_cast<Type> (Val)  | 
128  |  | #   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)  | 
129  |  | #  else  | 
130  | 1.16M  | #   define YY_CAST(Type, Val) ((Type) (Val))  | 
131  |  | #   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))  | 
132  |  | #  endif  | 
133  |  | # endif  | 
134  |  | # ifndef YY_NULLPTR  | 
135  |  | #  if defined __cplusplus  | 
136  |  | #   if 201103L <= __cplusplus  | 
137  |  | #    define YY_NULLPTR nullptr  | 
138  |  | #   else  | 
139  |  | #    define YY_NULLPTR 0  | 
140  |  | #   endif  | 
141  |  | #  else  | 
142  |  | #   define YY_NULLPTR ((void*)0)  | 
143  |  | #  endif  | 
144  |  | # endif  | 
145  |  |  | 
146  |  | /* Enabling verbose error messages.  */  | 
147  |  | #ifdef YYERROR_VERBOSE  | 
148  |  | # undef YYERROR_VERBOSE  | 
149  |  | # define YYERROR_VERBOSE 1  | 
150  |  | #else  | 
151  |  | # define YYERROR_VERBOSE 0  | 
152  |  | #endif  | 
153  |  |  | 
154  |  | /* Use api.header.include to #include this header  | 
155  |  |    instead of duplicating it here.  */  | 
156  |  | #ifndef YY_YY_WORK_CUE_PARSER_H_INCLUDED  | 
157  |  | # define YY_YY_WORK_CUE_PARSER_H_INCLUDED  | 
158  |  | /* Debug traces.  */  | 
159  |  | #ifndef YYDEBUG  | 
160  |  | # define YYDEBUG 0  | 
161  |  | #endif  | 
162  |  | #if YYDEBUG  | 
163  |  | extern int yydebug;  | 
164  |  | #endif  | 
165  |  |  | 
166  |  | /* Token type.  */  | 
167  |  | #ifndef YYTOKENTYPE  | 
168  |  | # define YYTOKENTYPE  | 
169  |  |   enum yytokentype  | 
170  |  |   { | 
171  |  |     NUMBER = 258,  | 
172  |  |     STRING = 259,  | 
173  |  |     CATALOG = 260,  | 
174  |  |     CDTEXTFILE = 261,  | 
175  |  |     FFILE = 262,  | 
176  |  |     BINARY = 263,  | 
177  |  |     MOTOROLA = 264,  | 
178  |  |     AIFF = 265,  | 
179  |  |     WAVE = 266,  | 
180  |  |     MP3 = 267,  | 
181  |  |     FLAC = 268,  | 
182  |  |     TRACK = 269,  | 
183  |  |     AUDIO = 270,  | 
184  |  |     MODE1_2048 = 271,  | 
185  |  |     MODE1_2352 = 272,  | 
186  |  |     MODE2_2336 = 273,  | 
187  |  |     MODE2_2048 = 274,  | 
188  |  |     MODE2_2342 = 275,  | 
189  |  |     MODE2_2332 = 276,  | 
190  |  |     MODE2_2352 = 277,  | 
191  |  |     TRACK_ISRC = 278,  | 
192  |  |     FLAGS = 279,  | 
193  |  |     PRE = 280,  | 
194  |  |     DCP = 281,  | 
195  |  |     FOUR_CH = 282,  | 
196  |  |     SCMS = 283,  | 
197  |  |     PREGAP = 284,  | 
198  |  |     INDEX = 285,  | 
199  |  |     POSTGAP = 286,  | 
200  |  |     TITLE = 287,  | 
201  |  |     PERFORMER = 288,  | 
202  |  |     SONGWRITER = 289,  | 
203  |  |     COMPOSER = 290,  | 
204  |  |     ARRANGER = 291,  | 
205  |  |     MESSAGE = 292,  | 
206  |  |     DISC_ID = 293,  | 
207  |  |     GENRE = 294,  | 
208  |  |     TOC_INFO1 = 295,  | 
209  |  |     TOC_INFO2 = 296,  | 
210  |  |     UPC_EAN = 297,  | 
211  |  |     ISRC = 298,  | 
212  |  |     SIZE_INFO = 299,  | 
213  |  |     DATE = 300,  | 
214  |  |     XXX_GENRE = 301,  | 
215  |  |     REPLAYGAIN_ALBUM_GAIN = 302,  | 
216  |  |     REPLAYGAIN_ALBUM_PEAK = 303,  | 
217  |  |     REPLAYGAIN_TRACK_GAIN = 304,  | 
218  |  |     REPLAYGAIN_TRACK_PEAK = 305  | 
219  |  |   };  | 
220  |  | #endif  | 
221  |  |  | 
222  |  | /* Value type.  */  | 
223  |  | #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED  | 
224  |  | union YYSTYPE  | 
225  |  | { | 
226  |  | #line 57 "cue_parser.y"  | 
227  |  |  | 
228  |  |   long ival;  | 
229  |  |   char *sval;  | 
230  |  |  | 
231  |  | #line 232 "/work/cue_parser.c"  | 
232  |  |  | 
233  |  | };  | 
234  |  | typedef union YYSTYPE YYSTYPE;  | 
235  |  | # define YYSTYPE_IS_TRIVIAL 1  | 
236  |  | # define YYSTYPE_IS_DECLARED 1  | 
237  |  | #endif  | 
238  |  |  | 
239  |  |  | 
240  |  | extern YYSTYPE yylval;  | 
241  |  |  | 
242  |  | int yyparse (void);  | 
243  |  |  | 
244  |  | #endif /* !YY_YY_WORK_CUE_PARSER_H_INCLUDED  */  | 
245  |  |  | 
246  |  |  | 
247  |  |  | 
248  |  | #ifdef short  | 
249  |  | # undef short  | 
250  |  | #endif  | 
251  |  |  | 
252  |  | /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure  | 
253  |  |    <limits.h> and (if available) <stdint.h> are included  | 
254  |  |    so that the code can choose integer types of a good width.  */  | 
255  |  |  | 
256  |  | #ifndef __PTRDIFF_MAX__  | 
257  |  | # include <limits.h> /* INFRINGES ON USER NAME SPACE */  | 
258  |  | # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__  | 
259  |  | #  include <stdint.h> /* INFRINGES ON USER NAME SPACE */  | 
260  |  | #  define YY_STDINT_H  | 
261  |  | # endif  | 
262  |  | #endif  | 
263  |  |  | 
264  |  | /* Narrow types that promote to a signed type and that can represent a  | 
265  |  |    signed or unsigned integer of at least N bits.  In tables they can  | 
266  |  |    save space and decrease cache pressure.  Promoting to a signed type  | 
267  |  |    helps avoid bugs in integer arithmetic.  */  | 
268  |  |  | 
269  |  | #ifdef __INT_LEAST8_MAX__  | 
270  |  | typedef __INT_LEAST8_TYPE__ yytype_int8;  | 
271  |  | #elif defined YY_STDINT_H  | 
272  |  | typedef int_least8_t yytype_int8;  | 
273  |  | #else  | 
274  |  | typedef signed char yytype_int8;  | 
275  |  | #endif  | 
276  |  |  | 
277  |  | #ifdef __INT_LEAST16_MAX__  | 
278  |  | typedef __INT_LEAST16_TYPE__ yytype_int16;  | 
279  |  | #elif defined YY_STDINT_H  | 
280  |  | typedef int_least16_t yytype_int16;  | 
281  |  | #else  | 
282  |  | typedef short yytype_int16;  | 
283  |  | #endif  | 
284  |  |  | 
285  |  | #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__  | 
286  |  | typedef __UINT_LEAST8_TYPE__ yytype_uint8;  | 
287  |  | #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \  | 
288  |  |        && UINT_LEAST8_MAX <= INT_MAX)  | 
289  |  | typedef uint_least8_t yytype_uint8;  | 
290  |  | #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX  | 
291  |  | typedef unsigned char yytype_uint8;  | 
292  |  | #else  | 
293  |  | typedef short yytype_uint8;  | 
294  |  | #endif  | 
295  |  |  | 
296  |  | #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__  | 
297  |  | typedef __UINT_LEAST16_TYPE__ yytype_uint16;  | 
298  |  | #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \  | 
299  |  |        && UINT_LEAST16_MAX <= INT_MAX)  | 
300  |  | typedef uint_least16_t yytype_uint16;  | 
301  |  | #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX  | 
302  |  | typedef unsigned short yytype_uint16;  | 
303  |  | #else  | 
304  |  | typedef int yytype_uint16;  | 
305  |  | #endif  | 
306  |  |  | 
307  |  | #ifndef YYPTRDIFF_T  | 
308  |  | # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__  | 
309  | 1.81k  | #  define YYPTRDIFF_T __PTRDIFF_TYPE__  | 
310  |  | #  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__  | 
311  |  | # elif defined PTRDIFF_MAX  | 
312  |  | #  ifndef ptrdiff_t  | 
313  |  | #   include <stddef.h> /* INFRINGES ON USER NAME SPACE */  | 
314  |  | #  endif  | 
315  |  | #  define YYPTRDIFF_T ptrdiff_t  | 
316  |  | #  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX  | 
317  |  | # else  | 
318  |  | #  define YYPTRDIFF_T long  | 
319  |  | #  define YYPTRDIFF_MAXIMUM LONG_MAX  | 
320  |  | # endif  | 
321  |  | #endif  | 
322  |  |  | 
323  |  | #ifndef YYSIZE_T  | 
324  |  | # ifdef __SIZE_TYPE__  | 
325  |  | #  define YYSIZE_T __SIZE_TYPE__  | 
326  |  | # elif defined size_t  | 
327  |  | #  define YYSIZE_T size_t  | 
328  |  | # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__  | 
329  |  | #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */  | 
330  |  | #  define YYSIZE_T size_t  | 
331  |  | # else  | 
332  |  | #  define YYSIZE_T unsigned  | 
333  |  | # endif  | 
334  |  | #endif  | 
335  |  |  | 
336  |  | #define YYSIZE_MAXIMUM                                  \  | 
337  |  |   YY_CAST (YYPTRDIFF_T,                                 \  | 
338  |  |            (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \  | 
339  |  |             ? YYPTRDIFF_MAXIMUM                         \  | 
340  |  |             : YY_CAST (YYSIZE_T, -1)))  | 
341  |  |  | 
342  | 0  | #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))  | 
343  |  |  | 
344  |  | /* Stored state numbers (used for stacks). */  | 
345  |  | typedef yytype_int8 yy_state_t;  | 
346  |  |  | 
347  |  | /* State numbers in computations.  */  | 
348  |  | typedef int yy_state_fast_t;  | 
349  |  |  | 
350  |  | #ifndef YY_  | 
351  |  | # if defined YYENABLE_NLS && YYENABLE_NLS  | 
352  |  | #  if ENABLE_NLS  | 
353  |  | #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */  | 
354  |  | #   define YY_(Msgid) dgettext ("bison-runtime", Msgid) | 
355  |  | #  endif  | 
356  |  | # endif  | 
357  |  | # ifndef YY_  | 
358  | 33.4k  | #  define YY_(Msgid) Msgid  | 
359  |  | # endif  | 
360  |  | #endif  | 
361  |  |  | 
362  |  | #ifndef YY_ATTRIBUTE_PURE  | 
363  |  | # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)  | 
364  |  | #  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))  | 
365  |  | # else  | 
366  |  | #  define YY_ATTRIBUTE_PURE  | 
367  |  | # endif  | 
368  |  | #endif  | 
369  |  |  | 
370  |  | #ifndef YY_ATTRIBUTE_UNUSED  | 
371  |  | # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)  | 
372  |  | #  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))  | 
373  |  | # else  | 
374  |  | #  define YY_ATTRIBUTE_UNUSED  | 
375  |  | # endif  | 
376  |  | #endif  | 
377  |  |  | 
378  |  | /* Suppress unused-variable warnings by "using" E.  */  | 
379  |  | #if ! defined lint || defined __GNUC__  | 
380  | 1.25M  | # define YYUSE(E) ((void) (E))  | 
381  |  | #else  | 
382  |  | # define YYUSE(E) /* empty */  | 
383  |  | #endif  | 
384  |  |  | 
385  |  | #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__  | 
386  |  | /* Suppress an incorrect diagnostic about yylval being uninitialized.  */  | 
387  |  | # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \  | 
388  |  |     _Pragma ("GCC diagnostic push")                                     \ | 
389  |  |     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \ | 
390  |  |     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") | 
391  |  | # define YY_IGNORE_MAYBE_UNINITIALIZED_END      \  | 
392  |  |     _Pragma ("GCC diagnostic pop") | 
393  |  | #else  | 
394  |  | # define YY_INITIAL_VALUE(Value) Value  | 
395  |  | #endif  | 
396  |  | #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
397  |  | # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
398  |  | # define YY_IGNORE_MAYBE_UNINITIALIZED_END  | 
399  |  | #endif  | 
400  |  | #ifndef YY_INITIAL_VALUE  | 
401  |  | # define YY_INITIAL_VALUE(Value) /* Nothing. */  | 
402  |  | #endif  | 
403  |  |  | 
404  |  | #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__  | 
405  |  | # define YY_IGNORE_USELESS_CAST_BEGIN                          \  | 
406  |  |     _Pragma ("GCC diagnostic push")                            \ | 
407  |  |     _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") | 
408  |  | # define YY_IGNORE_USELESS_CAST_END            \  | 
409  |  |     _Pragma ("GCC diagnostic pop") | 
410  |  | #endif  | 
411  |  | #ifndef YY_IGNORE_USELESS_CAST_BEGIN  | 
412  |  | # define YY_IGNORE_USELESS_CAST_BEGIN  | 
413  |  | # define YY_IGNORE_USELESS_CAST_END  | 
414  |  | #endif  | 
415  |  |  | 
416  |  |  | 
417  | 1.16M  | #define YY_ASSERT(E) ((void) (0 && (E)))  | 
418  |  |  | 
419  |  | #if ! defined yyoverflow || YYERROR_VERBOSE  | 
420  |  |  | 
421  |  | /* The parser invokes alloca or malloc; define the necessary symbols.  */  | 
422  |  |  | 
423  |  | # ifdef YYSTACK_USE_ALLOCA  | 
424  |  | #  if YYSTACK_USE_ALLOCA  | 
425  |  | #   ifdef __GNUC__  | 
426  |  | #    define YYSTACK_ALLOC __builtin_alloca  | 
427  |  | #   elif defined __BUILTIN_VA_ARG_INCR  | 
428  |  | #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */  | 
429  |  | #   elif defined _AIX  | 
430  |  | #    define YYSTACK_ALLOC __alloca  | 
431  |  | #   elif defined _MSC_VER  | 
432  |  | #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */  | 
433  |  | #    define alloca _alloca  | 
434  |  | #   else  | 
435  |  | #    define YYSTACK_ALLOC alloca  | 
436  |  | #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS  | 
437  |  | #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */  | 
438  |  |       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */  | 
439  |  | #     ifndef EXIT_SUCCESS  | 
440  |  | #      define EXIT_SUCCESS 0  | 
441  |  | #     endif  | 
442  |  | #    endif  | 
443  |  | #   endif  | 
444  |  | #  endif  | 
445  |  | # endif  | 
446  |  |  | 
447  |  | # ifdef YYSTACK_ALLOC  | 
448  |  |    /* Pacify GCC's 'empty if-body' warning.  */  | 
449  |  | #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) | 
450  |  | #  ifndef YYSTACK_ALLOC_MAXIMUM  | 
451  |  |     /* The OS might guarantee only one guard page at the bottom of the stack,  | 
452  |  |        and a page size can be as small as 4096 bytes.  So we cannot safely  | 
453  |  |        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number  | 
454  |  |        to allow for a few compiler-allocated temporary stack slots.  */  | 
455  |  | #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */  | 
456  |  | #  endif  | 
457  |  | # else  | 
458  |  | #  define YYSTACK_ALLOC YYMALLOC  | 
459  | 0  | #  define YYSTACK_FREE YYFREE  | 
460  |  | #  ifndef YYSTACK_ALLOC_MAXIMUM  | 
461  |  | #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM  | 
462  |  | #  endif  | 
463  |  | #  if (defined __cplusplus && ! defined EXIT_SUCCESS \  | 
464  |  |        && ! ((defined YYMALLOC || defined malloc) \  | 
465  |  |              && (defined YYFREE || defined free)))  | 
466  |  | #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */  | 
467  |  | #   ifndef EXIT_SUCCESS  | 
468  |  | #    define EXIT_SUCCESS 0  | 
469  |  | #   endif  | 
470  |  | #  endif  | 
471  |  | #  ifndef YYMALLOC  | 
472  |  | #   define YYMALLOC malloc  | 
473  |  | #   if ! defined malloc && ! defined EXIT_SUCCESS  | 
474  |  | void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */  | 
475  |  | #   endif  | 
476  |  | #  endif  | 
477  |  | #  ifndef YYFREE  | 
478  | 0  | #   define YYFREE free  | 
479  |  | #   if ! defined free && ! defined EXIT_SUCCESS  | 
480  |  | void free (void *); /* INFRINGES ON USER NAME SPACE */  | 
481  |  | #   endif  | 
482  |  | #  endif  | 
483  |  | # endif  | 
484  |  | #endif /* ! defined yyoverflow || YYERROR_VERBOSE */  | 
485  |  |  | 
486  |  |  | 
487  |  | #if (! defined yyoverflow \  | 
488  |  |      && (! defined __cplusplus \  | 
489  |  |          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))  | 
490  |  |  | 
491  |  | /* A type that is properly aligned for any stack member.  */  | 
492  |  | union yyalloc  | 
493  |  | { | 
494  |  |   yy_state_t yyss_alloc;  | 
495  |  |   YYSTYPE yyvs_alloc;  | 
496  |  | };  | 
497  |  |  | 
498  |  | /* The size of the maximum gap between one aligned stack and the next.  */  | 
499  | 0  | # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)  | 
500  |  |  | 
501  |  | /* The size of an array large to enough to hold all stacks, each with  | 
502  |  |    N elements.  */  | 
503  |  | # define YYSTACK_BYTES(N) \  | 
504  |  |      ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \  | 
505  |  |       + YYSTACK_GAP_MAXIMUM)  | 
506  |  |  | 
507  |  | # define YYCOPY_NEEDED 1  | 
508  |  |  | 
509  |  | /* Relocate STACK from its old location to the new one.  The  | 
510  |  |    local variables YYSIZE and YYSTACKSIZE give the old and new number of  | 
511  |  |    elements in the stack, and YYPTR gives the new location of the  | 
512  |  |    stack.  Advance YYPTR to a properly aligned location for the next  | 
513  |  |    stack.  */  | 
514  |  | # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \  | 
515  | 0  |     do                                                                  \  | 
516  | 0  |       {                                                                 \ | 
517  | 0  |         YYPTRDIFF_T yynewbytes;                                         \  | 
518  | 0  |         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \  | 
519  | 0  |         Stack = &yyptr->Stack_alloc;                                    \  | 
520  | 0  |         yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \  | 
521  | 0  |         yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \  | 
522  | 0  |       }                                                                 \  | 
523  | 0  |     while (0)  | 
524  |  |  | 
525  |  | #endif  | 
526  |  |  | 
527  |  | #if defined YYCOPY_NEEDED && YYCOPY_NEEDED  | 
528  |  | /* Copy COUNT objects from SRC to DST.  The source and destination do  | 
529  |  |    not overlap.  */  | 
530  |  | # ifndef YYCOPY  | 
531  |  | #  if defined __GNUC__ && 1 < __GNUC__  | 
532  |  | #   define YYCOPY(Dst, Src, Count) \  | 
533  | 0  |       __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))  | 
534  |  | #  else  | 
535  |  | #   define YYCOPY(Dst, Src, Count)              \  | 
536  |  |       do                                        \  | 
537  |  |         {                                       \ | 
538  |  |           YYPTRDIFF_T yyi;                      \  | 
539  |  |           for (yyi = 0; yyi < (Count); yyi++)   \  | 
540  |  |             (Dst)[yyi] = (Src)[yyi];            \  | 
541  |  |         }                                       \  | 
542  |  |       while (0)  | 
543  |  | #  endif  | 
544  |  | # endif  | 
545  |  | #endif /* !YYCOPY_NEEDED */  | 
546  |  |  | 
547  |  | /* YYFINAL -- State number of the termination state.  */  | 
548  | 1.16M  | #define YYFINAL  3  | 
549  |  | /* YYLAST -- Last index in YYTABLE.  */  | 
550  | 2.57M  | #define YYLAST   150  | 
551  |  |  | 
552  |  | /* YYNTOKENS -- Number of terminals.  */  | 
553  | 418k  | #define YYNTOKENS  53  | 
554  |  | /* YYNNTS -- Number of nonterminals.  */  | 
555  |  | #define YYNNTS  21  | 
556  |  | /* YYNRULES -- Number of rules.  */  | 
557  |  | #define YYNRULES  71  | 
558  |  | /* YYNSTATES -- Number of states.  */  | 
559  |  | #define YYNSTATES  105  | 
560  |  |  | 
561  | 0  | #define YYUNDEFTOK  2  | 
562  | 1.13M  | #define YYMAXUTOK   305  | 
563  |  |  | 
564  |  |  | 
565  |  | /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM  | 
566  |  |    as returned by yylex, with out-of-bounds checking.  */  | 
567  |  | #define YYTRANSLATE(YYX)                                                \  | 
568  | 1.48M  |   (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)  | 
569  |  |  | 
570  |  | /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM  | 
571  |  |    as returned by yylex.  */  | 
572  |  | static const yytype_int8 yytranslate[] =  | 
573  |  | { | 
574  |  |        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
575  |  |       51,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
576  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
577  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
578  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
579  |  |        2,     2,     2,     2,     2,     2,     2,     2,    52,     2,  | 
580  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
581  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
582  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
583  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
584  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
585  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
586  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
587  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
588  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
589  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
590  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
591  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
592  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
593  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
594  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
595  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
596  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
597  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
598  |  |        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,  | 
599  |  |        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,  | 
600  |  |        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,  | 
601  |  |       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,  | 
602  |  |       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,  | 
603  |  |       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,  | 
604  |  |       45,    46,    47,    48,    49,    50  | 
605  |  | };  | 
606  |  |  | 
607  |  | #if YYDEBUG  | 
608  |  |   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */  | 
609  |  | static const yytype_int16 yyrline[] =  | 
610  |  | { | 
611  |  |        0,   133,   133,   137,   145,   146,   150,   151,   152,   153,  | 
612  |  |      154,   155,   159,   173,   174,   178,   182,   183,   184,   185,  | 
613  |  |      186,   187,   191,   215,   221,   222,   223,   224,   225,   226,  | 
614  |  |      227,   228,   232,   233,   237,   238,   239,   240,   241,   242,  | 
615  |  |      265,   266,   267,   271,   272,   276,   277,   278,   279,   283,  | 
616  |  |      287,   288,   289,   290,   291,   292,   293,   294,   295,   296,  | 
617  |  |      297,   298,   299,   303,   304,   308,   309,   313,   314,   315,  | 
618  |  |      316,   317  | 
619  |  | };  | 
620  |  | #endif  | 
621  |  |  | 
622  |  | #if YYDEBUG || YYERROR_VERBOSE || 0  | 
623  |  | /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.  | 
624  |  |    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */  | 
625  |  | static const char *const yytname[] =  | 
626  |  | { | 
627  |  |   "$end", "error", "$undefined", "NUMBER", "STRING", "CATALOG",  | 
628  |  |   "CDTEXTFILE", "FFILE", "BINARY", "MOTOROLA", "AIFF", "WAVE", "MP3",  | 
629  |  |   "FLAC", "TRACK", "AUDIO", "MODE1_2048", "MODE1_2352", "MODE2_2336",  | 
630  |  |   "MODE2_2048", "MODE2_2342", "MODE2_2332", "MODE2_2352", "TRACK_ISRC",  | 
631  |  |   "FLAGS", "PRE", "DCP", "FOUR_CH", "SCMS", "PREGAP", "INDEX", "POSTGAP",  | 
632  |  |   "TITLE", "PERFORMER", "SONGWRITER", "COMPOSER", "ARRANGER", "MESSAGE",  | 
633  |  |   "DISC_ID", "GENRE", "TOC_INFO1", "TOC_INFO2", "UPC_EAN", "ISRC",  | 
634  |  |   "SIZE_INFO", "DATE", "XXX_GENRE", "REPLAYGAIN_ALBUM_GAIN",  | 
635  |  |   "REPLAYGAIN_ALBUM_PEAK", "REPLAYGAIN_TRACK_GAIN",  | 
636  |  |   "REPLAYGAIN_TRACK_PEAK", "'\\n'", "':'", "$accept", "cuefile", "new_cd",  | 
637  |  |   "global_statements", "global_statement", "track_data", "track_list",  | 
638  |  |   "track", "file_format", "new_track", "track_def", "track_mode",  | 
639  |  |   "track_statements", "track_statement", "track_flags", "track_flag",  | 
640  |  |   "cdtext", "cdtext_item", "time", "rem", "rem_item", YY_NULLPTR  | 
641  |  | };  | 
642  |  | #endif  | 
643  |  |  | 
644  |  | # ifdef YYPRINT  | 
645  |  | /* YYTOKNUM[NUM] -- (External) token number corresponding to the  | 
646  |  |    (internal) symbol number NUM (which must be that of a token).  */  | 
647  |  | static const yytype_int16 yytoknum[] =  | 
648  |  | { | 
649  |  |        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,  | 
650  |  |      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,  | 
651  |  |      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,  | 
652  |  |      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,  | 
653  |  |      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,  | 
654  |  |      305,    10,    58  | 
655  |  | };  | 
656  |  | # endif  | 
657  |  |  | 
658  | 1.85M  | #define YYPACT_NINF (-44)  | 
659  |  |  | 
660  |  | #define yypact_value_is_default(Yyn) \  | 
661  | 1.85M  |   ((Yyn) == YYPACT_NINF)  | 
662  |  |  | 
663  |  | #define YYTABLE_NINF (-23)  | 
664  |  |  | 
665  |  | #define yytable_value_is_error(Yyn) \  | 
666  | 13.2k  |   0  | 
667  |  |  | 
668  |  |   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing  | 
669  |  |      STATE-NUM.  */  | 
670  |  | static const yytype_int8 yypact[] =  | 
671  |  | { | 
672  |  |      -44,     6,   -44,   -44,   100,   -43,     5,     8,     9,   -44,  | 
673  |  |      -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,  | 
674  |  |      -44,   -44,   -44,    17,   -44,   -44,   -44,   -44,   -44,   -44,  | 
675  |  |       -4,   -44,    -3,   -44,    18,   -44,    21,   -44,   -25,   -24,  | 
676  |  |        7,     2,   -44,    51,    50,     4,    15,   -44,   -44,   -44,  | 
677  |  |      -44,   -44,   -44,   -44,   -44,    16,   -44,    43,    19,    52,  | 
678  |  |      -44,    65,    66,    65,   -44,     0,   -44,   -44,   -44,   -44,  | 
679  |  |      -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,   -44,  | 
680  |  |       20,   -44,    25,   -23,    26,    53,    65,    57,   -44,   -44,  | 
681  |  |      -44,   -44,   -44,   -44,   -44,   -44,   -44,    69,   -44,    58,  | 
682  |  |      -44,    59,   -44,    74,   -44  | 
683  |  | };  | 
684  |  |  | 
685  |  |   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.  | 
686  |  |      Performed when YYTABLE does not specify something else to do.  Zero  | 
687  |  |      means the default is an error.  */  | 
688  |  | static const yytype_int8 yydefact[] =  | 
689  |  | { | 
690  |  |        3,     0,     4,     1,     0,     0,     0,     0,     0,    50,  | 
691  |  |       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,  | 
692  |  |       61,    62,    67,     0,    68,    69,    70,    71,     5,    10,  | 
693  |  |        2,    13,     0,     8,     0,     9,     0,    11,     0,     0,  | 
694  |  |        0,     0,    14,     0,     0,     0,     0,     6,     7,    16,  | 
695  |  |       17,    18,    19,    20,    21,     0,    66,     0,     0,     0,  | 
696  |  |       43,     0,     0,     0,    41,     0,    32,    34,    35,    49,  | 
697  |  |       65,    12,    24,    25,    26,    27,    28,    29,    30,    31,  | 
698  |  |        0,    42,     0,     0,    63,     0,     0,     0,    33,    23,  | 
699  |  |       37,    45,    46,    47,    48,    36,    44,     0,    38,     0,  | 
700  |  |       40,     0,    39,     0,    64  | 
701  |  | };  | 
702  |  |  | 
703  |  |   /* YYPGOTO[NTERM-NUM].  */  | 
704  |  | static const yytype_int8 yypgoto[] =  | 
705  |  | { | 
706  |  |      -44,   -44,   -44,   -44,   -44,    98,   -44,    73,   -44,   -44,  | 
707  |  |      -44,   -44,   -44,    45,   -44,   -44,   108,   -44,   -11,   109,  | 
708  |  |      -44  | 
709  |  | };  | 
710  |  |  | 
711  |  |   /* YYDEFGOTO[NTERM-NUM].  */  | 
712  |  | static const yytype_int8 yydefgoto[] =  | 
713  |  | { | 
714  |  |       -1,     1,     2,     4,    28,    64,    30,    31,    55,    32,  | 
715  |  |       44,    80,    65,    66,    83,    96,    67,    34,    85,    68,  | 
716  |  |       36  | 
717  |  | };  | 
718  |  |  | 
719  |  |   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If  | 
720  |  |      positive, shift that token.  If negative, reduce the rule whose  | 
721  |  |      number is the opposite.  If YYTABLE_NINF, syntax error.  */  | 
722  |  | static const yytype_int8 yytable[] =  | 
723  |  | { | 
724  |  |      -15,    58,    91,    92,    93,    94,     3,     8,    37,    38,  | 
725  |  |      -22,    43,    39,    40,   -15,    49,    50,    51,    52,    53,  | 
726  |  |       54,    41,    45,    59,    60,    46,    47,    48,    95,    61,  | 
727  |  |       62,    63,     9,    10,    11,    12,    13,    14,    15,    16,  | 
728  |  |       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,  | 
729  |  |       27,    58,    87,    56,    57,    69,    82,     8,    72,    73,  | 
730  |  |       74,    75,    76,    77,    78,    79,    70,    71,    84,    86,  | 
731  |  |       81,    89,   101,    59,    60,    99,    90,   104,    97,    61,  | 
732  |  |       62,    63,     9,    10,    11,    12,    13,    14,    15,    16,  | 
733  |  |       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,  | 
734  |  |       27,     5,    29,    42,    98,     6,     7,     8,   100,   102,  | 
735  |  |       88,   103,    33,    35,   -22,     0,     0,     0,     0,     0,  | 
736  |  |        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,  | 
737  |  |        0,     0,     9,    10,    11,    12,    13,    14,    15,    16,  | 
738  |  |       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,  | 
739  |  |       27  | 
740  |  | };  | 
741  |  |  | 
742  |  | static const yytype_int8 yycheck[] =  | 
743  |  | { | 
744  |  |        0,     1,    25,    26,    27,    28,     0,     7,    51,     4,  | 
745  |  |       14,    14,     4,     4,    14,     8,     9,    10,    11,    12,  | 
746  |  |       13,     4,     4,    23,    24,     4,    51,    51,    51,    29,  | 
747  |  |       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,  | 
748  |  |       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,  | 
749  |  |       50,     1,    63,    51,     3,    51,     4,     7,    15,    16,  | 
750  |  |       17,    18,    19,    20,    21,    22,    51,    51,     3,     3,  | 
751  |  |       51,    51,     3,    23,    24,    86,    51,     3,    52,    29,  | 
752  |  |       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,  | 
753  |  |       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,  | 
754  |  |       50,     1,     4,    30,    51,     5,     6,     7,    51,    51,  | 
755  |  |       65,    52,     4,     4,    14,    -1,    -1,    -1,    -1,    -1,  | 
756  |  |       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  | 
757  |  |       -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,  | 
758  |  |       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,  | 
759  |  |       50  | 
760  |  | };  | 
761  |  |  | 
762  |  |   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing  | 
763  |  |      symbol of state STATE-NUM.  */  | 
764  |  | static const yytype_int8 yystos[] =  | 
765  |  | { | 
766  |  |        0,    54,    55,     0,    56,     1,     5,     6,     7,    32,  | 
767  |  |       33,    34,    35,    36,    37,    38,    39,    40,    41,    42,  | 
768  |  |       43,    44,    45,    46,    47,    48,    49,    50,    57,    58,  | 
769  |  |       59,    60,    62,    69,    70,    72,    73,    51,     4,     4,  | 
770  |  |        4,     4,    60,    14,    63,     4,     4,    51,    51,     8,  | 
771  |  |        9,    10,    11,    12,    13,    61,    51,     3,     1,    23,  | 
772  |  |       24,    29,    30,    31,    58,    65,    66,    69,    72,    51,  | 
773  |  |       51,    51,    15,    16,    17,    18,    19,    20,    21,    22,  | 
774  |  |       64,    51,     4,    67,     3,    71,     3,    71,    66,    51,  | 
775  |  |       51,    25,    26,    27,    28,    51,    68,    52,    51,    71,  | 
776  |  |       51,     3,    51,    52,     3  | 
777  |  | };  | 
778  |  |  | 
779  |  |   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */  | 
780  |  | static const yytype_int8 yyr1[] =  | 
781  |  | { | 
782  |  |        0,    53,    54,    55,    56,    56,    57,    57,    57,    57,  | 
783  |  |       57,    57,    58,    59,    59,    60,    61,    61,    61,    61,  | 
784  |  |       61,    61,    62,    63,    64,    64,    64,    64,    64,    64,  | 
785  |  |       64,    64,    65,    65,    66,    66,    66,    66,    66,    66,  | 
786  |  |       66,    66,    66,    67,    67,    68,    68,    68,    68,    69,  | 
787  |  |       70,    70,    70,    70,    70,    70,    70,    70,    70,    70,  | 
788  |  |       70,    70,    70,    71,    71,    72,    72,    73,    73,    73,  | 
789  |  |       73,    73  | 
790  |  | };  | 
791  |  |  | 
792  |  |   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */  | 
793  |  | static const yytype_int8 yyr2[] =  | 
794  |  | { | 
795  |  |        0,     2,     3,     0,     0,     2,     3,     3,     1,     1,  | 
796  |  |        1,     2,     4,     1,     2,     3,     1,     1,     1,     1,  | 
797  |  |        1,     1,     0,     4,     1,     1,     1,     1,     1,     1,  | 
798  |  |        1,     1,     1,     2,     1,     1,     3,     3,     3,     4,  | 
799  |  |        3,     1,     2,     0,     2,     1,     1,     1,     1,     3,  | 
800  |  |        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,  | 
801  |  |        1,     1,     1,     1,     5,     3,     3,     1,     1,     1,  | 
802  |  |        1,     1  | 
803  |  | };  | 
804  |  |  | 
805  |  |  | 
806  |  | #define yyerrok         (yyerrstatus = 0)  | 
807  |  | #define yyclearin       (yychar = YYEMPTY)  | 
808  | 1.82M  | #define YYEMPTY         (-2)  | 
809  | 1.07M  | #define YYEOF           0  | 
810  |  |  | 
811  | 863  | #define YYACCEPT        goto yyacceptlab  | 
812  | 951  | #define YYABORT         goto yyabortlab  | 
813  | 0  | #define YYERROR         goto yyerrorlab  | 
814  |  |  | 
815  |  |  | 
816  |  | #define YYRECOVERING()  (!!yyerrstatus)  | 
817  |  |  | 
818  |  | #define YYBACKUP(Token, Value)                                    \  | 
819  |  |   do                                                              \  | 
820  |  |     if (yychar == YYEMPTY)                                        \  | 
821  |  |       {                                                           \ | 
822  |  |         yychar = (Token);                                         \  | 
823  |  |         yylval = (Value);                                         \  | 
824  |  |         YYPOPSTACK (yylen);                                       \  | 
825  |  |         yystate = *yyssp;                                         \  | 
826  |  |         goto yybackup;                                            \  | 
827  |  |       }                                                           \  | 
828  |  |     else                                                          \  | 
829  |  |       {                                                           \ | 
830  |  |         yyerror (YY_("syntax error: cannot back up")); \ | 
831  |  |         YYERROR;                                                  \  | 
832  |  |       }                                                           \  | 
833  |  |   while (0)  | 
834  |  |  | 
835  |  | /* Error token number */  | 
836  | 1.21M  | #define YYTERROR        1  | 
837  |  | #define YYERRCODE       256  | 
838  |  |  | 
839  |  |  | 
840  |  |  | 
841  |  | /* Enable debugging if requested.  */  | 
842  |  | #if YYDEBUG  | 
843  |  |  | 
844  |  | # ifndef YYFPRINTF  | 
845  |  | #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */  | 
846  | 0  | #  define YYFPRINTF fprintf  | 
847  |  | # endif  | 
848  |  |  | 
849  | 1.85M  | # define YYDPRINTF(Args)                        \  | 
850  | 1.85M  | do {                                            \ | 
851  | 1.85M  |   if (yydebug)                                  \  | 
852  | 1.85M  |     YYFPRINTF Args;                             \  | 
853  | 1.85M  | } while (0)  | 
854  |  |  | 
855  |  | /* This macro is provided for backward compatibility. */  | 
856  |  | #ifndef YY_LOCATION_PRINT  | 
857  |  | # define YY_LOCATION_PRINT(File, Loc) ((void) 0)  | 
858  |  | #endif  | 
859  |  |  | 
860  |  |  | 
861  | 2.57M  | # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \  | 
862  | 2.57M  | do {                                                                      \ | 
863  | 2.57M  |   if (yydebug)                                                            \  | 
864  | 2.57M  |     {                                                                     \ | 
865  | 0  |       YYFPRINTF (stderr, "%s ", Title);                                   \  | 
866  | 0  |       yy_symbol_print (stderr,                                            \  | 
867  | 0  |                   Type, Value); \  | 
868  | 0  |       YYFPRINTF (stderr, "\n");                                           \  | 
869  | 0  |     }                                                                     \  | 
870  | 2.57M  | } while (0)  | 
871  |  |  | 
872  |  |  | 
873  |  | /*-----------------------------------.  | 
874  |  | | Print this symbol's value on YYO.  |  | 
875  |  | `-----------------------------------*/  | 
876  |  |  | 
877  |  | static void  | 
878  |  | yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)  | 
879  | 0  | { | 
880  | 0  |   FILE *yyoutput = yyo;  | 
881  | 0  |   YYUSE (yyoutput);  | 
882  | 0  |   if (!yyvaluep)  | 
883  | 0  |     return;  | 
884  |  | # ifdef YYPRINT  | 
885  |  |   if (yytype < YYNTOKENS)  | 
886  |  |     YYPRINT (yyo, yytoknum[yytype], *yyvaluep);  | 
887  |  | # endif  | 
888  | 0  |   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
889  | 0  |   YYUSE (yytype);  | 
890  | 0  |   YY_IGNORE_MAYBE_UNINITIALIZED_END  | 
891  | 0  | }  | 
892  |  |  | 
893  |  |  | 
894  |  | /*---------------------------.  | 
895  |  | | Print this symbol on YYO.  |  | 
896  |  | `---------------------------*/  | 
897  |  |  | 
898  |  | static void  | 
899  |  | yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)  | 
900  | 0  | { | 
901  | 0  |   YYFPRINTF (yyo, "%s %s (", | 
902  | 0  |              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);  | 
903  |  | 
  | 
904  | 0  |   yy_symbol_value_print (yyo, yytype, yyvaluep);  | 
905  | 0  |   YYFPRINTF (yyo, ")");  | 
906  | 0  | }  | 
907  |  |  | 
908  |  | /*------------------------------------------------------------------.  | 
909  |  | | yy_stack_print -- Print the state stack from its BOTTOM up to its |  | 
910  |  | | TOP (included).                                                   |  | 
911  |  | `------------------------------------------------------------------*/  | 
912  |  |  | 
913  |  | static void  | 
914  |  | yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)  | 
915  | 0  | { | 
916  | 0  |   YYFPRINTF (stderr, "Stack now");  | 
917  | 0  |   for (; yybottom <= yytop; yybottom++)  | 
918  | 0  |     { | 
919  | 0  |       int yybot = *yybottom;  | 
920  | 0  |       YYFPRINTF (stderr, " %d", yybot);  | 
921  | 0  |     }  | 
922  | 0  |   YYFPRINTF (stderr, "\n");  | 
923  | 0  | }  | 
924  |  |  | 
925  | 758k  | # define YY_STACK_PRINT(Bottom, Top)                            \  | 
926  | 758k  | do {                                                            \ | 
927  | 758k  |   if (yydebug)                                                  \  | 
928  | 758k  |     yy_stack_print ((Bottom), (Top));                           \  | 
929  | 758k  | } while (0)  | 
930  |  |  | 
931  |  |  | 
932  |  | /*------------------------------------------------.  | 
933  |  | | Report that the YYRULE is going to be reduced.  |  | 
934  |  | `------------------------------------------------*/  | 
935  |  |  | 
936  |  | static void  | 
937  |  | yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)  | 
938  | 0  | { | 
939  | 0  |   int yylno = yyrline[yyrule];  | 
940  | 0  |   int yynrhs = yyr2[yyrule];  | 
941  | 0  |   int yyi;  | 
942  | 0  |   YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",  | 
943  | 0  |              yyrule - 1, yylno);  | 
944  |  |   /* The symbols being reduced.  */  | 
945  | 0  |   for (yyi = 0; yyi < yynrhs; yyi++)  | 
946  | 0  |     { | 
947  | 0  |       YYFPRINTF (stderr, "   $%d = ", yyi + 1);  | 
948  | 0  |       yy_symbol_print (stderr,  | 
949  | 0  |                        yystos[+yyssp[yyi + 1 - yynrhs]],  | 
950  | 0  |                        &yyvsp[(yyi + 1) - (yynrhs)]  | 
951  | 0  |                                               );  | 
952  | 0  |       YYFPRINTF (stderr, "\n");  | 
953  | 0  |     }  | 
954  | 0  | }  | 
955  |  |  | 
956  | 418k  | # define YY_REDUCE_PRINT(Rule)          \  | 
957  | 418k  | do {                                    \ | 
958  | 418k  |   if (yydebug)                          \  | 
959  | 418k  |     yy_reduce_print (yyssp, yyvsp, Rule); \  | 
960  | 418k  | } while (0)  | 
961  |  |  | 
962  |  | /* Nonzero means print parse trace.  It is left uninitialized so that  | 
963  |  |    multiple parsers can coexist.  */  | 
964  |  | int yydebug;  | 
965  |  | #else /* !YYDEBUG */  | 
966  |  | # define YYDPRINTF(Args)  | 
967  |  | # define YY_SYMBOL_PRINT(Title, Type, Value, Location)  | 
968  |  | # define YY_STACK_PRINT(Bottom, Top)  | 
969  |  | # define YY_REDUCE_PRINT(Rule)  | 
970  |  | #endif /* !YYDEBUG */  | 
971  |  |  | 
972  |  |  | 
973  |  | /* YYINITDEPTH -- initial size of the parser's stacks.  */  | 
974  |  | #ifndef YYINITDEPTH  | 
975  | 1.81k  | # define YYINITDEPTH 200  | 
976  |  | #endif  | 
977  |  |  | 
978  |  | /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only  | 
979  |  |    if the built-in stack extension method is used).  | 
980  |  |  | 
981  |  |    Do not make this value too large; the results are undefined if  | 
982  |  |    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)  | 
983  |  |    evaluated with infinite-precision integer arithmetic.  */  | 
984  |  |  | 
985  |  | #ifndef YYMAXDEPTH  | 
986  | 0  | # define YYMAXDEPTH 10000  | 
987  |  | #endif  | 
988  |  |  | 
989  |  |  | 
990  |  | #if YYERROR_VERBOSE  | 
991  |  |  | 
992  |  | # ifndef yystrlen  | 
993  |  | #  if defined __GLIBC__ && defined _STRING_H  | 
994  |  | #   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))  | 
995  |  | #  else  | 
996  |  | /* Return the length of YYSTR.  */  | 
997  |  | static YYPTRDIFF_T  | 
998  |  | yystrlen (const char *yystr)  | 
999  |  | { | 
1000  |  |   YYPTRDIFF_T yylen;  | 
1001  |  |   for (yylen = 0; yystr[yylen]; yylen++)  | 
1002  |  |     continue;  | 
1003  |  |   return yylen;  | 
1004  |  | }  | 
1005  |  | #  endif  | 
1006  |  | # endif  | 
1007  |  |  | 
1008  |  | # ifndef yystpcpy  | 
1009  |  | #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE  | 
1010  |  | #   define yystpcpy stpcpy  | 
1011  |  | #  else  | 
1012  |  | /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in  | 
1013  |  |    YYDEST.  */  | 
1014  |  | static char *  | 
1015  |  | yystpcpy (char *yydest, const char *yysrc)  | 
1016  |  | { | 
1017  |  |   char *yyd = yydest;  | 
1018  |  |   const char *yys = yysrc;  | 
1019  |  |  | 
1020  |  |   while ((*yyd++ = *yys++) != '\0')  | 
1021  |  |     continue;  | 
1022  |  |  | 
1023  |  |   return yyd - 1;  | 
1024  |  | }  | 
1025  |  | #  endif  | 
1026  |  | # endif  | 
1027  |  |  | 
1028  |  | # ifndef yytnamerr  | 
1029  |  | /* Copy to YYRES the contents of YYSTR after stripping away unnecessary  | 
1030  |  |    quotes and backslashes, so that it's suitable for yyerror.  The  | 
1031  |  |    heuristic is that double-quoting is unnecessary unless the string  | 
1032  |  |    contains an apostrophe, a comma, or backslash (other than  | 
1033  |  |    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is  | 
1034  |  |    null, do not copy; instead, return the length of what the result  | 
1035  |  |    would have been.  */  | 
1036  |  | static YYPTRDIFF_T  | 
1037  |  | yytnamerr (char *yyres, const char *yystr)  | 
1038  |  | { | 
1039  |  |   if (*yystr == '"')  | 
1040  |  |     { | 
1041  |  |       YYPTRDIFF_T yyn = 0;  | 
1042  |  |       char const *yyp = yystr;  | 
1043  |  |  | 
1044  |  |       for (;;)  | 
1045  |  |         switch (*++yyp)  | 
1046  |  |           { | 
1047  |  |           case '\'':  | 
1048  |  |           case ',':  | 
1049  |  |             goto do_not_strip_quotes;  | 
1050  |  |  | 
1051  |  |           case '\\':  | 
1052  |  |             if (*++yyp != '\\')  | 
1053  |  |               goto do_not_strip_quotes;  | 
1054  |  |             else  | 
1055  |  |               goto append;  | 
1056  |  |  | 
1057  |  |           append:  | 
1058  |  |           default:  | 
1059  |  |             if (yyres)  | 
1060  |  |               yyres[yyn] = *yyp;  | 
1061  |  |             yyn++;  | 
1062  |  |             break;  | 
1063  |  |  | 
1064  |  |           case '"':  | 
1065  |  |             if (yyres)  | 
1066  |  |               yyres[yyn] = '\0';  | 
1067  |  |             return yyn;  | 
1068  |  |           }  | 
1069  |  |     do_not_strip_quotes: ;  | 
1070  |  |     }  | 
1071  |  |  | 
1072  |  |   if (yyres)  | 
1073  |  |     return yystpcpy (yyres, yystr) - yyres;  | 
1074  |  |   else  | 
1075  |  |     return yystrlen (yystr);  | 
1076  |  | }  | 
1077  |  | # endif  | 
1078  |  |  | 
1079  |  | /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message  | 
1080  |  |    about the unexpected token YYTOKEN for the state stack whose top is  | 
1081  |  |    YYSSP.  | 
1082  |  |  | 
1083  |  |    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is  | 
1084  |  |    not large enough to hold the message.  In that case, also set  | 
1085  |  |    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the  | 
1086  |  |    required number of bytes is too large to store.  */  | 
1087  |  | static int  | 
1088  |  | yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,  | 
1089  |  |                 yy_state_t *yyssp, int yytoken)  | 
1090  |  | { | 
1091  |  |   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; | 
1092  |  |   /* Internationalized format string. */  | 
1093  |  |   const char *yyformat = YY_NULLPTR;  | 
1094  |  |   /* Arguments of yyformat: reported tokens (one for the "unexpected",  | 
1095  |  |      one per "expected"). */  | 
1096  |  |   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];  | 
1097  |  |   /* Actual size of YYARG. */  | 
1098  |  |   int yycount = 0;  | 
1099  |  |   /* Cumulated lengths of YYARG.  */  | 
1100  |  |   YYPTRDIFF_T yysize = 0;  | 
1101  |  |  | 
1102  |  |   /* There are many possibilities here to consider:  | 
1103  |  |      - If this state is a consistent state with a default action, then  | 
1104  |  |        the only way this function was invoked is if the default action  | 
1105  |  |        is an error action.  In that case, don't check for expected  | 
1106  |  |        tokens because there are none.  | 
1107  |  |      - The only way there can be no lookahead present (in yychar) is if  | 
1108  |  |        this state is a consistent state with a default action.  Thus,  | 
1109  |  |        detecting the absence of a lookahead is sufficient to determine  | 
1110  |  |        that there is no unexpected or expected token to report.  In that  | 
1111  |  |        case, just report a simple "syntax error".  | 
1112  |  |      - Don't assume there isn't a lookahead just because this state is a  | 
1113  |  |        consistent state with a default action.  There might have been a  | 
1114  |  |        previous inconsistent state, consistent state with a non-default  | 
1115  |  |        action, or user semantic action that manipulated yychar.  | 
1116  |  |      - Of course, the expected token list depends on states to have  | 
1117  |  |        correct lookahead information, and it depends on the parser not  | 
1118  |  |        to perform extra reductions after fetching a lookahead from the  | 
1119  |  |        scanner and before detecting a syntax error.  Thus, state merging  | 
1120  |  |        (from LALR or IELR) and default reductions corrupt the expected  | 
1121  |  |        token list.  However, the list is correct for canonical LR with  | 
1122  |  |        one exception: it will still contain any token that will not be  | 
1123  |  |        accepted due to an error action in a later state.  | 
1124  |  |   */  | 
1125  |  |   if (yytoken != YYEMPTY)  | 
1126  |  |     { | 
1127  |  |       int yyn = yypact[+*yyssp];  | 
1128  |  |       YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);  | 
1129  |  |       yysize = yysize0;  | 
1130  |  |       yyarg[yycount++] = yytname[yytoken];  | 
1131  |  |       if (!yypact_value_is_default (yyn))  | 
1132  |  |         { | 
1133  |  |           /* Start YYX at -YYN if negative to avoid negative indexes in  | 
1134  |  |              YYCHECK.  In other words, skip the first -YYN actions for  | 
1135  |  |              this state because they are default actions.  */  | 
1136  |  |           int yyxbegin = yyn < 0 ? -yyn : 0;  | 
1137  |  |           /* Stay within bounds of both yycheck and yytname.  */  | 
1138  |  |           int yychecklim = YYLAST - yyn + 1;  | 
1139  |  |           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;  | 
1140  |  |           int yyx;  | 
1141  |  |  | 
1142  |  |           for (yyx = yyxbegin; yyx < yyxend; ++yyx)  | 
1143  |  |             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR  | 
1144  |  |                 && !yytable_value_is_error (yytable[yyx + yyn]))  | 
1145  |  |               { | 
1146  |  |                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)  | 
1147  |  |                   { | 
1148  |  |                     yycount = 1;  | 
1149  |  |                     yysize = yysize0;  | 
1150  |  |                     break;  | 
1151  |  |                   }  | 
1152  |  |                 yyarg[yycount++] = yytname[yyx];  | 
1153  |  |                 { | 
1154  |  |                   YYPTRDIFF_T yysize1  | 
1155  |  |                     = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);  | 
1156  |  |                   if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)  | 
1157  |  |                     yysize = yysize1;  | 
1158  |  |                   else  | 
1159  |  |                     return 2;  | 
1160  |  |                 }  | 
1161  |  |               }  | 
1162  |  |         }  | 
1163  |  |     }  | 
1164  |  |  | 
1165  |  |   switch (yycount)  | 
1166  |  |     { | 
1167  |  | # define YYCASE_(N, S)                      \  | 
1168  |  |       case N:                               \  | 
1169  |  |         yyformat = S;                       \  | 
1170  |  |       break  | 
1171  |  |     default: /* Avoid compiler warnings. */  | 
1172  |  |       YYCASE_(0, YY_("syntax error")); | 
1173  |  |       YYCASE_(1, YY_("syntax error, unexpected %s")); | 
1174  |  |       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); | 
1175  |  |       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); | 
1176  |  |       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); | 
1177  |  |       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); | 
1178  |  | # undef YYCASE_  | 
1179  |  |     }  | 
1180  |  |  | 
1181  |  |   { | 
1182  |  |     /* Don't count the "%s"s in the final size, but reserve room for  | 
1183  |  |        the terminator.  */  | 
1184  |  |     YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;  | 
1185  |  |     if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)  | 
1186  |  |       yysize = yysize1;  | 
1187  |  |     else  | 
1188  |  |       return 2;  | 
1189  |  |   }  | 
1190  |  |  | 
1191  |  |   if (*yymsg_alloc < yysize)  | 
1192  |  |     { | 
1193  |  |       *yymsg_alloc = 2 * yysize;  | 
1194  |  |       if (! (yysize <= *yymsg_alloc  | 
1195  |  |              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))  | 
1196  |  |         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;  | 
1197  |  |       return 1;  | 
1198  |  |     }  | 
1199  |  |  | 
1200  |  |   /* Avoid sprintf, as that infringes on the user's name space.  | 
1201  |  |      Don't have undefined behavior even if the translation  | 
1202  |  |      produced a string with the wrong number of "%s"s.  */  | 
1203  |  |   { | 
1204  |  |     char *yyp = *yymsg;  | 
1205  |  |     int yyi = 0;  | 
1206  |  |     while ((*yyp = *yyformat) != '\0')  | 
1207  |  |       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)  | 
1208  |  |         { | 
1209  |  |           yyp += yytnamerr (yyp, yyarg[yyi++]);  | 
1210  |  |           yyformat += 2;  | 
1211  |  |         }  | 
1212  |  |       else  | 
1213  |  |         { | 
1214  |  |           ++yyp;  | 
1215  |  |           ++yyformat;  | 
1216  |  |         }  | 
1217  |  |   }  | 
1218  |  |   return 0;  | 
1219  |  | }  | 
1220  |  | #endif /* YYERROR_VERBOSE */  | 
1221  |  |  | 
1222  |  | /*-----------------------------------------------.  | 
1223  |  | | Release the memory associated to this symbol.  |  | 
1224  |  | `-----------------------------------------------*/  | 
1225  |  |  | 
1226  |  | static void  | 
1227  |  | yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)  | 
1228  | 628k  | { | 
1229  | 628k  |   YYUSE (yyvaluep);  | 
1230  | 628k  |   if (!yymsg)  | 
1231  | 0  |     yymsg = "Deleting";  | 
1232  | 628k  |   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);  | 
1233  |  |  | 
1234  | 628k  |   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
1235  | 628k  |   YYUSE (yytype);  | 
1236  | 628k  |   YY_IGNORE_MAYBE_UNINITIALIZED_END  | 
1237  | 628k  | }  | 
1238  |  |  | 
1239  |  |  | 
1240  |  |  | 
1241  |  |  | 
1242  |  | /* The lookahead symbol.  */  | 
1243  |  | int yychar;  | 
1244  |  |  | 
1245  |  | /* The semantic value of the lookahead symbol.  */  | 
1246  |  | YYSTYPE yylval;  | 
1247  |  | /* Number of syntax errors so far.  */  | 
1248  |  | int yynerrs;  | 
1249  |  |  | 
1250  |  |  | 
1251  |  | /*----------.  | 
1252  |  | | yyparse.  |  | 
1253  |  | `----------*/  | 
1254  |  |  | 
1255  |  | int  | 
1256  |  | yyparse (void)  | 
1257  | 1.81k  | { | 
1258  | 1.81k  |     yy_state_fast_t yystate;  | 
1259  |  |     /* Number of tokens to shift before error messages enabled.  */  | 
1260  | 1.81k  |     int yyerrstatus;  | 
1261  |  |  | 
1262  |  |     /* The stacks and their tools:  | 
1263  |  |        'yyss': related to states.  | 
1264  |  |        'yyvs': related to semantic values.  | 
1265  |  |  | 
1266  |  |        Refer to the stacks through separate pointers, to allow yyoverflow  | 
1267  |  |        to reallocate them elsewhere.  */  | 
1268  |  |  | 
1269  |  |     /* The state stack.  */  | 
1270  | 1.81k  |     yy_state_t yyssa[YYINITDEPTH];  | 
1271  | 1.81k  |     yy_state_t *yyss;  | 
1272  | 1.81k  |     yy_state_t *yyssp;  | 
1273  |  |  | 
1274  |  |     /* The semantic value stack.  */  | 
1275  | 1.81k  |     YYSTYPE yyvsa[YYINITDEPTH];  | 
1276  | 1.81k  |     YYSTYPE *yyvs;  | 
1277  | 1.81k  |     YYSTYPE *yyvsp;  | 
1278  |  |  | 
1279  | 1.81k  |     YYPTRDIFF_T yystacksize;  | 
1280  |  |  | 
1281  | 1.81k  |   int yyn;  | 
1282  | 1.81k  |   int yyresult;  | 
1283  |  |   /* Lookahead token as an internal (translated) token number.  */  | 
1284  | 1.81k  |   int yytoken = 0;  | 
1285  |  |   /* The variables used to return semantic value and location from the  | 
1286  |  |      action routines.  */  | 
1287  | 1.81k  |   YYSTYPE yyval;  | 
1288  |  |  | 
1289  |  | #if YYERROR_VERBOSE  | 
1290  |  |   /* Buffer for error messages, and its allocated size.  */  | 
1291  |  |   char yymsgbuf[128];  | 
1292  |  |   char *yymsg = yymsgbuf;  | 
1293  |  |   YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;  | 
1294  |  | #endif  | 
1295  |  |  | 
1296  | 762k  | #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))  | 
1297  |  |  | 
1298  |  |   /* The number of symbols on the RHS of the reduced rule.  | 
1299  |  |      Keep to zero when no symbol should be popped.  */  | 
1300  | 1.81k  |   int yylen = 0;  | 
1301  |  |  | 
1302  | 1.81k  |   yyssp = yyss = yyssa;  | 
1303  | 1.81k  |   yyvsp = yyvs = yyvsa;  | 
1304  | 1.81k  |   yystacksize = YYINITDEPTH;  | 
1305  |  |  | 
1306  | 1.81k  |   YYDPRINTF ((stderr, "Starting parse\n"));  | 
1307  |  |  | 
1308  | 1.81k  |   yystate = 0;  | 
1309  | 1.81k  |   yyerrstatus = 0;  | 
1310  | 1.81k  |   yynerrs = 0;  | 
1311  | 1.81k  |   yychar = YYEMPTY; /* Cause a token to be read.  */  | 
1312  | 1.81k  |   goto yysetstate;  | 
1313  |  |  | 
1314  |  |  | 
1315  |  | /*------------------------------------------------------------.  | 
1316  |  | | yynewstate -- push a new state, which is found in yystate.  |  | 
1317  |  | `------------------------------------------------------------*/  | 
1318  | 1.16M  | yynewstate:  | 
1319  |  |   /* In all cases, when you get here, the value and location stacks  | 
1320  |  |      have just been pushed.  So pushing a state here evens the stacks.  */  | 
1321  | 1.16M  |   yyssp++;  | 
1322  |  |  | 
1323  |  |  | 
1324  |  | /*--------------------------------------------------------------------.  | 
1325  |  | | yysetstate -- set current state (the top of the stack) to yystate.  |  | 
1326  |  | `--------------------------------------------------------------------*/  | 
1327  | 1.16M  | yysetstate:  | 
1328  | 1.16M  |   YYDPRINTF ((stderr, "Entering state %d\n", yystate));  | 
1329  | 1.16M  |   YY_ASSERT (0 <= yystate && yystate < YYNSTATES);  | 
1330  | 1.16M  |   YY_IGNORE_USELESS_CAST_BEGIN  | 
1331  | 1.16M  |   *yyssp = YY_CAST (yy_state_t, yystate);  | 
1332  | 1.16M  |   YY_IGNORE_USELESS_CAST_END  | 
1333  |  |  | 
1334  | 1.16M  |   if (yyss + yystacksize - 1 <= yyssp)  | 
1335  |  | #if !defined yyoverflow && !defined YYSTACK_RELOCATE  | 
1336  |  |     goto yyexhaustedlab;  | 
1337  |  | #else  | 
1338  | 0  |     { | 
1339  |  |       /* Get the current used size of the three stacks, in elements.  */  | 
1340  | 0  |       YYPTRDIFF_T yysize = yyssp - yyss + 1;  | 
1341  |  | 
  | 
1342  |  | # if defined yyoverflow  | 
1343  |  |       { | 
1344  |  |         /* Give user a chance to reallocate the stack.  Use copies of  | 
1345  |  |            these so that the &'s don't force the real ones into  | 
1346  |  |            memory.  */  | 
1347  |  |         yy_state_t *yyss1 = yyss;  | 
1348  |  |         YYSTYPE *yyvs1 = yyvs;  | 
1349  |  |  | 
1350  |  |         /* Each stack pointer address is followed by the size of the  | 
1351  |  |            data in use in that stack, in bytes.  This used to be a  | 
1352  |  |            conditional around just the two extra args, but that might  | 
1353  |  |            be undefined if yyoverflow is a macro.  */  | 
1354  |  |         yyoverflow (YY_("memory exhausted"), | 
1355  |  |                     &yyss1, yysize * YYSIZEOF (*yyssp),  | 
1356  |  |                     &yyvs1, yysize * YYSIZEOF (*yyvsp),  | 
1357  |  |                     &yystacksize);  | 
1358  |  |         yyss = yyss1;  | 
1359  |  |         yyvs = yyvs1;  | 
1360  |  |       }  | 
1361  |  | # else /* defined YYSTACK_RELOCATE */  | 
1362  |  |       /* Extend the stack our own way.  */  | 
1363  | 0  |       if (YYMAXDEPTH <= yystacksize)  | 
1364  | 0  |         goto yyexhaustedlab;  | 
1365  | 0  |       yystacksize *= 2;  | 
1366  | 0  |       if (YYMAXDEPTH < yystacksize)  | 
1367  | 0  |         yystacksize = YYMAXDEPTH;  | 
1368  |  | 
  | 
1369  | 0  |       { | 
1370  | 0  |         yy_state_t *yyss1 = yyss;  | 
1371  | 0  |         union yyalloc *yyptr =  | 
1372  | 0  |           YY_CAST (union yyalloc *,  | 
1373  | 0  |                    YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));  | 
1374  | 0  |         if (! yyptr)  | 
1375  | 0  |           goto yyexhaustedlab;  | 
1376  | 0  |         YYSTACK_RELOCATE (yyss_alloc, yyss);  | 
1377  | 0  |         YYSTACK_RELOCATE (yyvs_alloc, yyvs);  | 
1378  | 0  | # undef YYSTACK_RELOCATE  | 
1379  | 0  |         if (yyss1 != yyssa)  | 
1380  | 0  |           YYSTACK_FREE (yyss1);  | 
1381  | 0  |       }  | 
1382  | 0  | # endif  | 
1383  |  |  | 
1384  | 0  |       yyssp = yyss + yysize - 1;  | 
1385  | 0  |       yyvsp = yyvs + yysize - 1;  | 
1386  |  | 
  | 
1387  | 0  |       YY_IGNORE_USELESS_CAST_BEGIN  | 
1388  | 0  |       YYDPRINTF ((stderr, "Stack size increased to %ld\n",  | 
1389  | 0  |                   YY_CAST (long, yystacksize)));  | 
1390  | 0  |       YY_IGNORE_USELESS_CAST_END  | 
1391  |  | 
  | 
1392  | 0  |       if (yyss + yystacksize - 1 <= yyssp)  | 
1393  | 0  |         YYABORT;  | 
1394  | 0  |     }  | 
1395  | 1.16M  | #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */  | 
1396  |  |  | 
1397  | 1.16M  |   if (yystate == YYFINAL)  | 
1398  | 863  |     YYACCEPT;  | 
1399  |  |  | 
1400  | 1.16M  |   goto yybackup;  | 
1401  |  |  | 
1402  |  |  | 
1403  |  | /*-----------.  | 
1404  |  | | yybackup.  |  | 
1405  |  | `-----------*/  | 
1406  | 1.16M  | yybackup:  | 
1407  |  |   /* Do appropriate processing given the current state.  Read a  | 
1408  |  |      lookahead token if we need one and don't already have one.  */  | 
1409  |  |  | 
1410  |  |   /* First try to decide what to do without reference to lookahead token.  */  | 
1411  | 1.16M  |   yyn = yypact[yystate];  | 
1412  | 1.16M  |   if (yypact_value_is_default (yyn))  | 
1413  | 380k  |     goto yydefault;  | 
1414  |  |  | 
1415  |  |   /* Not known => get a lookahead token if don't already have one.  */  | 
1416  |  |  | 
1417  |  |   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */  | 
1418  | 785k  |   if (yychar == YYEMPTY)  | 
1419  | 678k  |     { | 
1420  | 678k  |       YYDPRINTF ((stderr, "Reading a token: "));  | 
1421  | 678k  |       yychar = yylex ();  | 
1422  | 678k  |     }  | 
1423  |  |  | 
1424  | 785k  |   if (yychar <= YYEOF)  | 
1425  | 4.49k  |     { | 
1426  | 4.49k  |       yychar = yytoken = YYEOF;  | 
1427  | 4.49k  |       YYDPRINTF ((stderr, "Now at end of input.\n"));  | 
1428  | 4.49k  |     }  | 
1429  | 780k  |   else  | 
1430  | 780k  |     { | 
1431  | 780k  |       yytoken = YYTRANSLATE (yychar);  | 
1432  | 780k  |       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); | 
1433  | 780k  |     }  | 
1434  |  |  | 
1435  |  |   /* If the proper action on seeing token YYTOKEN is to reduce or to  | 
1436  |  |      detect an error, take that action.  */  | 
1437  | 785k  |   yyn += yytoken;  | 
1438  | 785k  |   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)  | 
1439  | 378k  |     goto yydefault;  | 
1440  | 407k  |   yyn = yytable[yyn];  | 
1441  | 407k  |   if (yyn <= 0)  | 
1442  | 13.2k  |     { | 
1443  | 13.2k  |       if (yytable_value_is_error (yyn))  | 
1444  | 0  |         goto yyerrlab;  | 
1445  | 13.2k  |       yyn = -yyn;  | 
1446  | 13.2k  |       goto yyreduce;  | 
1447  | 13.2k  |     }  | 
1448  |  |  | 
1449  |  |   /* Count tokens shifted since error; after three, turn off error  | 
1450  |  |      status.  */  | 
1451  | 393k  |   if (yyerrstatus)  | 
1452  | 136k  |     yyerrstatus--;  | 
1453  |  |  | 
1454  |  |   /* Shift the lookahead token.  */  | 
1455  | 393k  |   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); | 
1456  | 393k  |   yystate = yyn;  | 
1457  | 393k  |   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
1458  | 393k  |   *++yyvsp = yylval;  | 
1459  | 393k  |   YY_IGNORE_MAYBE_UNINITIALIZED_END  | 
1460  |  |  | 
1461  |  |   /* Discard the shifted token.  */  | 
1462  | 393k  |   yychar = YYEMPTY;  | 
1463  | 393k  |   goto yynewstate;  | 
1464  |  |  | 
1465  |  |  | 
1466  |  | /*-----------------------------------------------------------.  | 
1467  |  | | yydefault -- do the default action for the current state.  |  | 
1468  |  | `-----------------------------------------------------------*/  | 
1469  | 758k  | yydefault:  | 
1470  | 758k  |   yyn = yydefact[yystate];  | 
1471  | 758k  |   if (yyn == 0)  | 
1472  | 353k  |     goto yyerrlab;  | 
1473  | 404k  |   goto yyreduce;  | 
1474  |  |  | 
1475  |  |  | 
1476  |  | /*-----------------------------.  | 
1477  |  | | yyreduce -- do a reduction.  |  | 
1478  |  | `-----------------------------*/  | 
1479  | 418k  | yyreduce:  | 
1480  |  |   /* yyn is the number of a rule to reduce with.  */  | 
1481  | 418k  |   yylen = yyr2[yyn];  | 
1482  |  |  | 
1483  |  |   /* If YYLEN is nonzero, implement the default value of the action:  | 
1484  |  |      '$$ = $1'.  | 
1485  |  |  | 
1486  |  |      Otherwise, the following line sets YYVAL to garbage.  | 
1487  |  |      This behavior is undocumented and Bison  | 
1488  |  |      users should not rely upon it.  Assigning to YYVAL  | 
1489  |  |      unconditionally makes the parser a bit smaller, and it avoids a  | 
1490  |  |      GCC warning that YYVAL may be used uninitialized.  */  | 
1491  | 418k  |   yyval = yyvsp[1-yylen];  | 
1492  |  |  | 
1493  |  |  | 
1494  | 418k  |   YY_REDUCE_PRINT (yyn);  | 
1495  | 418k  |   switch (yyn)  | 
1496  | 418k  |     { | 
1497  | 1.81k  |   case 3:  | 
1498  | 1.81k  | #line 137 "cue_parser.y"  | 
1499  | 1.81k  |                       { | 
1500  | 1.81k  |     cd = cd_init();  | 
1501  | 1.81k  |     cdtext = cd_get_cdtext(cd);  | 
1502  | 1.81k  |     rem = cd_get_rem(cd);  | 
1503  | 1.81k  |   }  | 
1504  | 1.81k  | #line 1505 "/work/cue_parser.c"  | 
1505  | 1.81k  |     break;  | 
1506  |  |  | 
1507  | 521  |   case 6:  | 
1508  | 521  | #line 150 "cue_parser.y"  | 
1509  | 521  |                               { cd_set_catalog(cd, (yyvsp[-1].sval)); } | 
1510  | 521  | #line 1511 "/work/cue_parser.c"  | 
1511  | 521  |     break;  | 
1512  |  |  | 
1513  | 392  |   case 7:  | 
1514  | 392  | #line 151 "cue_parser.y"  | 
1515  | 392  |                                  { cd_set_cdtextfile(cd, (yyvsp[-1].sval)); } | 
1516  | 392  | #line 1517 "/work/cue_parser.c"  | 
1517  | 392  |     break;  | 
1518  |  |  | 
1519  | 5.63k  |   case 12:  | 
1520  | 5.63k  | #line 159 "cue_parser.y"  | 
1521  | 5.63k  |                                         { | 
1522  | 5.63k  |     if (NULL != new_filename) { | 
1523  | 3.07k  |       yyerror("too many files specified\n"); | 
1524  | 3.07k  |     }  | 
1525  | 5.63k  |     if (track && track_get_index(track, 1) == -1) { | 
1526  | 621  |       track_set_filename (track, (yyvsp[-2].sval));  | 
1527  | 5.01k  |     } else { | 
1528  | 5.01k  |       new_filename = strncpy(fnamebuf, (yyvsp[-2].sval), sizeof(fnamebuf));  | 
1529  | 5.01k  |       new_filename[sizeof(fnamebuf) - 1] = '\0';  | 
1530  | 5.01k  |     }  | 
1531  | 5.63k  |   }  | 
1532  | 5.63k  | #line 1533 "/work/cue_parser.c"  | 
1533  | 5.63k  |     break;  | 
1534  |  |  | 
1535  | 8.26k  |   case 22:  | 
1536  | 8.26k  | #line 191 "cue_parser.y"  | 
1537  | 8.26k  |                      { | 
1538  |  |     /* save previous track, to later set length */  | 
1539  | 8.26k  |     prev_track = track;  | 
1540  |  |  | 
1541  | 8.26k  |     track = cd_add_track(cd);  | 
1542  | 8.26k  |     if (prev_track == track)  | 
1543  | 3.87k  |       prev_track = NULL;  | 
1544  | 8.26k  |     cdtext = track_get_cdtext(track);  | 
1545  | 8.26k  |     rem = track_get_rem(track);  | 
1546  |  |  | 
1547  | 8.26k  |     cur_filename = new_filename;  | 
1548  | 8.26k  |     if (NULL != cur_filename)  | 
1549  | 1.83k  |       prev_filename = cur_filename;  | 
1550  |  |  | 
1551  | 8.26k  |     if (NULL == prev_filename)  | 
1552  | 3.33k  |       yyerror("no file specified for track"); | 
1553  | 4.92k  |     else  | 
1554  | 4.92k  |       track_set_filename(track, prev_filename);  | 
1555  |  |  | 
1556  | 8.26k  |     new_filename = NULL;  | 
1557  | 8.26k  |   }  | 
1558  | 8.26k  | #line 1559 "/work/cue_parser.c"  | 
1559  | 8.26k  |     break;  | 
1560  |  |  | 
1561  | 4.99k  |   case 23:  | 
1562  | 4.99k  | #line 215 "cue_parser.y"  | 
1563  | 4.99k  |                                        { | 
1564  | 4.99k  |     track_set_mode(track, (yyvsp[-1].ival));  | 
1565  | 4.99k  |   }  | 
1566  | 4.99k  | #line 1567 "/work/cue_parser.c"  | 
1567  | 4.99k  |     break;  | 
1568  |  |  | 
1569  | 18.0k  |   case 37:  | 
1570  | 18.0k  | #line 240 "cue_parser.y"  | 
1571  | 18.0k  |                                  { track_set_isrc(track, (yyvsp[-1].sval)); } | 
1572  | 18.0k  | #line 1573 "/work/cue_parser.c"  | 
1573  | 18.0k  |     break;  | 
1574  |  |  | 
1575  | 3.39k  |   case 38:  | 
1576  | 3.39k  | #line 241 "cue_parser.y"  | 
1577  | 3.39k  |                            { track_set_zero_pre(track, (yyvsp[-1].ival)); } | 
1578  | 3.39k  | #line 1579 "/work/cue_parser.c"  | 
1579  | 3.39k  |     break;  | 
1580  |  |  | 
1581  | 17.7k  |   case 39:  | 
1582  | 17.7k  | #line 242 "cue_parser.y"  | 
1583  | 17.7k  |                                  { | 
1584  | 17.7k  |     long prev_length;  | 
1585  |  |  | 
1586  |  |     /* Set previous track length if it has not been set */  | 
1587  | 17.7k  |     if (NULL != prev_track && NULL == cur_filename  | 
1588  | 17.7k  |         && track_get_length (prev_track) == -1) { | 
1589  |  |       /* track shares file with previous track */  | 
1590  | 875  |       prev_length = (yyvsp[-1].ival) - track_get_start(prev_track);  | 
1591  | 875  |       track_set_length(prev_track, prev_length);  | 
1592  | 875  |     }  | 
1593  |  |  | 
1594  | 17.7k  |     if (1 == (yyvsp[-2].ival)) { | 
1595  |  |       /* INDEX 01 */  | 
1596  | 12.0k  |       track_set_start(track, (yyvsp[-1].ival));  | 
1597  |  |  | 
1598  | 12.0k  |       long idx00 = track_get_index (track, 0);  | 
1599  |  |  | 
1600  | 12.0k  |       if (idx00 != -1 && (yyvsp[-1].ival) != 0)  | 
1601  | 5.22k  |         track_set_zero_pre (track, (yyvsp[-1].ival) - idx00);  | 
1602  | 12.0k  |     }  | 
1603  |  |  | 
1604  | 17.7k  |     track_set_index (track, (yyvsp[-2].ival), (yyvsp[-1].ival));  | 
1605  | 17.7k  |   }  | 
1606  | 17.7k  | #line 1607 "/work/cue_parser.c"  | 
1607  | 17.7k  |     break;  | 
1608  |  |  | 
1609  | 398  |   case 40:  | 
1610  | 398  | #line 265 "cue_parser.y"  | 
1611  | 398  |                             { track_set_zero_post(track, (yyvsp[-1].ival)); } | 
1612  | 398  | #line 1613 "/work/cue_parser.c"  | 
1613  | 398  |     break;  | 
1614  |  |  | 
1615  | 34.0k  |   case 44:  | 
1616  | 34.0k  | #line 272 "cue_parser.y"  | 
1617  | 34.0k  |                                  { track_set_flag(track, (yyvsp[0].ival)); } | 
1618  | 34.0k  | #line 1619 "/work/cue_parser.c"  | 
1619  | 34.0k  |     break;  | 
1620  |  |  | 
1621  | 10.5k  |   case 49:  | 
1622  | 10.5k  | #line 283 "cue_parser.y"  | 
1623  | 10.5k  |                                   { cdtext_set ((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); } | 
1624  | 10.5k  | #line 1625 "/work/cue_parser.c"  | 
1625  | 10.5k  |     break;  | 
1626  |  |  | 
1627  | 6.36k  |   case 64:  | 
1628  | 6.36k  | #line 304 "cue_parser.y"  | 
1629  | 6.36k  |                                        { (yyval.ival) = time_msf_to_frame((yyvsp[-4].ival), (yyvsp[-2].ival), (yyvsp[0].ival)); } | 
1630  | 6.36k  | #line 1631 "/work/cue_parser.c"  | 
1631  | 6.36k  |     break;  | 
1632  |  |  | 
1633  | 300  |   case 65:  | 
1634  | 300  | #line 308 "cue_parser.y"  | 
1635  | 300  |                                { rem_set((yyvsp[-2].ival), (yyvsp[-1].sval), rem); } | 
1636  | 300  | #line 1637 "/work/cue_parser.c"  | 
1637  | 300  |     break;  | 
1638  |  |  | 
1639  | 886  |   case 66:  | 
1640  | 886  | #line 309 "cue_parser.y"  | 
1641  | 886  |                                 { cdtext_set((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); } | 
1642  | 886  | #line 1643 "/work/cue_parser.c"  | 
1643  | 886  |     break;  | 
1644  |  |  | 
1645  |  |  | 
1646  | 0  | #line 1647 "/work/cue_parser.c"  | 
1647  |  |  | 
1648  | 304k  |       default: break;  | 
1649  | 418k  |     }  | 
1650  |  |   /* User semantic actions sometimes alter yychar, and that requires  | 
1651  |  |      that yytoken be updated with the new translation.  We take the  | 
1652  |  |      approach of translating immediately before every use of yytoken.  | 
1653  |  |      One alternative is translating here after every semantic action,  | 
1654  |  |      but that translation would be missed if the semantic action invokes  | 
1655  |  |      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or  | 
1656  |  |      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an  | 
1657  |  |      incorrect destructor might then be invoked immediately.  In the  | 
1658  |  |      case of YYERROR or YYBACKUP, subsequent parser actions might lead  | 
1659  |  |      to an incorrect destructor call or verbose syntax error message  | 
1660  |  |      before the lookahead is translated.  */  | 
1661  | 418k  |   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); | 
1662  |  |  | 
1663  | 418k  |   YYPOPSTACK (yylen);  | 
1664  | 418k  |   yylen = 0;  | 
1665  | 418k  |   YY_STACK_PRINT (yyss, yyssp);  | 
1666  |  |  | 
1667  | 418k  |   *++yyvsp = yyval;  | 
1668  |  |  | 
1669  |  |   /* Now 'shift' the result of the reduction.  Determine what state  | 
1670  |  |      that goes to, based on the state we popped back to and the rule  | 
1671  |  |      number reduced by.  */  | 
1672  | 418k  |   { | 
1673  | 418k  |     const int yylhs = yyr1[yyn] - YYNTOKENS;  | 
1674  | 418k  |     const int yyi = yypgoto[yylhs] + *yyssp;  | 
1675  | 418k  |     yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp  | 
1676  | 418k  |                ? yytable[yyi]  | 
1677  | 418k  |                : yydefgoto[yylhs]);  | 
1678  | 418k  |   }  | 
1679  |  |  | 
1680  | 418k  |   goto yynewstate;  | 
1681  |  |  | 
1682  |  |  | 
1683  |  | /*--------------------------------------.  | 
1684  |  | | yyerrlab -- here on detecting error.  |  | 
1685  |  | `--------------------------------------*/  | 
1686  | 353k  | yyerrlab:  | 
1687  |  |   /* Make sure we have latest lookahead translation.  See comments at  | 
1688  |  |      user semantic actions for why this is necessary.  */  | 
1689  | 353k  |   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);  | 
1690  |  |  | 
1691  |  |   /* If not already recovering from an error, report this error.  */  | 
1692  | 353k  |   if (!yyerrstatus)  | 
1693  | 33.4k  |     { | 
1694  | 33.4k  |       ++yynerrs;  | 
1695  | 33.4k  | #if ! YYERROR_VERBOSE  | 
1696  | 33.4k  |       yyerror (YY_("syntax error")); | 
1697  |  | #else  | 
1698  |  | # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \  | 
1699  |  |                                         yyssp, yytoken)  | 
1700  |  |       { | 
1701  |  |         char const *yymsgp = YY_("syntax error"); | 
1702  |  |         int yysyntax_error_status;  | 
1703  |  |         yysyntax_error_status = YYSYNTAX_ERROR;  | 
1704  |  |         if (yysyntax_error_status == 0)  | 
1705  |  |           yymsgp = yymsg;  | 
1706  |  |         else if (yysyntax_error_status == 1)  | 
1707  |  |           { | 
1708  |  |             if (yymsg != yymsgbuf)  | 
1709  |  |               YYSTACK_FREE (yymsg);  | 
1710  |  |             yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));  | 
1711  |  |             if (!yymsg)  | 
1712  |  |               { | 
1713  |  |                 yymsg = yymsgbuf;  | 
1714  |  |                 yymsg_alloc = sizeof yymsgbuf;  | 
1715  |  |                 yysyntax_error_status = 2;  | 
1716  |  |               }  | 
1717  |  |             else  | 
1718  |  |               { | 
1719  |  |                 yysyntax_error_status = YYSYNTAX_ERROR;  | 
1720  |  |                 yymsgp = yymsg;  | 
1721  |  |               }  | 
1722  |  |           }  | 
1723  |  |         yyerror (yymsgp);  | 
1724  |  |         if (yysyntax_error_status == 2)  | 
1725  |  |           goto yyexhaustedlab;  | 
1726  |  |       }  | 
1727  |  | # undef YYSYNTAX_ERROR  | 
1728  |  | #endif  | 
1729  | 33.4k  |     }  | 
1730  |  |  | 
1731  |  |  | 
1732  |  |  | 
1733  | 353k  |   if (yyerrstatus == 3)  | 
1734  | 285k  |     { | 
1735  |  |       /* If just tried and failed to reuse lookahead token after an  | 
1736  |  |          error, discard it.  */  | 
1737  |  |  | 
1738  | 285k  |       if (yychar <= YYEOF)  | 
1739  | 951  |         { | 
1740  |  |           /* Return failure if at end of input.  */  | 
1741  | 951  |           if (yychar == YYEOF)  | 
1742  | 951  |             YYABORT;  | 
1743  | 951  |         }  | 
1744  | 284k  |       else  | 
1745  | 284k  |         { | 
1746  | 284k  |           yydestruct ("Error: discarding", | 
1747  | 284k  |                       yytoken, &yylval);  | 
1748  | 284k  |           yychar = YYEMPTY;  | 
1749  | 284k  |         }  | 
1750  | 285k  |     }  | 
1751  |  |  | 
1752  |  |   /* Else will try to reuse lookahead token after shifting the error  | 
1753  |  |      token.  */  | 
1754  | 352k  |   goto yyerrlab1;  | 
1755  |  |  | 
1756  |  |  | 
1757  |  | /*---------------------------------------------------.  | 
1758  |  | | yyerrorlab -- error raised explicitly by YYERROR.  |  | 
1759  |  | `---------------------------------------------------*/  | 
1760  | 352k  | yyerrorlab:  | 
1761  |  |   /* Pacify compilers when the user code never invokes YYERROR and the  | 
1762  |  |      label yyerrorlab therefore never appears in user code.  */  | 
1763  | 0  |   if (0)  | 
1764  | 0  |     YYERROR;  | 
1765  |  |  | 
1766  |  |   /* Do not reclaim the symbols of the rule whose action triggered  | 
1767  |  |      this YYERROR.  */  | 
1768  | 0  |   YYPOPSTACK (yylen);  | 
1769  | 0  |   yylen = 0;  | 
1770  | 0  |   YY_STACK_PRINT (yyss, yyssp);  | 
1771  | 0  |   yystate = *yyssp;  | 
1772  | 0  |   goto yyerrlab1;  | 
1773  |  |  | 
1774  |  |  | 
1775  |  | /*-------------------------------------------------------------.  | 
1776  |  | | yyerrlab1 -- common code for both syntax error and YYERROR.  |  | 
1777  |  | `-------------------------------------------------------------*/  | 
1778  | 352k  | yyerrlab1:  | 
1779  | 352k  |   yyerrstatus = 3;      /* Each real token shifted decrements this.  */  | 
1780  |  |  | 
1781  | 352k  |   for (;;)  | 
1782  | 691k  |     { | 
1783  | 691k  |       yyn = yypact[yystate];  | 
1784  | 691k  |       if (!yypact_value_is_default (yyn))  | 
1785  | 689k  |         { | 
1786  | 689k  |           yyn += YYTERROR;  | 
1787  | 689k  |           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)  | 
1788  | 352k  |             { | 
1789  | 352k  |               yyn = yytable[yyn];  | 
1790  | 352k  |               if (0 < yyn)  | 
1791  | 352k  |                 break;  | 
1792  | 352k  |             }  | 
1793  | 689k  |         }  | 
1794  |  |  | 
1795  |  |       /* Pop the current state because it cannot handle the error token.  */  | 
1796  | 338k  |       if (yyssp == yyss)  | 
1797  | 0  |         YYABORT;  | 
1798  |  |  | 
1799  |  |  | 
1800  | 338k  |       yydestruct ("Error: popping", | 
1801  | 338k  |                   yystos[yystate], yyvsp);  | 
1802  | 338k  |       YYPOPSTACK (1);  | 
1803  | 338k  |       yystate = *yyssp;  | 
1804  | 338k  |       YY_STACK_PRINT (yyss, yyssp);  | 
1805  | 338k  |     }  | 
1806  |  |  | 
1807  | 352k  |   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN  | 
1808  | 352k  |   *++yyvsp = yylval;  | 
1809  | 352k  |   YY_IGNORE_MAYBE_UNINITIALIZED_END  | 
1810  |  |  | 
1811  |  |  | 
1812  |  |   /* Shift the error token.  */  | 
1813  | 352k  |   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); | 
1814  |  |  | 
1815  | 352k  |   yystate = yyn;  | 
1816  | 352k  |   goto yynewstate;  | 
1817  |  |  | 
1818  |  |  | 
1819  |  | /*-------------------------------------.  | 
1820  |  | | yyacceptlab -- YYACCEPT comes here.  |  | 
1821  |  | `-------------------------------------*/  | 
1822  | 863  | yyacceptlab:  | 
1823  | 863  |   yyresult = 0;  | 
1824  | 863  |   goto yyreturn;  | 
1825  |  |  | 
1826  |  |  | 
1827  |  | /*-----------------------------------.  | 
1828  |  | | yyabortlab -- YYABORT comes here.  |  | 
1829  |  | `-----------------------------------*/  | 
1830  | 951  | yyabortlab:  | 
1831  | 951  |   yyresult = 1;  | 
1832  | 951  |   goto yyreturn;  | 
1833  |  |  | 
1834  |  |  | 
1835  | 0  | #if !defined yyoverflow || YYERROR_VERBOSE  | 
1836  |  | /*-------------------------------------------------.  | 
1837  |  | | yyexhaustedlab -- memory exhaustion comes here.  |  | 
1838  |  | `-------------------------------------------------*/  | 
1839  | 0  | yyexhaustedlab:  | 
1840  | 0  |   yyerror (YY_("memory exhausted")); | 
1841  | 0  |   yyresult = 2;  | 
1842  |  |   /* Fall through.  */  | 
1843  | 0  | #endif  | 
1844  |  |  | 
1845  |  |  | 
1846  |  | /*-----------------------------------------------------.  | 
1847  |  | | yyreturn -- parsing is finished, return the result.  |  | 
1848  |  | `-----------------------------------------------------*/  | 
1849  | 1.81k  | yyreturn:  | 
1850  | 1.81k  |   if (yychar != YYEMPTY)  | 
1851  | 951  |     { | 
1852  |  |       /* Make sure we have latest lookahead translation.  See comments at  | 
1853  |  |          user semantic actions for why this is necessary.  */  | 
1854  | 951  |       yytoken = YYTRANSLATE (yychar);  | 
1855  | 951  |       yydestruct ("Cleanup: discarding lookahead", | 
1856  | 951  |                   yytoken, &yylval);  | 
1857  | 951  |     }  | 
1858  |  |   /* Do not reclaim the symbols of the rule whose action triggered  | 
1859  |  |      this YYABORT or YYACCEPT.  */  | 
1860  | 1.81k  |   YYPOPSTACK (yylen);  | 
1861  | 1.81k  |   YY_STACK_PRINT (yyss, yyssp);  | 
1862  | 6.41k  |   while (yyssp != yyss)  | 
1863  | 4.60k  |     { | 
1864  | 4.60k  |       yydestruct ("Cleanup: popping", | 
1865  | 4.60k  |                   yystos[+*yyssp], yyvsp);  | 
1866  | 4.60k  |       YYPOPSTACK (1);  | 
1867  | 4.60k  |     }  | 
1868  | 1.81k  | #ifndef yyoverflow  | 
1869  | 1.81k  |   if (yyss != yyssa)  | 
1870  | 0  |     YYSTACK_FREE (yyss);  | 
1871  | 1.81k  | #endif  | 
1872  |  | #if YYERROR_VERBOSE  | 
1873  |  |   if (yymsg != yymsgbuf)  | 
1874  |  |     YYSTACK_FREE (yymsg);  | 
1875  |  | #endif  | 
1876  | 1.81k  |   return yyresult;  | 
1877  | 0  | }  | 
1878  |  | #line 319 "cue_parser.y"  | 
1879  |  |  | 
1880  |  |  | 
1881  |  | /* lexer interface */  | 
1882  |  |  | 
1883  |  | void yyerror (const char *s)  | 
1884  | 39.8k  | { | 
1885  | 39.8k  |   fprintf(stderr, "%d: %s\n", yylineno, s);  | 
1886  | 39.8k  | }  | 
1887  |  |  | 
1888  |  | static void reset_static_vars()  | 
1889  | 1.81k  | { | 
1890  | 1.81k  |   cd = NULL;  | 
1891  | 1.81k  |   track = NULL;  | 
1892  | 1.81k  |   prev_track = NULL;  | 
1893  | 1.81k  |   cdtext = NULL;  | 
1894  | 1.81k  |   rem = NULL;  | 
1895  | 1.81k  |   prev_filename = NULL;  | 
1896  | 1.81k  |   cur_filename = NULL;  | 
1897  | 1.81k  |   new_filename = NULL;  | 
1898  | 1.81k  | }  | 
1899  |  |  | 
1900  |  | Cd *cue_parse_file(FILE *fp)  | 
1901  | 0  | { | 
1902  | 0  |   YY_BUFFER_STATE buffer = NULL;  | 
1903  |  | 
  | 
1904  | 0  |   yyin = fp;  | 
1905  |  | 
  | 
1906  | 0  |   buffer = yy_create_buffer(yyin, YY_BUF_SIZE);  | 
1907  |  | 
  | 
1908  | 0  |   yy_switch_to_buffer(buffer);  | 
1909  |  | 
  | 
1910  | 0  |   Cd *ret_cd = NULL;  | 
1911  |  | 
  | 
1912  | 0  |   if (0 == yyparse()) ret_cd = cd;  | 
1913  | 0  |   else  | 
1914  | 0  |   { | 
1915  | 0  |     ret_cd = NULL;  | 
1916  | 0  |     if (cd) cd_delete(cd);  | 
1917  | 0  |   }  | 
1918  |  | 
  | 
1919  | 0  |   yy_delete_buffer(buffer);  | 
1920  | 0  |   reset_static_vars();  | 
1921  |  | 
  | 
1922  | 0  |   return ret_cd;  | 
1923  | 0  | }  | 
1924  |  |  | 
1925  |  | Cd *cue_parse_string(const char* string)  | 
1926  | 1.81k  | { | 
1927  | 1.81k  |   YY_BUFFER_STATE buffer = NULL;  | 
1928  |  |  | 
1929  | 1.81k  |   buffer = yy_scan_string(string);  | 
1930  |  |  | 
1931  | 1.81k  |   Cd *ret_cd = NULL;  | 
1932  |  |  | 
1933  | 1.81k  |   if (0 == yyparse()) ret_cd = cd;  | 
1934  | 951  |   else  | 
1935  | 951  |   { | 
1936  | 951  |     ret_cd = NULL;  | 
1937  | 951  |     if (cd) cd_delete(cd);  | 
1938  | 951  |   }  | 
1939  |  |  | 
1940  | 1.81k  |   yy_delete_buffer(buffer);  | 
1941  | 1.81k  |   reset_static_vars();  | 
1942  |  |  | 
1943  | 1.81k  |   return ret_cd;  | 
1944  | 1.81k  | }  |