Coverage Report

Created: 2026-03-15 06:35

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