Coverage Report

Created: 2025-10-30 07:00

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