Coverage Report

Created: 2025-11-24 06:44

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
356k
#   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.93k
#  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
126
#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
3.09k
#  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
470k
# 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
355k
#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
21
#  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
21
#   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
42
# 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
42
    do                                                                  \
519
42
      {                                                                 \
520
42
        YYPTRDIFF_T yynewbytes;                                         \
521
42
        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
522
42
        Stack = &yyptr->Stack_alloc;                                    \
523
42
        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
524
42
        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
525
42
      }                                                                 \
526
42
    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
42
      __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
355k
#define YYFINAL  3
552
/* YYLAST -- Last index in YYTABLE.  */
553
684k
#define YYLAST   162
554
555
/* YYNTOKENS -- Number of terminals.  */
556
117k
#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
377k
#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
511k
  (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
602k
#define YYPACT_NINF (-67)
663
664
#define yypact_value_is_default(Yyn) \
665
602k
  ((Yyn) == YYPACT_NINF)
666
667
#define YYTABLE_NINF (-76)
668
669
#define yytable_value_is_error(Yyn) \
670
5.84k
  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
593k
#define YYEMPTY         (-2)
818
359k
#define YYEOF           0
819
820
844
#define YYACCEPT        goto yyacceptlab
821
1.02k
#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
390k
#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
572k
# define YYDPRINTF(Args)                        \
859
572k
do {                                            \
860
572k
  if (yydebug)                                  \
861
572k
    YYFPRINTF Args;                             \
862
572k
} 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
832k
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
871
832k
do {                                                                      \
872
832k
  if (yydebug)                                                            \
873
832k
    {                                                                     \
874
0
      YYFPRINTF (stderr, "%s ", Title);                                   \
875
0
      yy_symbol_print (stderr,                                            \
876
0
                  Type, Value); \
877
0
      YYFPRINTF (stderr, "\n");                                           \
878
0
    }                                                                     \
879
832k
} 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
233k
# define YY_STACK_PRINT(Bottom, Top)                            \
935
233k
do {                                                            \
936
233k
  if (yydebug)                                                  \
937
233k
    yy_stack_print ((Bottom), (Top));                           \
938
233k
} 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
117k
# define YY_REDUCE_PRINT(Rule)          \
966
117k
do {                                    \
967
117k
  if (yydebug)                          \
968
117k
    yy_reduce_print (yyssp, yyvsp, Rule); \
969
117k
} 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.87k
# 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
44
# 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
235k
{
1238
235k
  YYUSE (yyvaluep);
1239
235k
  if (!yymsg)
1240
0
    yymsg = "Deleting";
1241
235k
  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1242
1243
235k
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1244
235k
  YYUSE (yytype);
1245
235k
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1246
235k
}
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.87k
{
1267
1.87k
    yy_state_fast_t yystate;
1268
    /* Number of tokens to shift before error messages enabled.  */
1269
1.87k
    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.87k
    yy_state_t yyssa[YYINITDEPTH];
1280
1.87k
    yy_state_t *yyss;
1281
1.87k
    yy_state_t *yyssp;
1282
1283
    /* The semantic value stack.  */
1284
1.87k
    YYSTYPE yyvsa[YYINITDEPTH];
1285
1.87k
    YYSTYPE *yyvs;
1286
1.87k
    YYSTYPE *yyvsp;
1287
1288
1.87k
    YYPTRDIFF_T yystacksize;
1289
1290
1.87k
  int yyn;
1291
1.87k
  int yyresult;
1292
  /* Lookahead token as an internal (translated) token number.  */
1293
1.87k
  int yytoken = 0;
1294
  /* The variables used to return semantic value and location from the
1295
     action routines.  */
1296
1.87k
  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
248k
#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.87k
  int yylen = 0;
1310
1311
1.87k
  yyssp = yyss = yyssa;
1312
1.87k
  yyvsp = yyvs = yyvsa;
1313
1.87k
  yystacksize = YYINITDEPTH;
1314
1315
1.87k
  YYDPRINTF ((stderr, "Starting parse\n"));
1316
1317
1.87k
  yystate = 0;
1318
1.87k
  yyerrstatus = 0;
1319
1.87k
  yynerrs = 0;
1320
1.87k
  yychar = YYEMPTY; /* Cause a token to be read.  */
1321
1.87k
  goto yysetstate;
1322
1323
1324
/*------------------------------------------------------------.
1325
| yynewstate -- push a new state, which is found in yystate.  |
1326
`------------------------------------------------------------*/
1327
354k
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
354k
  yyssp++;
1331
1332
1333
/*--------------------------------------------------------------------.
1334
| yysetstate -- set current state (the top of the stack) to yystate.  |
1335
`--------------------------------------------------------------------*/
1336
355k
yysetstate:
1337
355k
  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1338
355k
  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1339
355k
  YY_IGNORE_USELESS_CAST_BEGIN
1340
355k
  *yyssp = YY_CAST (yy_state_t, yystate);
1341
355k
  YY_IGNORE_USELESS_CAST_END
1342
1343
355k
  if (yyss + yystacksize - 1 <= yyssp)
1344
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
1345
    goto yyexhaustedlab;
1346
#else
1347
22
    {
1348
      /* Get the current used size of the three stacks, in elements.  */
1349
22
      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
22
      if (YYMAXDEPTH <= yystacksize)
1373
1
        goto yyexhaustedlab;
1374
21
      yystacksize *= 2;
1375
21
      if (YYMAXDEPTH < yystacksize)
1376
1
        yystacksize = YYMAXDEPTH;
1377
1378
21
      {
1379
21
        yy_state_t *yyss1 = yyss;
1380
21
        union yyalloc *yyptr =
1381
21
          YY_CAST (union yyalloc *,
1382
21
                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1383
21
        if (! yyptr)
1384
0
          goto yyexhaustedlab;
1385
21
        YYSTACK_RELOCATE (yyss_alloc, yyss);
1386
21
        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1387
21
# undef YYSTACK_RELOCATE
1388
21
        if (yyss1 != yyssa)
1389
15
          YYSTACK_FREE (yyss1);
1390
21
      }
1391
0
# endif
1392
1393
0
      yyssp = yyss + yysize - 1;
1394
21
      yyvsp = yyvs + yysize - 1;
1395
1396
21
      YY_IGNORE_USELESS_CAST_BEGIN
1397
21
      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1398
21
                  YY_CAST (long, yystacksize)));
1399
21
      YY_IGNORE_USELESS_CAST_END
1400
1401
21
      if (yyss + yystacksize - 1 <= yyssp)
1402
0
        YYABORT;
1403
21
    }
1404
355k
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1405
1406
355k
  if (yystate == YYFINAL)
1407
844
    YYACCEPT;
1408
1409
355k
  goto yybackup;
1410
1411
1412
/*-----------.
1413
| yybackup.  |
1414
`-----------*/
1415
355k
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
355k
  yyn = yypact[yystate];
1421
355k
  if (yypact_value_is_default (yyn))
1422
107k
    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
247k
  if (yychar == YYEMPTY)
1428
210k
    {
1429
210k
      YYDPRINTF ((stderr, "Reading a token: "));
1430
210k
      yychar = yylex ();
1431
210k
    }
1432
1433
247k
  if (yychar <= YYEOF)
1434
4.53k
    {
1435
4.53k
      yychar = yytoken = YYEOF;
1436
4.53k
      YYDPRINTF ((stderr, "Now at end of input.\n"));
1437
4.53k
    }
1438
242k
  else
1439
242k
    {
1440
242k
      yytoken = YYTRANSLATE (yychar);
1441
242k
      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1442
242k
    }
1443
1444
  /* If the proper action on seeing token YYTOKEN is to reduce or to
1445
     detect an error, take that action.  */
1446
247k
  yyn += yytoken;
1447
247k
  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1448
137k
    goto yydefault;
1449
109k
  yyn = yytable[yyn];
1450
109k
  if (yyn <= 0)
1451
5.84k
    {
1452
5.84k
      if (yytable_value_is_error (yyn))
1453
0
        goto yyerrlab;
1454
5.84k
      yyn = -yyn;
1455
5.84k
      goto yyreduce;
1456
5.84k
    }
1457
1458
  /* Count tokens shifted since error; after three, turn off error
1459
     status.  */
1460
103k
  if (yyerrstatus)
1461
33.0k
    yyerrstatus--;
1462
1463
  /* Shift the lookahead token.  */
1464
103k
  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1465
103k
  yystate = yyn;
1466
103k
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1467
103k
  *++yyvsp = yylval;
1468
103k
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1469
1470
  /* Discard the shifted token.  */
1471
103k
  yychar = YYEMPTY;
1472
103k
  goto yynewstate;
1473
1474
1475
/*-----------------------------------------------------------.
1476
| yydefault -- do the default action for the current state.  |
1477
`-----------------------------------------------------------*/
1478
245k
yydefault:
1479
245k
  yyn = yydefact[yystate];
1480
245k
  if (yyn == 0)
1481
133k
    goto yyerrlab;
1482
111k
  goto yyreduce;
1483
1484
1485
/*-----------------------------.
1486
| yyreduce -- do a reduction.  |
1487
`-----------------------------*/
1488
117k
yyreduce:
1489
  /* yyn is the number of a rule to reduce with.  */
1490
117k
  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
117k
  yyval = yyvsp[1-yylen];
1501
1502
1503
117k
  YY_REDUCE_PRINT (yyn);
1504
117k
  switch (yyn)
1505
117k
    {
1506
1.87k
  case 3:
1507
1.87k
#line 140 "cue_parser.y"
1508
1.87k
                      {
1509
1.87k
    cd = cd_init();
1510
1.87k
    cdtext = cd_get_cdtext(cd);
1511
1.87k
    rem = cd_get_rem(cd);
1512
1.87k
  }
1513
1.87k
#line 1514 "/work/cue_parser.c"
1514
1.87k
    break;
1515
1516
351
  case 6:
1517
351
#line 153 "cue_parser.y"
1518
351
                              { cd_set_catalog(cd, (yyvsp[-1].sval)); }
1519
351
#line 1520 "/work/cue_parser.c"
1520
351
    break;
1521
1522
350
  case 7:
1523
350
#line 154 "cue_parser.y"
1524
350
                                 { cd_set_cdtextfile(cd, (yyvsp[-1].sval)); }
1525
350
#line 1526 "/work/cue_parser.c"
1526
350
    break;
1527
1528
1.48k
  case 12:
1529
1.48k
#line 162 "cue_parser.y"
1530
1.48k
                                        {
1531
1.48k
    if (NULL != new_filename) {
1532
609
      yyerror("too many files specified\n");
1533
609
    }
1534
1.48k
    if (track && track_get_index(track, 1) == -1) {
1535
509
      track_set_filename (track, (yyvsp[-2].sval));
1536
979
    } else {
1537
979
      new_filename = strncpy(fnamebuf, (yyvsp[-2].sval), sizeof(fnamebuf));
1538
979
      new_filename[sizeof(fnamebuf) - 1] = '\0';
1539
979
    }
1540
1.48k
  }
1541
1.48k
#line 1542 "/work/cue_parser.c"
1542
1.48k
    break;
1543
1544
4.15k
  case 22:
1545
4.15k
#line 194 "cue_parser.y"
1546
4.15k
                     {
1547
    /* save previous track, to later set length */
1548
4.15k
    prev_track = track;
1549
1550
4.15k
    track = cd_add_track(cd);
1551
4.15k
    if (prev_track == track)
1552
528
      prev_track = NULL;
1553
4.15k
    cdtext = track_get_cdtext(track);
1554
4.15k
    rem = track_get_rem(track);
1555
1556
4.15k
    cur_filename = new_filename;
1557
4.15k
    if (NULL != cur_filename)
1558
269
      prev_filename = cur_filename;
1559
1560
4.15k
    if (NULL == prev_filename)
1561
3.31k
      yyerror("no file specified for track");
1562
838
    else
1563
838
      track_set_filename(track, prev_filename);
1564
1565
4.15k
    new_filename = NULL;
1566
4.15k
  }
1567
4.15k
#line 1568 "/work/cue_parser.c"
1568
4.15k
    break;
1569
1570
1.38k
  case 23:
1571
1.38k
#line 218 "cue_parser.y"
1572
1.38k
                                       {
1573
1.38k
    track_set_mode(track, (yyvsp[-1].ival));
1574
1.38k
  }
1575
1.38k
#line 1576 "/work/cue_parser.c"
1576
1.38k
    break;
1577
1578
196
  case 37:
1579
196
#line 243 "cue_parser.y"
1580
196
                                 { track_set_isrc(track, (yyvsp[-1].sval)); }
1581
196
#line 1582 "/work/cue_parser.c"
1582
196
    break;
1583
1584
1.78k
  case 38:
1585
1.78k
#line 244 "cue_parser.y"
1586
1.78k
                           { track_set_zero_pre(track, (yyvsp[-1].ival)); }
1587
1.78k
#line 1588 "/work/cue_parser.c"
1588
1.78k
    break;
1589
1590
3.02k
  case 39:
1591
3.02k
#line 245 "cue_parser.y"
1592
3.02k
                                 {
1593
3.02k
    long prev_length;
1594
1595
    /* Set previous track length if it has not been set */
1596
3.02k
    if (NULL != prev_track && NULL == cur_filename
1597
894
        && track_get_length (prev_track) == -1) {
1598
      /* track shares file with previous track */
1599
412
      prev_length = (yyvsp[-1].ival) - track_get_start(prev_track);
1600
412
      track_set_length(prev_track, prev_length);
1601
412
    }
1602
1603
3.02k
    if (1 == (yyvsp[-2].ival)) {
1604
      /* INDEX 01 */
1605
1.43k
      track_set_start(track, (yyvsp[-1].ival));
1606
1607
1.43k
      long idx00 = track_get_index (track, 0);
1608
1609
1.43k
      if (idx00 != -1 && (yyvsp[-1].ival) != 0)
1610
418
        track_set_zero_pre (track, (yyvsp[-1].ival) - idx00);
1611
1.43k
    }
1612
1613
3.02k
    track_set_index (track, (yyvsp[-2].ival), (yyvsp[-1].ival));
1614
3.02k
  }
1615
3.02k
#line 1616 "/work/cue_parser.c"
1616
3.02k
    break;
1617
1618
194
  case 40:
1619
194
#line 268 "cue_parser.y"
1620
194
                            { track_set_zero_post(track, (yyvsp[-1].ival)); }
1621
194
#line 1622 "/work/cue_parser.c"
1622
194
    break;
1623
1624
636
  case 44:
1625
636
#line 275 "cue_parser.y"
1626
636
                                 { track_set_flag(track, (yyvsp[0].ival)); }
1627
636
#line 1628 "/work/cue_parser.c"
1628
636
    break;
1629
1630
3.57k
  case 49:
1631
3.57k
#line 286 "cue_parser.y"
1632
3.57k
                                  { cdtext_set ((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); }
1633
3.57k
#line 1634 "/work/cue_parser.c"
1634
3.57k
    break;
1635
1636
1.86k
  case 64:
1637
1.86k
#line 307 "cue_parser.y"
1638
1.86k
                                       { (yyval.ival) = time_msf_to_frame((yyvsp[-4].ival), (yyvsp[-2].ival), (yyvsp[0].ival)); }
1639
1.86k
#line 1640 "/work/cue_parser.c"
1640
1.86k
    break;
1641
1642
937
  case 65:
1643
937
#line 311 "cue_parser.y"
1644
937
                               { rem_set((yyvsp[-2].ival), (yyvsp[-1].sval), rem); }
1645
937
#line 1646 "/work/cue_parser.c"
1646
937
    break;
1647
1648
204
  case 66:
1649
204
#line 312 "cue_parser.y"
1650
204
                                { cdtext_set((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); }
1651
204
#line 1652 "/work/cue_parser.c"
1652
204
    break;
1653
1654
1655
0
#line 1656 "/work/cue_parser.c"
1656
1657
95.6k
      default: break;
1658
117k
    }
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
117k
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
1671
1672
117k
  YYPOPSTACK (yylen);
1673
117k
  yylen = 0;
1674
117k
  YY_STACK_PRINT (yyss, yyssp);
1675
1676
117k
  *++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
117k
  {
1682
117k
    const int yylhs = yyr1[yyn] - YYNTOKENS;
1683
117k
    const int yyi = yypgoto[yylhs] + *yyssp;
1684
117k
    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
1685
117k
               ? yytable[yyi]
1686
117k
               : yydefgoto[yylhs]);
1687
117k
  }
1688
1689
117k
  goto yynewstate;
1690
1691
1692
/*--------------------------------------.
1693
| yyerrlab -- here on detecting error.  |
1694
`--------------------------------------*/
1695
133k
yyerrlab:
1696
  /* Make sure we have latest lookahead translation.  See comments at
1697
     user semantic actions for why this is necessary.  */
1698
133k
  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
1699
1700
  /* If not already recovering from an error, report this error.  */
1701
133k
  if (!yyerrstatus)
1702
3.09k
    {
1703
3.09k
      ++yynerrs;
1704
3.09k
#if ! YYERROR_VERBOSE
1705
3.09k
      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
3.09k
    }
1739
1740
1741
1742
133k
  if (yyerrstatus == 3)
1743
106k
    {
1744
      /* If just tried and failed to reuse lookahead token after an
1745
         error, discard it.  */
1746
1747
106k
      if (yychar <= YYEOF)
1748
1.00k
        {
1749
          /* Return failure if at end of input.  */
1750
1.00k
          if (yychar == YYEOF)
1751
1.00k
            YYABORT;
1752
1.00k
        }
1753
105k
      else
1754
105k
        {
1755
105k
          yydestruct ("Error: discarding",
1756
105k
                      yytoken, &yylval);
1757
105k
          yychar = YYEMPTY;
1758
105k
        }
1759
106k
    }
1760
1761
  /* Else will try to reuse lookahead token after shifting the error
1762
     token.  */
1763
132k
  goto yyerrlab1;
1764
1765
1766
/*---------------------------------------------------.
1767
| yyerrorlab -- error raised explicitly by YYERROR.  |
1768
`---------------------------------------------------*/
1769
132k
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
132k
yyerrlab1:
1788
132k
  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
1789
1790
132k
  for (;;)
1791
246k
    {
1792
246k
      yyn = yypact[yystate];
1793
246k
      if (!yypact_value_is_default (yyn))
1794
246k
        {
1795
246k
          yyn += YYTERROR;
1796
246k
          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
1797
132k
            {
1798
132k
              yyn = yytable[yyn];
1799
132k
              if (0 < yyn)
1800
132k
                break;
1801
132k
            }
1802
246k
        }
1803
1804
      /* Pop the current state because it cannot handle the error token.  */
1805
114k
      if (yyssp == yyss)
1806
19
        YYABORT;
1807
1808
1809
114k
      yydestruct ("Error: popping",
1810
114k
                  yystos[yystate], yyvsp);
1811
114k
      YYPOPSTACK (1);
1812
114k
      yystate = *yyssp;
1813
114k
      YY_STACK_PRINT (yyss, yyssp);
1814
114k
    }
1815
1816
132k
  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1817
132k
  *++yyvsp = yylval;
1818
132k
  YY_IGNORE_MAYBE_UNINITIALIZED_END
1819
1820
1821
  /* Shift the error token.  */
1822
132k
  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
1823
1824
132k
  yystate = yyn;
1825
132k
  goto yynewstate;
1826
1827
1828
/*-------------------------------------.
1829
| yyacceptlab -- YYACCEPT comes here.  |
1830
`-------------------------------------*/
1831
844
yyacceptlab:
1832
844
  yyresult = 0;
1833
844
  goto yyreturn;
1834
1835
1836
/*-----------------------------------.
1837
| yyabortlab -- YYABORT comes here.  |
1838
`-----------------------------------*/
1839
1.02k
yyabortlab:
1840
1.02k
  yyresult = 1;
1841
1.02k
  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.87k
yyreturn:
1859
1.87k
  if (yychar != YYEMPTY)
1860
1.02k
    {
1861
      /* Make sure we have latest lookahead translation.  See comments at
1862
         user semantic actions for why this is necessary.  */
1863
1.02k
      yytoken = YYTRANSLATE (yychar);
1864
1.02k
      yydestruct ("Cleanup: discarding lookahead",
1865
1.02k
                  yytoken, &yylval);
1866
1.02k
    }
1867
  /* Do not reclaim the symbols of the rule whose action triggered
1868
     this YYABORT or YYACCEPT.  */
1869
1.87k
  YYPOPSTACK (yylen);
1870
1.87k
  YY_STACK_PRINT (yyss, yyssp);
1871
16.6k
  while (yyssp != yyss)
1872
14.7k
    {
1873
14.7k
      yydestruct ("Cleanup: popping",
1874
14.7k
                  yystos[+*yyssp], yyvsp);
1875
14.7k
      YYPOPSTACK (1);
1876
14.7k
    }
1877
1.87k
#ifndef yyoverflow
1878
1.87k
  if (yyss != yyssa)
1879
6
    YYSTACK_FREE (yyss);
1880
1.87k
#endif
1881
#if YYERROR_VERBOSE
1882
  if (yymsg != yymsgbuf)
1883
    YYSTACK_FREE (yymsg);
1884
#endif
1885
1.87k
  return yyresult;
1886
1
}
1887
#line 330 "cue_parser.y"
1888
1889
1890
/* lexer interface */
1891
1892
void yyerror (const char *s)
1893
7.01k
{
1894
7.01k
  fprintf(stderr, "%d: %s\n", yylineno, s);
1895
7.01k
}
1896
1897
static void reset_static_vars()
1898
1.87k
{
1899
1.87k
  cd = NULL;
1900
1.87k
  track = NULL;
1901
1.87k
  prev_track = NULL;
1902
1.87k
  cdtext = NULL;
1903
1.87k
  rem = NULL;
1904
1.87k
  prev_filename = NULL;
1905
1.87k
  cur_filename = NULL;
1906
1.87k
  new_filename = NULL;
1907
1.87k
}
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.87k
{
1937
1.87k
  YY_BUFFER_STATE buffer = NULL;
1938
1939
1.87k
  buffer = yy_scan_string(string);
1940
1941
1.87k
  Cd *ret_cd = NULL;
1942
1943
1.87k
  yylineno = 1;
1944
1.87k
  if (0 == yyparse()) ret_cd = cd;
1945
1.02k
  else
1946
1.02k
  {
1947
1.02k
    ret_cd = NULL;
1948
1.02k
    cd_delete(cd);
1949
1.02k
  }
1950
1951
1.87k
  yy_delete_buffer(buffer);
1952
1.87k
  reset_static_vars();
1953
1954
1.87k
  return ret_cd;
1955
1.87k
}