mirror of
https://github.com/stenzek/duckstation.git
synced 2024-11-27 08:00:36 +00:00
dep/libcue: Prefix functions to avoid name clash with glslang
This commit is contained in:
parent
1231f6dafe
commit
16411d7669
@ -1,4 +1,4 @@
|
||||
/* A Bison parser, made by GNU Bison 3.3.2. */
|
||||
/* A Bison parser, made by GNU Bison 3.4.1. */
|
||||
|
||||
/* Bison implementation for Yacc-like parsers in C
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
#define YYBISON 1
|
||||
|
||||
/* Bison version. */
|
||||
#define YYBISON_VERSION "3.3.2"
|
||||
#define YYBISON_VERSION "3.4.1"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
@ -62,11 +62,20 @@
|
||||
/* Pull parsers. */
|
||||
#define YYPULL 1
|
||||
|
||||
/* Substitute the type names. */
|
||||
#define YYSTYPE CUEPARSERSTYPE
|
||||
/* Substitute the variable and function names. */
|
||||
#define yyparse cueparserparse
|
||||
#define yylex cueparserlex
|
||||
#define yyerror cueparsererror
|
||||
#define yydebug cueparserdebug
|
||||
#define yynerrs cueparsernerrs
|
||||
|
||||
|
||||
#define yylval cueparserlval
|
||||
#define yychar cueparserchar
|
||||
|
||||
/* First part of user prologue. */
|
||||
#line 1 "cue_parser.y" /* yacc.c:337 */
|
||||
#line 1 "cue_parser.y"
|
||||
|
||||
/*
|
||||
* Copyright (c) 2004, 2005, 2006, 2007, Svend Sorensen
|
||||
@ -81,20 +90,20 @@
|
||||
#include "cd.h"
|
||||
#include "time.h"
|
||||
|
||||
#ifdef YY_BUF_SIZE
|
||||
#undef YY_BUF_SIZE
|
||||
#ifdef CUEPARSER_BUF_SIZE
|
||||
#undef CUEPARSER_BUF_SIZE
|
||||
#endif
|
||||
#define YY_BUF_SIZE 16384
|
||||
#define CUEPARSER_BUF_SIZE 16384
|
||||
|
||||
#define YYDEBUG 1
|
||||
#define CUEPARSERDEBUG 1
|
||||
|
||||
char fnamebuf[PARSER_BUFFER];
|
||||
|
||||
/* debugging */
|
||||
//int yydebug = 1;
|
||||
//int cueparserdebug = 1;
|
||||
|
||||
extern int yylineno;
|
||||
extern FILE* yyin;
|
||||
extern int cueparserlineno;
|
||||
extern FILE* cueparserin;
|
||||
|
||||
static Cd *cd = NULL;
|
||||
static Track *track = NULL;
|
||||
@ -106,21 +115,22 @@ static char *cur_filename = NULL; /* last file in the last track */
|
||||
static char *new_filename = NULL; /* last file in this track */
|
||||
|
||||
/* lexer interface */
|
||||
typedef struct yy_buffer_state* YY_BUFFER_STATE;
|
||||
typedef struct cueparser_buffer_state* CUEPARSER_BUFFER_STATE;
|
||||
|
||||
int yylex(void);
|
||||
void yyerror(const char*);
|
||||
YY_BUFFER_STATE yy_scan_string(const char*);
|
||||
YY_BUFFER_STATE yy_create_buffer(FILE*, int);
|
||||
void yy_switch_to_buffer(YY_BUFFER_STATE);
|
||||
void yy_delete_buffer(YY_BUFFER_STATE);
|
||||
int cueparserlex(void);
|
||||
void cueparsererror(const char*);
|
||||
CUEPARSER_BUFFER_STATE cueparser_scan_string(const char*);
|
||||
CUEPARSER_BUFFER_STATE cueparser_create_buffer(FILE*, int);
|
||||
void cueparser_switch_to_buffer(CUEPARSER_BUFFER_STATE);
|
||||
void cueparser_delete_buffer(CUEPARSER_BUFFER_STATE);
|
||||
|
||||
/* parser interface */
|
||||
int yyparse(void);
|
||||
int cueparserparse(void);
|
||||
Cd *cue_parse_file(FILE *fp);
|
||||
Cd *cue_parse_string(const char*);
|
||||
|
||||
#line 124 "cue_parser.c" /* yacc.c:337 */
|
||||
#line 133 "cue_parser.c"
|
||||
|
||||
# ifndef YY_NULLPTR
|
||||
# if defined __cplusplus
|
||||
# if 201103L <= __cplusplus
|
||||
@ -141,22 +151,30 @@ Cd *cue_parse_string(const char*);
|
||||
# define YYERROR_VERBOSE 0
|
||||
#endif
|
||||
|
||||
/* In a future release of Bison, this section will be replaced
|
||||
by #include "cue_parser.h". */
|
||||
#ifndef YY_YY_CUE_PARSER_H_INCLUDED
|
||||
# define YY_YY_CUE_PARSER_H_INCLUDED
|
||||
/* Use api.header.include to #include this header
|
||||
instead of duplicating it here. */
|
||||
#ifndef YY_CUEPARSER_CUE_PARSER_H_INCLUDED
|
||||
# define YY_CUEPARSER_CUE_PARSER_H_INCLUDED
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
#endif
|
||||
#ifndef CUEPARSERDEBUG
|
||||
# if defined YYDEBUG
|
||||
#if YYDEBUG
|
||||
extern int yydebug;
|
||||
# define CUEPARSERDEBUG 1
|
||||
# else
|
||||
# define CUEPARSERDEBUG 0
|
||||
# endif
|
||||
# else /* ! defined YYDEBUG */
|
||||
# define CUEPARSERDEBUG 0
|
||||
# endif /* ! defined YYDEBUG */
|
||||
#endif /* ! defined CUEPARSERDEBUG */
|
||||
#if CUEPARSERDEBUG
|
||||
extern int cueparserdebug;
|
||||
#endif
|
||||
|
||||
/* Token type. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
enum yytokentype
|
||||
#ifndef CUEPARSERTOKENTYPE
|
||||
# define CUEPARSERTOKENTYPE
|
||||
enum cueparsertokentype
|
||||
{
|
||||
NUMBER = 258,
|
||||
STRING = 259,
|
||||
@ -210,29 +228,28 @@ extern int yydebug;
|
||||
#endif
|
||||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
|
||||
union YYSTYPE
|
||||
#if ! defined CUEPARSERSTYPE && ! defined CUEPARSERSTYPE_IS_DECLARED
|
||||
union CUEPARSERSTYPE
|
||||
{
|
||||
#line 57 "cue_parser.y" /* yacc.c:352 */
|
||||
#line 58 "cue_parser.y"
|
||||
|
||||
long ival;
|
||||
char *sval;
|
||||
|
||||
#line 223 "cue_parser.c" /* yacc.c:352 */
|
||||
};
|
||||
#line 240 "cue_parser.c"
|
||||
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
};
|
||||
typedef union CUEPARSERSTYPE CUEPARSERSTYPE;
|
||||
# define CUEPARSERSTYPE_IS_TRIVIAL 1
|
||||
# define CUEPARSERSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
extern CUEPARSERSTYPE cueparserlval;
|
||||
|
||||
int yyparse (void);
|
||||
int cueparserparse (void);
|
||||
|
||||
#endif /* !YY_YY_CUE_PARSER_H_INCLUDED */
|
||||
#endif /* !YY_CUEPARSER_CUE_PARSER_H_INCLUDED */
|
||||
|
||||
|
||||
|
||||
@ -336,6 +353,8 @@ typedef short yytype_int16;
|
||||
#endif
|
||||
|
||||
|
||||
#define YY_ASSERT(E) ((void) (0 && (E)))
|
||||
|
||||
#if ! defined yyoverflow || YYERROR_VERBOSE
|
||||
|
||||
/* The parser invokes alloca or malloc; define the necessary symbols. */
|
||||
@ -406,7 +425,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
|
||||
|
||||
#if (! defined yyoverflow \
|
||||
&& (! defined __cplusplus \
|
||||
|| (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
|
||||
|| (defined CUEPARSERSTYPE_IS_TRIVIAL && CUEPARSERSTYPE_IS_TRIVIAL)))
|
||||
|
||||
/* A type that is properly aligned for any stack member. */
|
||||
union yyalloc
|
||||
@ -523,22 +542,22 @@ static const yytype_uint8 yytranslate[] =
|
||||
45, 46, 47, 48, 49, 50
|
||||
};
|
||||
|
||||
#if YYDEBUG
|
||||
#if CUEPARSERDEBUG
|
||||
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
|
||||
static const yytype_uint16 yyrline[] =
|
||||
{
|
||||
0, 133, 133, 137, 144, 146, 150, 151, 152, 153,
|
||||
154, 155, 159, 173, 174, 178, 182, 183, 184, 185,
|
||||
186, 187, 191, 213, 219, 220, 221, 222, 223, 224,
|
||||
225, 226, 230, 231, 235, 236, 237, 238, 239, 240,
|
||||
263, 264, 265, 268, 270, 274, 275, 276, 277, 281,
|
||||
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
|
||||
295, 296, 297, 301, 302, 306, 307, 311, 312, 313,
|
||||
314, 315
|
||||
0, 134, 134, 138, 146, 147, 151, 152, 153, 154,
|
||||
155, 156, 160, 174, 175, 179, 183, 184, 185, 186,
|
||||
187, 188, 192, 214, 220, 221, 222, 223, 224, 225,
|
||||
226, 227, 231, 232, 236, 237, 238, 239, 240, 241,
|
||||
264, 265, 266, 270, 271, 275, 276, 277, 278, 282,
|
||||
286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
|
||||
296, 297, 298, 302, 303, 307, 308, 312, 313, 314,
|
||||
315, 316
|
||||
};
|
||||
#endif
|
||||
|
||||
#if YYDEBUG || YYERROR_VERBOSE || 0
|
||||
#if CUEPARSERDEBUG || YYERROR_VERBOSE || 0
|
||||
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
|
||||
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
|
||||
static const char *const yytname[] =
|
||||
@ -758,7 +777,7 @@ static const yytype_uint8 yyr2[] =
|
||||
|
||||
|
||||
/* Enable debugging if requested. */
|
||||
#if YYDEBUG
|
||||
#if CUEPARSERDEBUG
|
||||
|
||||
# ifndef YYFPRINTF
|
||||
# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
|
||||
@ -879,12 +898,12 @@ do { \
|
||||
/* Nonzero means print parse trace. It is left uninitialized so that
|
||||
multiple parsers can coexist. */
|
||||
int yydebug;
|
||||
#else /* !YYDEBUG */
|
||||
#else /* !CUEPARSERDEBUG */
|
||||
# define YYDPRINTF(Args)
|
||||
# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
|
||||
# define YY_STACK_PRINT(Bottom, Top)
|
||||
# define YY_REDUCE_PRINT(Rule)
|
||||
#endif /* !YYDEBUG */
|
||||
#endif /* !CUEPARSERDEBUG */
|
||||
|
||||
|
||||
/* YYINITDEPTH -- initial size of the parser's stacks. */
|
||||
@ -1237,6 +1256,8 @@ yynewstate:
|
||||
| yynewstate -- set current state (the top of the stack) to yystate. |
|
||||
`--------------------------------------------------------------------*/
|
||||
yysetstate:
|
||||
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
|
||||
YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
|
||||
*yyssp = (yytype_int16) yystate;
|
||||
|
||||
if (yyss + yystacksize - 1 <= yyssp)
|
||||
@ -1299,8 +1320,6 @@ yysetstate:
|
||||
}
|
||||
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
|
||||
|
||||
YYDPRINTF ((stderr, "Entering state %d\n", yystate));
|
||||
|
||||
if (yystate == YYFINAL)
|
||||
YYACCEPT;
|
||||
|
||||
@ -1368,7 +1387,6 @@ yybackup:
|
||||
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
|
||||
*++yyvsp = yylval;
|
||||
YY_IGNORE_MAYBE_UNINITIALIZED_END
|
||||
|
||||
goto yynewstate;
|
||||
|
||||
|
||||
@ -1403,33 +1421,33 @@ yyreduce:
|
||||
YY_REDUCE_PRINT (yyn);
|
||||
switch (yyn)
|
||||
{
|
||||
case 3:
|
||||
#line 137 "cue_parser.y" /* yacc.c:1652 */
|
||||
case 3:
|
||||
#line 138 "cue_parser.y"
|
||||
{
|
||||
cd = cd_init();
|
||||
cdtext = cd_get_cdtext(cd);
|
||||
rem = cd_get_rem(cd);
|
||||
}
|
||||
#line 1414 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1432 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 6:
|
||||
#line 150 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 151 "cue_parser.y"
|
||||
{ cd_set_catalog(cd, (yyvsp[-1].sval)); }
|
||||
#line 1420 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1438 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 7:
|
||||
#line 151 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 152 "cue_parser.y"
|
||||
{ cd_set_cdtextfile(cd, (yyvsp[-1].sval)); }
|
||||
#line 1426 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1444 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 12:
|
||||
#line 159 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 160 "cue_parser.y"
|
||||
{
|
||||
if (NULL != new_filename) {
|
||||
yyerror("too many files specified\n");
|
||||
cueparsererror("too many files specified\n");
|
||||
}
|
||||
if (track && track_get_index(track, 1) == -1) {
|
||||
track_set_filename (track, (yyvsp[-2].sval));
|
||||
@ -1438,11 +1456,11 @@ yyreduce:
|
||||
new_filename[sizeof(fnamebuf) - 1] = '\0';
|
||||
}
|
||||
}
|
||||
#line 1442 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1460 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 22:
|
||||
#line 191 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 192 "cue_parser.y"
|
||||
{
|
||||
/* save previous track, to later set length */
|
||||
prev_track = track;
|
||||
@ -1456,37 +1474,37 @@ yyreduce:
|
||||
prev_filename = cur_filename;
|
||||
|
||||
if (NULL == prev_filename)
|
||||
yyerror("no file specified for track");
|
||||
cueparsererror("no file specified for track");
|
||||
else
|
||||
track_set_filename(track, prev_filename);
|
||||
|
||||
new_filename = NULL;
|
||||
}
|
||||
#line 1466 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1484 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 23:
|
||||
#line 213 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 214 "cue_parser.y"
|
||||
{
|
||||
track_set_mode(track, (yyvsp[-1].ival));
|
||||
}
|
||||
#line 1474 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1492 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 37:
|
||||
#line 238 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 239 "cue_parser.y"
|
||||
{ track_set_isrc(track, (yyvsp[-1].sval)); }
|
||||
#line 1480 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1498 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 38:
|
||||
#line 239 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 240 "cue_parser.y"
|
||||
{ track_set_zero_pre(track, (yyvsp[-1].ival)); }
|
||||
#line 1486 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1504 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 39:
|
||||
#line 240 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 241 "cue_parser.y"
|
||||
{
|
||||
long prev_length;
|
||||
|
||||
@ -1510,47 +1528,48 @@ yyreduce:
|
||||
|
||||
track_set_index (track, (yyvsp[-2].ival), (yyvsp[-1].ival));
|
||||
}
|
||||
#line 1514 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1532 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 40:
|
||||
#line 263 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 264 "cue_parser.y"
|
||||
{ track_set_zero_post(track, (yyvsp[-1].ival)); }
|
||||
#line 1520 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1538 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 44:
|
||||
#line 270 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 271 "cue_parser.y"
|
||||
{ track_set_flag(track, (yyvsp[0].ival)); }
|
||||
#line 1526 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1544 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 49:
|
||||
#line 281 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 282 "cue_parser.y"
|
||||
{ cdtext_set ((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); }
|
||||
#line 1532 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1550 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 64:
|
||||
#line 302 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 303 "cue_parser.y"
|
||||
{ (yyval.ival) = time_msf_to_frame((yyvsp[-4].ival), (yyvsp[-2].ival), (yyvsp[0].ival)); }
|
||||
#line 1538 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1556 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 65:
|
||||
#line 306 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 307 "cue_parser.y"
|
||||
{ rem_set((yyvsp[-2].ival), (yyvsp[-1].sval), rem); }
|
||||
#line 1544 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1562 "cue_parser.c"
|
||||
break;
|
||||
|
||||
case 66:
|
||||
#line 307 "cue_parser.y" /* yacc.c:1652 */
|
||||
#line 308 "cue_parser.y"
|
||||
{ cdtext_set((yyvsp[-2].ival), (yyvsp[-1].sval), cdtext); }
|
||||
#line 1550 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1568 "cue_parser.c"
|
||||
break;
|
||||
|
||||
|
||||
#line 1554 "cue_parser.c" /* yacc.c:1652 */
|
||||
#line 1572 "cue_parser.c"
|
||||
|
||||
default: break;
|
||||
}
|
||||
/* User semantic actions sometimes alter yychar, and that requires
|
||||
@ -1781,14 +1800,14 @@ yyreturn:
|
||||
#endif
|
||||
return yyresult;
|
||||
}
|
||||
#line 317 "cue_parser.y" /* yacc.c:1918 */
|
||||
#line 318 "cue_parser.y"
|
||||
|
||||
|
||||
/* lexer interface */
|
||||
|
||||
void yyerror (const char *s)
|
||||
void cueparsererror (const char *s)
|
||||
{
|
||||
fprintf(stderr, "%d: %s\n", yylineno, s);
|
||||
fprintf(stderr, "%d: %s\n", cueparserlineno, s);
|
||||
}
|
||||
|
||||
static void reset_static_vars()
|
||||
@ -1805,20 +1824,20 @@ static void reset_static_vars()
|
||||
|
||||
Cd *cue_parse_file(FILE *fp)
|
||||
{
|
||||
YY_BUFFER_STATE buffer = NULL;
|
||||
CUEPARSER_BUFFER_STATE buffer = NULL;
|
||||
|
||||
yyin = fp;
|
||||
cueparserin = fp;
|
||||
|
||||
buffer = yy_create_buffer(yyin, YY_BUF_SIZE);
|
||||
buffer = cueparser_create_buffer(cueparserin, CUEPARSER_BUF_SIZE);
|
||||
|
||||
yy_switch_to_buffer(buffer);
|
||||
cueparser_switch_to_buffer(buffer);
|
||||
|
||||
Cd *ret_cd = NULL;
|
||||
|
||||
if (0 == yyparse()) ret_cd = cd;
|
||||
if (0 == cueparserparse()) ret_cd = cd;
|
||||
else ret_cd = NULL;
|
||||
|
||||
yy_delete_buffer(buffer);
|
||||
cueparser_delete_buffer(buffer);
|
||||
reset_static_vars();
|
||||
|
||||
return ret_cd;
|
||||
@ -1826,16 +1845,16 @@ Cd *cue_parse_file(FILE *fp)
|
||||
|
||||
Cd *cue_parse_string(const char* string)
|
||||
{
|
||||
YY_BUFFER_STATE buffer = NULL;
|
||||
CUEPARSER_BUFFER_STATE buffer = NULL;
|
||||
|
||||
buffer = yy_scan_string(string);
|
||||
buffer = cueparser_scan_string(string);
|
||||
|
||||
Cd *ret_cd = NULL;
|
||||
|
||||
if (0 == yyparse()) ret_cd = cd;
|
||||
if (0 == cueparserparse()) ret_cd = cd;
|
||||
else ret_cd = NULL;
|
||||
|
||||
yy_delete_buffer(buffer);
|
||||
cueparser_delete_buffer(buffer);
|
||||
reset_static_vars();
|
||||
|
||||
return ret_cd;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* A Bison parser, made by GNU Bison 3.3.2. */
|
||||
/* A Bison parser, made by GNU Bison 3.4.1. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
@ -34,20 +34,28 @@
|
||||
/* Undocumented macros, especially those whose name start with YY_,
|
||||
are private implementation details. Do not rely on them. */
|
||||
|
||||
#ifndef YY_YY_CUE_PARSER_H_INCLUDED
|
||||
# define YY_YY_CUE_PARSER_H_INCLUDED
|
||||
#ifndef YY_CUEPARSER_CUE_PARSER_H_INCLUDED
|
||||
# define YY_CUEPARSER_CUE_PARSER_H_INCLUDED
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
#endif
|
||||
#ifndef CUEPARSERDEBUG
|
||||
# if defined YYDEBUG
|
||||
#if YYDEBUG
|
||||
extern int yydebug;
|
||||
# define CUEPARSERDEBUG 1
|
||||
# else
|
||||
# define CUEPARSERDEBUG 0
|
||||
# endif
|
||||
# else /* ! defined YYDEBUG */
|
||||
# define CUEPARSERDEBUG 0
|
||||
# endif /* ! defined YYDEBUG */
|
||||
#endif /* ! defined CUEPARSERDEBUG */
|
||||
#if CUEPARSERDEBUG
|
||||
extern int cueparserdebug;
|
||||
#endif
|
||||
|
||||
/* Token type. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
enum yytokentype
|
||||
#ifndef CUEPARSERTOKENTYPE
|
||||
# define CUEPARSERTOKENTYPE
|
||||
enum cueparsertokentype
|
||||
{
|
||||
NUMBER = 258,
|
||||
STRING = 259,
|
||||
@ -101,26 +109,25 @@ extern int yydebug;
|
||||
#endif
|
||||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
|
||||
union YYSTYPE
|
||||
#if ! defined CUEPARSERSTYPE && ! defined CUEPARSERSTYPE_IS_DECLARED
|
||||
union CUEPARSERSTYPE
|
||||
{
|
||||
#line 57 "cue_parser.y" /* yacc.c:1921 */
|
||||
#line 58 "cue_parser.y"
|
||||
|
||||
long ival;
|
||||
char *sval;
|
||||
|
||||
#line 114 "cue_parser.h" /* yacc.c:1921 */
|
||||
};
|
||||
#line 121 "cue_parser.h"
|
||||
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
};
|
||||
typedef union CUEPARSERSTYPE CUEPARSERSTYPE;
|
||||
# define CUEPARSERSTYPE_IS_TRIVIAL 1
|
||||
# define CUEPARSERSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
|
||||
extern YYSTYPE yylval;
|
||||
extern CUEPARSERSTYPE cueparserlval;
|
||||
|
||||
int yyparse (void);
|
||||
int cueparserparse (void);
|
||||
|
||||
#endif /* !YY_YY_CUE_PARSER_H_INCLUDED */
|
||||
#endif /* !YY_CUEPARSER_CUE_PARSER_H_INCLUDED */
|
||||
|
@ -12,20 +12,20 @@
|
||||
#include "cd.h"
|
||||
#include "time.h"
|
||||
|
||||
#ifdef YY_BUF_SIZE
|
||||
#undef YY_BUF_SIZE
|
||||
#ifdef CUEPARSER_BUF_SIZE
|
||||
#undef CUEPARSER_BUF_SIZE
|
||||
#endif
|
||||
#define YY_BUF_SIZE 16384
|
||||
#define CUEPARSER_BUF_SIZE 16384
|
||||
|
||||
#define YYDEBUG 1
|
||||
#define CUEPARSERDEBUG 1
|
||||
|
||||
char fnamebuf[PARSER_BUFFER];
|
||||
|
||||
/* debugging */
|
||||
//int yydebug = 1;
|
||||
//int cueparserdebug = 1;
|
||||
|
||||
extern int yylineno;
|
||||
extern FILE* yyin;
|
||||
extern int cueparserlineno;
|
||||
extern FILE* cueparserin;
|
||||
|
||||
static Cd *cd = NULL;
|
||||
static Track *track = NULL;
|
||||
@ -37,22 +37,23 @@ static char *cur_filename = NULL; /* last file in the last track */
|
||||
static char *new_filename = NULL; /* last file in this track */
|
||||
|
||||
/* lexer interface */
|
||||
typedef struct yy_buffer_state* YY_BUFFER_STATE;
|
||||
typedef struct cueparser_buffer_state* CUEPARSER_BUFFER_STATE;
|
||||
|
||||
int yylex(void);
|
||||
void yyerror(const char*);
|
||||
YY_BUFFER_STATE yy_scan_string(const char*);
|
||||
YY_BUFFER_STATE yy_create_buffer(FILE*, int);
|
||||
void yy_switch_to_buffer(YY_BUFFER_STATE);
|
||||
void yy_delete_buffer(YY_BUFFER_STATE);
|
||||
int cueparserlex(void);
|
||||
void cueparsererror(const char*);
|
||||
CUEPARSER_BUFFER_STATE cueparser_scan_string(const char*);
|
||||
CUEPARSER_BUFFER_STATE cueparser_create_buffer(FILE*, int);
|
||||
void cueparser_switch_to_buffer(CUEPARSER_BUFFER_STATE);
|
||||
void cueparser_delete_buffer(CUEPARSER_BUFFER_STATE);
|
||||
|
||||
/* parser interface */
|
||||
int yyparse(void);
|
||||
int cueparserparse(void);
|
||||
Cd *cue_parse_file(FILE *fp);
|
||||
Cd *cue_parse_string(const char*);
|
||||
%}
|
||||
|
||||
%start cuefile
|
||||
%define api.prefix {cueparser}
|
||||
|
||||
%union {
|
||||
long ival;
|
||||
@ -158,7 +159,7 @@ global_statement
|
||||
track_data
|
||||
: FFILE STRING file_format '\n' {
|
||||
if (NULL != new_filename) {
|
||||
yyerror("too many files specified\n");
|
||||
cueparsererror("too many files specified\n");
|
||||
}
|
||||
if (track && track_get_index(track, 1) == -1) {
|
||||
track_set_filename (track, $2);
|
||||
@ -201,7 +202,7 @@ new_track
|
||||
prev_filename = cur_filename;
|
||||
|
||||
if (NULL == prev_filename)
|
||||
yyerror("no file specified for track");
|
||||
cueparsererror("no file specified for track");
|
||||
else
|
||||
track_set_filename(track, prev_filename);
|
||||
|
||||
@ -318,9 +319,9 @@ rem_item
|
||||
|
||||
/* lexer interface */
|
||||
|
||||
void yyerror (const char *s)
|
||||
void cueparsererror (const char *s)
|
||||
{
|
||||
fprintf(stderr, "%d: %s\n", yylineno, s);
|
||||
fprintf(stderr, "%d: %s\n", cueparserlineno, s);
|
||||
}
|
||||
|
||||
static void reset_static_vars()
|
||||
@ -337,20 +338,20 @@ static void reset_static_vars()
|
||||
|
||||
Cd *cue_parse_file(FILE *fp)
|
||||
{
|
||||
YY_BUFFER_STATE buffer = NULL;
|
||||
CUEPARSER_BUFFER_STATE buffer = NULL;
|
||||
|
||||
yyin = fp;
|
||||
cueparserin = fp;
|
||||
|
||||
buffer = yy_create_buffer(yyin, YY_BUF_SIZE);
|
||||
buffer = cueparser_create_buffer(cueparserin, CUEPARSER_BUF_SIZE);
|
||||
|
||||
yy_switch_to_buffer(buffer);
|
||||
cueparser_switch_to_buffer(buffer);
|
||||
|
||||
Cd *ret_cd = NULL;
|
||||
|
||||
if (0 == yyparse()) ret_cd = cd;
|
||||
if (0 == cueparserparse()) ret_cd = cd;
|
||||
else ret_cd = NULL;
|
||||
|
||||
yy_delete_buffer(buffer);
|
||||
cueparser_delete_buffer(buffer);
|
||||
reset_static_vars();
|
||||
|
||||
return ret_cd;
|
||||
@ -358,16 +359,16 @@ Cd *cue_parse_file(FILE *fp)
|
||||
|
||||
Cd *cue_parse_string(const char* string)
|
||||
{
|
||||
YY_BUFFER_STATE buffer = NULL;
|
||||
CUEPARSER_BUFFER_STATE buffer = NULL;
|
||||
|
||||
buffer = yy_scan_string(string);
|
||||
buffer = cueparser_scan_string(string);
|
||||
|
||||
Cd *ret_cd = NULL;
|
||||
|
||||
if (0 == yyparse()) ret_cd = cd;
|
||||
if (0 == cueparserparse()) ret_cd = cd;
|
||||
else ret_cd = NULL;
|
||||
|
||||
yy_delete_buffer(buffer);
|
||||
cueparser_delete_buffer(buffer);
|
||||
reset_static_vars();
|
||||
|
||||
return ret_cd;
|
||||
|
@ -6,6 +6,31 @@
|
||||
|
||||
/* A lexical scanner generated by flex */
|
||||
|
||||
#define yy_create_buffer cueparser_create_buffer
|
||||
#define yy_delete_buffer cueparser_delete_buffer
|
||||
#define yy_scan_buffer cueparser_scan_buffer
|
||||
#define yy_scan_string cueparser_scan_string
|
||||
#define yy_scan_bytes cueparser_scan_bytes
|
||||
#define yy_init_buffer cueparser_init_buffer
|
||||
#define yy_flush_buffer cueparser_flush_buffer
|
||||
#define yy_load_buffer_state cueparser_load_buffer_state
|
||||
#define yy_switch_to_buffer cueparser_switch_to_buffer
|
||||
#define yypush_buffer_state cueparserpush_buffer_state
|
||||
#define yypop_buffer_state cueparserpop_buffer_state
|
||||
#define yyensure_buffer_stack cueparserensure_buffer_stack
|
||||
#define yy_flex_debug cueparser_flex_debug
|
||||
#define yyin cueparserin
|
||||
#define yyleng cueparserleng
|
||||
#define yylex cueparserlex
|
||||
#define yylineno cueparserlineno
|
||||
#define yyout cueparserout
|
||||
#define yyrestart cueparserrestart
|
||||
#define yytext cueparsertext
|
||||
#define yywrap cueparserwrap
|
||||
#define yyalloc cueparseralloc
|
||||
#define yyrealloc cueparserrealloc
|
||||
#define yyfree cueparserfree
|
||||
|
||||
#define FLEX_SCANNER
|
||||
#define YY_FLEX_MAJOR_VERSION 2
|
||||
#define YY_FLEX_MINOR_VERSION 6
|
||||
@ -14,6 +39,240 @@
|
||||
#define FLEX_BETA
|
||||
#endif
|
||||
|
||||
#ifdef yy_create_buffer
|
||||
#define cueparser_create_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_create_buffer cueparser_create_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yy_delete_buffer
|
||||
#define cueparser_delete_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_delete_buffer cueparser_delete_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yy_scan_buffer
|
||||
#define cueparser_scan_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_scan_buffer cueparser_scan_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yy_scan_string
|
||||
#define cueparser_scan_string_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_scan_string cueparser_scan_string
|
||||
#endif
|
||||
|
||||
#ifdef yy_scan_bytes
|
||||
#define cueparser_scan_bytes_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_scan_bytes cueparser_scan_bytes
|
||||
#endif
|
||||
|
||||
#ifdef yy_init_buffer
|
||||
#define cueparser_init_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_init_buffer cueparser_init_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yy_flush_buffer
|
||||
#define cueparser_flush_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_flush_buffer cueparser_flush_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yy_load_buffer_state
|
||||
#define cueparser_load_buffer_state_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_load_buffer_state cueparser_load_buffer_state
|
||||
#endif
|
||||
|
||||
#ifdef yy_switch_to_buffer
|
||||
#define cueparser_switch_to_buffer_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_switch_to_buffer cueparser_switch_to_buffer
|
||||
#endif
|
||||
|
||||
#ifdef yypush_buffer_state
|
||||
#define cueparserpush_buffer_state_ALREADY_DEFINED
|
||||
#else
|
||||
#define yypush_buffer_state cueparserpush_buffer_state
|
||||
#endif
|
||||
|
||||
#ifdef yypop_buffer_state
|
||||
#define cueparserpop_buffer_state_ALREADY_DEFINED
|
||||
#else
|
||||
#define yypop_buffer_state cueparserpop_buffer_state
|
||||
#endif
|
||||
|
||||
#ifdef yyensure_buffer_stack
|
||||
#define cueparserensure_buffer_stack_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyensure_buffer_stack cueparserensure_buffer_stack
|
||||
#endif
|
||||
|
||||
#ifdef yylex
|
||||
#define cueparserlex_ALREADY_DEFINED
|
||||
#else
|
||||
#define yylex cueparserlex
|
||||
#endif
|
||||
|
||||
#ifdef yyrestart
|
||||
#define cueparserrestart_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyrestart cueparserrestart
|
||||
#endif
|
||||
|
||||
#ifdef yylex_init
|
||||
#define cueparserlex_init_ALREADY_DEFINED
|
||||
#else
|
||||
#define yylex_init cueparserlex_init
|
||||
#endif
|
||||
|
||||
#ifdef yylex_init_extra
|
||||
#define cueparserlex_init_extra_ALREADY_DEFINED
|
||||
#else
|
||||
#define yylex_init_extra cueparserlex_init_extra
|
||||
#endif
|
||||
|
||||
#ifdef yylex_destroy
|
||||
#define cueparserlex_destroy_ALREADY_DEFINED
|
||||
#else
|
||||
#define yylex_destroy cueparserlex_destroy
|
||||
#endif
|
||||
|
||||
#ifdef yyget_debug
|
||||
#define cueparserget_debug_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_debug cueparserget_debug
|
||||
#endif
|
||||
|
||||
#ifdef yyset_debug
|
||||
#define cueparserset_debug_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyset_debug cueparserset_debug
|
||||
#endif
|
||||
|
||||
#ifdef yyget_extra
|
||||
#define cueparserget_extra_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_extra cueparserget_extra
|
||||
#endif
|
||||
|
||||
#ifdef yyset_extra
|
||||
#define cueparserset_extra_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyset_extra cueparserset_extra
|
||||
#endif
|
||||
|
||||
#ifdef yyget_in
|
||||
#define cueparserget_in_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_in cueparserget_in
|
||||
#endif
|
||||
|
||||
#ifdef yyset_in
|
||||
#define cueparserset_in_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyset_in cueparserset_in
|
||||
#endif
|
||||
|
||||
#ifdef yyget_out
|
||||
#define cueparserget_out_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_out cueparserget_out
|
||||
#endif
|
||||
|
||||
#ifdef yyset_out
|
||||
#define cueparserset_out_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyset_out cueparserset_out
|
||||
#endif
|
||||
|
||||
#ifdef yyget_leng
|
||||
#define cueparserget_leng_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_leng cueparserget_leng
|
||||
#endif
|
||||
|
||||
#ifdef yyget_text
|
||||
#define cueparserget_text_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_text cueparserget_text
|
||||
#endif
|
||||
|
||||
#ifdef yyget_lineno
|
||||
#define cueparserget_lineno_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyget_lineno cueparserget_lineno
|
||||
#endif
|
||||
|
||||
#ifdef yyset_lineno
|
||||
#define cueparserset_lineno_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyset_lineno cueparserset_lineno
|
||||
#endif
|
||||
|
||||
#ifdef yywrap
|
||||
#define cueparserwrap_ALREADY_DEFINED
|
||||
#else
|
||||
#define yywrap cueparserwrap
|
||||
#endif
|
||||
|
||||
#ifdef yyalloc
|
||||
#define cueparseralloc_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyalloc cueparseralloc
|
||||
#endif
|
||||
|
||||
#ifdef yyrealloc
|
||||
#define cueparserrealloc_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyrealloc cueparserrealloc
|
||||
#endif
|
||||
|
||||
#ifdef yyfree
|
||||
#define cueparserfree_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyfree cueparserfree
|
||||
#endif
|
||||
|
||||
#ifdef yytext
|
||||
#define cueparsertext_ALREADY_DEFINED
|
||||
#else
|
||||
#define yytext cueparsertext
|
||||
#endif
|
||||
|
||||
#ifdef yyleng
|
||||
#define cueparserleng_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyleng cueparserleng
|
||||
#endif
|
||||
|
||||
#ifdef yyin
|
||||
#define cueparserin_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyin cueparserin
|
||||
#endif
|
||||
|
||||
#ifdef yyout
|
||||
#define cueparserout_ALREADY_DEFINED
|
||||
#else
|
||||
#define yyout cueparserout
|
||||
#endif
|
||||
|
||||
#ifdef yy_flex_debug
|
||||
#define cueparser_flex_debug_ALREADY_DEFINED
|
||||
#else
|
||||
#define yy_flex_debug cueparser_flex_debug
|
||||
#endif
|
||||
|
||||
#ifdef yylineno
|
||||
#define cueparserlineno_ALREADY_DEFINED
|
||||
#else
|
||||
#define yylineno cueparserlineno
|
||||
#endif
|
||||
|
||||
/* First, we deal with platform-specific or compiler-specific issues. */
|
||||
|
||||
/* begin standard C headers. */
|
||||
@ -343,7 +602,7 @@ void yyfree ( void * );
|
||||
|
||||
/* Begin user sect3 */
|
||||
|
||||
#define yywrap() (/*CONSTCOND*/1)
|
||||
#define cueparserwrap() (/*CONSTCOND*/1)
|
||||
#define YY_SKIP_YYWRAP
|
||||
typedef flex_uint8_t YY_CHAR;
|
||||
|
||||
@ -789,13 +1048,13 @@ char *yytext;
|
||||
#include "cd.h"
|
||||
#include "cue_parser.h"
|
||||
|
||||
char yy_buffer[PARSER_BUFFER];
|
||||
char cueparser_buffer[PARSER_BUFFER];
|
||||
|
||||
int yylex(void);
|
||||
#line 796 "cue_scanner.c"
|
||||
int cueparserlex(void);
|
||||
#line 1055 "cue_scanner.c"
|
||||
#define YY_NO_INPUT 1
|
||||
|
||||
#line 799 "cue_scanner.c"
|
||||
#line 1058 "cue_scanner.c"
|
||||
|
||||
#define INITIAL 0
|
||||
#define NAME 1
|
||||
@ -1009,10 +1268,10 @@ YY_DECL
|
||||
}
|
||||
|
||||
{
|
||||
#line 32 "cue_scanner.l"
|
||||
#line 33 "cue_scanner.l"
|
||||
|
||||
|
||||
#line 1016 "cue_scanner.c"
|
||||
#line 1275 "cue_scanner.c"
|
||||
|
||||
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
|
||||
{
|
||||
@ -1082,351 +1341,351 @@ do_action: /* This label is used only to access EOF actions. */
|
||||
|
||||
case 1:
|
||||
/* rule 1 can match eol */
|
||||
#line 35 "cue_scanner.l"
|
||||
#line 36 "cue_scanner.l"
|
||||
case 2:
|
||||
/* rule 2 can match eol */
|
||||
YY_RULE_SETUP
|
||||
#line 35 "cue_scanner.l"
|
||||
#line 36 "cue_scanner.l"
|
||||
{
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
++yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng) - 2] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng) - 2] = '\0';
|
||||
BEGIN(INITIAL);
|
||||
return STRING;
|
||||
}
|
||||
YY_BREAK
|
||||
case 3:
|
||||
YY_RULE_SETUP
|
||||
#line 44 "cue_scanner.l"
|
||||
#line 45 "cue_scanner.l"
|
||||
{
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng)] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng)] = '\0';
|
||||
BEGIN(INITIAL);
|
||||
return STRING;
|
||||
}
|
||||
YY_BREAK
|
||||
case 4:
|
||||
YY_RULE_SETUP
|
||||
#line 53 "cue_scanner.l"
|
||||
#line 54 "cue_scanner.l"
|
||||
{ BEGIN(NAME); return CATALOG; }
|
||||
YY_BREAK
|
||||
case 5:
|
||||
YY_RULE_SETUP
|
||||
#line 54 "cue_scanner.l"
|
||||
#line 55 "cue_scanner.l"
|
||||
{ BEGIN(NAME); return CDTEXTFILE; }
|
||||
YY_BREAK
|
||||
case 6:
|
||||
YY_RULE_SETUP
|
||||
#line 56 "cue_scanner.l"
|
||||
#line 57 "cue_scanner.l"
|
||||
{ BEGIN(NAME); return FFILE; }
|
||||
YY_BREAK
|
||||
case 7:
|
||||
YY_RULE_SETUP
|
||||
#line 57 "cue_scanner.l"
|
||||
#line 58 "cue_scanner.l"
|
||||
{ return BINARY; }
|
||||
YY_BREAK
|
||||
case 8:
|
||||
YY_RULE_SETUP
|
||||
#line 58 "cue_scanner.l"
|
||||
#line 59 "cue_scanner.l"
|
||||
{ return MOTOROLA; }
|
||||
YY_BREAK
|
||||
case 9:
|
||||
YY_RULE_SETUP
|
||||
#line 59 "cue_scanner.l"
|
||||
#line 60 "cue_scanner.l"
|
||||
{ return AIFF; }
|
||||
YY_BREAK
|
||||
case 10:
|
||||
YY_RULE_SETUP
|
||||
#line 60 "cue_scanner.l"
|
||||
#line 61 "cue_scanner.l"
|
||||
{ return WAVE; }
|
||||
YY_BREAK
|
||||
case 11:
|
||||
YY_RULE_SETUP
|
||||
#line 61 "cue_scanner.l"
|
||||
#line 62 "cue_scanner.l"
|
||||
{ return MP3; }
|
||||
YY_BREAK
|
||||
case 12:
|
||||
YY_RULE_SETUP
|
||||
#line 62 "cue_scanner.l"
|
||||
#line 63 "cue_scanner.l"
|
||||
{ return FLAC; }
|
||||
YY_BREAK
|
||||
case 13:
|
||||
YY_RULE_SETUP
|
||||
#line 64 "cue_scanner.l"
|
||||
#line 65 "cue_scanner.l"
|
||||
{ return TRACK; }
|
||||
YY_BREAK
|
||||
case 14:
|
||||
YY_RULE_SETUP
|
||||
#line 65 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_AUDIO; return AUDIO; }
|
||||
#line 66 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_AUDIO; return AUDIO; }
|
||||
YY_BREAK
|
||||
case 15:
|
||||
YY_RULE_SETUP
|
||||
#line 66 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE1; return MODE1_2048; }
|
||||
#line 67 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE1; return MODE1_2048; }
|
||||
YY_BREAK
|
||||
case 16:
|
||||
YY_RULE_SETUP
|
||||
#line 67 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE1_RAW; return MODE1_2352; }
|
||||
#line 68 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE1_RAW; return MODE1_2352; }
|
||||
YY_BREAK
|
||||
case 17:
|
||||
YY_RULE_SETUP
|
||||
#line 68 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE2; return MODE2_2336; }
|
||||
#line 69 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE2; return MODE2_2336; }
|
||||
YY_BREAK
|
||||
case 18:
|
||||
YY_RULE_SETUP
|
||||
#line 69 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE2_FORM1; return MODE2_2048; }
|
||||
#line 70 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE2_FORM1; return MODE2_2048; }
|
||||
YY_BREAK
|
||||
case 19:
|
||||
YY_RULE_SETUP
|
||||
#line 70 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE2_FORM2; return MODE2_2342; }
|
||||
#line 71 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE2_FORM2; return MODE2_2342; }
|
||||
YY_BREAK
|
||||
case 20:
|
||||
YY_RULE_SETUP
|
||||
#line 71 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE2_FORM_MIX; return MODE2_2332; }
|
||||
#line 72 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE2_FORM_MIX; return MODE2_2332; }
|
||||
YY_BREAK
|
||||
case 21:
|
||||
YY_RULE_SETUP
|
||||
#line 72 "cue_scanner.l"
|
||||
{ yylval.ival = MODE_MODE2_RAW; return MODE2_2352; }
|
||||
#line 73 "cue_scanner.l"
|
||||
{ cueparserlval.ival = MODE_MODE2_RAW; return MODE2_2352; }
|
||||
YY_BREAK
|
||||
case 22:
|
||||
YY_RULE_SETUP
|
||||
#line 74 "cue_scanner.l"
|
||||
#line 75 "cue_scanner.l"
|
||||
{ return FLAGS; }
|
||||
YY_BREAK
|
||||
case 23:
|
||||
YY_RULE_SETUP
|
||||
#line 75 "cue_scanner.l"
|
||||
{ yylval.ival = FLAG_PRE_EMPHASIS; return PRE; }
|
||||
#line 76 "cue_scanner.l"
|
||||
{ cueparserlval.ival = FLAG_PRE_EMPHASIS; return PRE; }
|
||||
YY_BREAK
|
||||
case 24:
|
||||
YY_RULE_SETUP
|
||||
#line 76 "cue_scanner.l"
|
||||
{ yylval.ival = FLAG_COPY_PERMITTED; return DCP; }
|
||||
#line 77 "cue_scanner.l"
|
||||
{ cueparserlval.ival = FLAG_COPY_PERMITTED; return DCP; }
|
||||
YY_BREAK
|
||||
case 25:
|
||||
YY_RULE_SETUP
|
||||
#line 77 "cue_scanner.l"
|
||||
{ yylval.ival = FLAG_FOUR_CHANNEL; return FOUR_CH; }
|
||||
#line 78 "cue_scanner.l"
|
||||
{ cueparserlval.ival = FLAG_FOUR_CHANNEL; return FOUR_CH; }
|
||||
YY_BREAK
|
||||
case 26:
|
||||
YY_RULE_SETUP
|
||||
#line 78 "cue_scanner.l"
|
||||
{ yylval.ival = FLAG_SCMS; return SCMS; }
|
||||
#line 79 "cue_scanner.l"
|
||||
{ cueparserlval.ival = FLAG_SCMS; return SCMS; }
|
||||
YY_BREAK
|
||||
case 27:
|
||||
YY_RULE_SETUP
|
||||
#line 80 "cue_scanner.l"
|
||||
#line 81 "cue_scanner.l"
|
||||
{ return PREGAP; }
|
||||
YY_BREAK
|
||||
case 28:
|
||||
YY_RULE_SETUP
|
||||
#line 81 "cue_scanner.l"
|
||||
#line 82 "cue_scanner.l"
|
||||
{ return INDEX; }
|
||||
YY_BREAK
|
||||
case 29:
|
||||
YY_RULE_SETUP
|
||||
#line 82 "cue_scanner.l"
|
||||
#line 83 "cue_scanner.l"
|
||||
{ return POSTGAP; }
|
||||
YY_BREAK
|
||||
case 30:
|
||||
YY_RULE_SETUP
|
||||
#line 84 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_TITLE; return TITLE; }
|
||||
#line 85 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_TITLE; return TITLE; }
|
||||
YY_BREAK
|
||||
case 31:
|
||||
YY_RULE_SETUP
|
||||
#line 85 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_PERFORMER; return PERFORMER; }
|
||||
#line 86 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_PERFORMER; return PERFORMER; }
|
||||
YY_BREAK
|
||||
case 32:
|
||||
YY_RULE_SETUP
|
||||
#line 86 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_SONGWRITER; return SONGWRITER; }
|
||||
#line 87 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_SONGWRITER; return SONGWRITER; }
|
||||
YY_BREAK
|
||||
case 33:
|
||||
YY_RULE_SETUP
|
||||
#line 87 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_COMPOSER; return COMPOSER; }
|
||||
#line 88 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_COMPOSER; return COMPOSER; }
|
||||
YY_BREAK
|
||||
case 34:
|
||||
YY_RULE_SETUP
|
||||
#line 88 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_ARRANGER; return ARRANGER; }
|
||||
#line 89 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_ARRANGER; return ARRANGER; }
|
||||
YY_BREAK
|
||||
case 35:
|
||||
YY_RULE_SETUP
|
||||
#line 89 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_MESSAGE; return MESSAGE; }
|
||||
#line 90 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_MESSAGE; return MESSAGE; }
|
||||
YY_BREAK
|
||||
case 36:
|
||||
YY_RULE_SETUP
|
||||
#line 90 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_DISC_ID; return DISC_ID; }
|
||||
#line 91 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_DISC_ID; return DISC_ID; }
|
||||
YY_BREAK
|
||||
case 37:
|
||||
YY_RULE_SETUP
|
||||
#line 91 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_GENRE; return GENRE; }
|
||||
#line 92 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_GENRE; return GENRE; }
|
||||
YY_BREAK
|
||||
case 38:
|
||||
YY_RULE_SETUP
|
||||
#line 92 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
||||
#line 93 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
||||
YY_BREAK
|
||||
case 39:
|
||||
YY_RULE_SETUP
|
||||
#line 93 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
||||
#line 94 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
||||
YY_BREAK
|
||||
case 40:
|
||||
YY_RULE_SETUP
|
||||
#line 94 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
||||
#line 95 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
||||
YY_BREAK
|
||||
case 41:
|
||||
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
|
||||
(yy_c_buf_p) = yy_cp = yy_bp + 4;
|
||||
YY_DO_BEFORE_ACTION; /* set up yytext again */
|
||||
YY_RULE_SETUP
|
||||
#line 95 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return ISRC; }
|
||||
#line 96 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_UPC_ISRC; return ISRC; }
|
||||
YY_BREAK
|
||||
case 42:
|
||||
YY_RULE_SETUP
|
||||
#line 96 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_SIZE_INFO; return SIZE_INFO; }
|
||||
#line 97 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_SIZE_INFO; return SIZE_INFO; }
|
||||
YY_BREAK
|
||||
case 43:
|
||||
YY_RULE_SETUP
|
||||
#line 98 "cue_scanner.l"
|
||||
#line 99 "cue_scanner.l"
|
||||
{ BEGIN(NAME); return TRACK_ISRC; }
|
||||
YY_BREAK
|
||||
case 44:
|
||||
YY_RULE_SETUP
|
||||
#line 100 "cue_scanner.l"
|
||||
#line 101 "cue_scanner.l"
|
||||
{ BEGIN(REM); /* exclusive rules for special exceptions */ }
|
||||
YY_BREAK
|
||||
case 45:
|
||||
YY_RULE_SETUP
|
||||
#line 102 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = REM_DATE; return DATE; }
|
||||
#line 103 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = REM_DATE; return DATE; }
|
||||
YY_BREAK
|
||||
case 46:
|
||||
YY_RULE_SETUP
|
||||
#line 103 "cue_scanner.l"
|
||||
{ BEGIN(NAME); yylval.ival = PTI_GENRE; return XXX_GENRE; }
|
||||
#line 104 "cue_scanner.l"
|
||||
{ BEGIN(NAME); cueparserlval.ival = PTI_GENRE; return XXX_GENRE; }
|
||||
YY_BREAK
|
||||
case 47:
|
||||
YY_RULE_SETUP
|
||||
#line 104 "cue_scanner.l"
|
||||
{ BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_GAIN;
|
||||
#line 105 "cue_scanner.l"
|
||||
{ BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_ALBUM_GAIN;
|
||||
return REPLAYGAIN_ALBUM_GAIN; }
|
||||
YY_BREAK
|
||||
case 48:
|
||||
YY_RULE_SETUP
|
||||
#line 106 "cue_scanner.l"
|
||||
{ BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_PEAK;
|
||||
#line 107 "cue_scanner.l"
|
||||
{ BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_ALBUM_PEAK;
|
||||
return REPLAYGAIN_ALBUM_PEAK; }
|
||||
YY_BREAK
|
||||
case 49:
|
||||
YY_RULE_SETUP
|
||||
#line 108 "cue_scanner.l"
|
||||
{ BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_GAIN;
|
||||
#line 109 "cue_scanner.l"
|
||||
{ BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_TRACK_GAIN;
|
||||
return REPLAYGAIN_TRACK_GAIN; }
|
||||
YY_BREAK
|
||||
case 50:
|
||||
YY_RULE_SETUP
|
||||
#line 110 "cue_scanner.l"
|
||||
{ BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_PEAK;
|
||||
#line 111 "cue_scanner.l"
|
||||
{ BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_TRACK_PEAK;
|
||||
return REPLAYGAIN_TRACK_PEAK; }
|
||||
YY_BREAK
|
||||
case 51:
|
||||
YY_RULE_SETUP
|
||||
#line 113 "cue_scanner.l"
|
||||
#line 114 "cue_scanner.l"
|
||||
{ BEGIN(REM); }
|
||||
YY_BREAK
|
||||
case 52:
|
||||
YY_RULE_SETUP
|
||||
#line 114 "cue_scanner.l"
|
||||
#line 115 "cue_scanner.l"
|
||||
{ BEGIN(REM); }
|
||||
YY_BREAK
|
||||
case 53:
|
||||
/* rule 53 can match eol */
|
||||
YY_RULE_SETUP
|
||||
#line 115 "cue_scanner.l"
|
||||
#line 116 "cue_scanner.l"
|
||||
{ BEGIN(INITIAL); }
|
||||
YY_BREAK
|
||||
case 54:
|
||||
YY_RULE_SETUP
|
||||
#line 117 "cue_scanner.l"
|
||||
#line 118 "cue_scanner.l"
|
||||
{
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng)] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng)] = '\0';
|
||||
BEGIN(SKIP);
|
||||
return STRING;
|
||||
}
|
||||
YY_BREAK
|
||||
case 55:
|
||||
YY_RULE_SETUP
|
||||
#line 126 "cue_scanner.l"
|
||||
#line 127 "cue_scanner.l"
|
||||
{ BEGIN(RPG); }
|
||||
YY_BREAK
|
||||
case 56:
|
||||
/* rule 56 can match eol */
|
||||
YY_RULE_SETUP
|
||||
#line 128 "cue_scanner.l"
|
||||
#line 129 "cue_scanner.l"
|
||||
{ BEGIN(INITIAL); yylineno++; return '\n'; }
|
||||
YY_BREAK
|
||||
case 57:
|
||||
YY_RULE_SETUP
|
||||
#line 130 "cue_scanner.l"
|
||||
#line 131 "cue_scanner.l"
|
||||
{ /* ignore whitespace */ }
|
||||
YY_BREAK
|
||||
case 58:
|
||||
YY_RULE_SETUP
|
||||
#line 132 "cue_scanner.l"
|
||||
{ yylval.ival = atoi(yytext); return NUMBER; }
|
||||
#line 133 "cue_scanner.l"
|
||||
{ cueparserlval.ival = atoi(yytext); return NUMBER; }
|
||||
YY_BREAK
|
||||
case 59:
|
||||
YY_RULE_SETUP
|
||||
#line 133 "cue_scanner.l"
|
||||
#line 134 "cue_scanner.l"
|
||||
{ return yytext[0]; }
|
||||
YY_BREAK
|
||||
case 60:
|
||||
/* rule 60 can match eol */
|
||||
YY_RULE_SETUP
|
||||
#line 135 "cue_scanner.l"
|
||||
#line 136 "cue_scanner.l"
|
||||
{ yylineno++; /* blank line */ }
|
||||
YY_BREAK
|
||||
case 61:
|
||||
/* rule 61 can match eol */
|
||||
YY_RULE_SETUP
|
||||
#line 136 "cue_scanner.l"
|
||||
#line 137 "cue_scanner.l"
|
||||
{ yylineno++; return '\n'; }
|
||||
YY_BREAK
|
||||
case 62:
|
||||
YY_RULE_SETUP
|
||||
#line 137 "cue_scanner.l"
|
||||
#line 138 "cue_scanner.l"
|
||||
{ fprintf(stderr, "bad character '%c'\n", yytext[0]); }
|
||||
YY_BREAK
|
||||
case 63:
|
||||
YY_RULE_SETUP
|
||||
#line 139 "cue_scanner.l"
|
||||
#line 140 "cue_scanner.l"
|
||||
ECHO;
|
||||
YY_BREAK
|
||||
#line 1430 "cue_scanner.c"
|
||||
#line 1689 "cue_scanner.c"
|
||||
case YY_STATE_EOF(INITIAL):
|
||||
case YY_STATE_EOF(NAME):
|
||||
case YY_STATE_EOF(REM):
|
||||
@ -2408,6 +2667,6 @@ void yyfree (void * ptr )
|
||||
|
||||
#define YYTABLES_NAME "yytables"
|
||||
|
||||
#line 139 "cue_scanner.l"
|
||||
#line 140 "cue_scanner.l"
|
||||
|
||||
|
||||
|
@ -11,9 +11,9 @@
|
||||
#include "cd.h"
|
||||
#include "cue_parser.h"
|
||||
|
||||
char yy_buffer[PARSER_BUFFER];
|
||||
char cueparser_buffer[PARSER_BUFFER];
|
||||
|
||||
int yylex(void);
|
||||
int cueparserlex(void);
|
||||
%}
|
||||
|
||||
ws [ \t\r]
|
||||
@ -23,6 +23,7 @@ nonws [^ \t\r\n]
|
||||
%option noyywrap
|
||||
%option noinput
|
||||
%option nounput
|
||||
%option prefix="cueparser"
|
||||
|
||||
%s NAME
|
||||
%x REM
|
||||
@ -33,19 +34,19 @@ nonws [^ \t\r\n]
|
||||
|
||||
\'([^\']|\\\')*\' |
|
||||
\"([^\"]|\\\")*\" {
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
++yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng) - 2] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng) - 2] = '\0';
|
||||
BEGIN(INITIAL);
|
||||
return STRING;
|
||||
}
|
||||
|
||||
<NAME>{nonws}+ {
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng)] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng)] = '\0';
|
||||
BEGIN(INITIAL);
|
||||
return STRING;
|
||||
}
|
||||
@ -62,52 +63,52 @@ MP3 { return MP3; }
|
||||
FLAC { return FLAC; }
|
||||
|
||||
TRACK { return TRACK; }
|
||||
AUDIO { yylval.ival = MODE_AUDIO; return AUDIO; }
|
||||
MODE1\/2048 { yylval.ival = MODE_MODE1; return MODE1_2048; }
|
||||
MODE1\/2352 { yylval.ival = MODE_MODE1_RAW; return MODE1_2352; }
|
||||
MODE2\/2336 { yylval.ival = MODE_MODE2; return MODE2_2336; }
|
||||
MODE2\/2048 { yylval.ival = MODE_MODE2_FORM1; return MODE2_2048; }
|
||||
MODE2\/2342 { yylval.ival = MODE_MODE2_FORM2; return MODE2_2342; }
|
||||
MODE2\/2332 { yylval.ival = MODE_MODE2_FORM_MIX; return MODE2_2332; }
|
||||
MODE2\/2352 { yylval.ival = MODE_MODE2_RAW; return MODE2_2352; }
|
||||
AUDIO { cueparserlval.ival = MODE_AUDIO; return AUDIO; }
|
||||
MODE1\/2048 { cueparserlval.ival = MODE_MODE1; return MODE1_2048; }
|
||||
MODE1\/2352 { cueparserlval.ival = MODE_MODE1_RAW; return MODE1_2352; }
|
||||
MODE2\/2336 { cueparserlval.ival = MODE_MODE2; return MODE2_2336; }
|
||||
MODE2\/2048 { cueparserlval.ival = MODE_MODE2_FORM1; return MODE2_2048; }
|
||||
MODE2\/2342 { cueparserlval.ival = MODE_MODE2_FORM2; return MODE2_2342; }
|
||||
MODE2\/2332 { cueparserlval.ival = MODE_MODE2_FORM_MIX; return MODE2_2332; }
|
||||
MODE2\/2352 { cueparserlval.ival = MODE_MODE2_RAW; return MODE2_2352; }
|
||||
|
||||
FLAGS { return FLAGS; }
|
||||
PRE { yylval.ival = FLAG_PRE_EMPHASIS; return PRE; }
|
||||
DCP { yylval.ival = FLAG_COPY_PERMITTED; return DCP; }
|
||||
4CH { yylval.ival = FLAG_FOUR_CHANNEL; return FOUR_CH; }
|
||||
SCMS { yylval.ival = FLAG_SCMS; return SCMS; }
|
||||
PRE { cueparserlval.ival = FLAG_PRE_EMPHASIS; return PRE; }
|
||||
DCP { cueparserlval.ival = FLAG_COPY_PERMITTED; return DCP; }
|
||||
4CH { cueparserlval.ival = FLAG_FOUR_CHANNEL; return FOUR_CH; }
|
||||
SCMS { cueparserlval.ival = FLAG_SCMS; return SCMS; }
|
||||
|
||||
PREGAP { return PREGAP; }
|
||||
INDEX { return INDEX; }
|
||||
POSTGAP { return POSTGAP; }
|
||||
|
||||
TITLE { BEGIN(NAME); yylval.ival = PTI_TITLE; return TITLE; }
|
||||
PERFORMER { BEGIN(NAME); yylval.ival = PTI_PERFORMER; return PERFORMER; }
|
||||
SONGWRITER { BEGIN(NAME); yylval.ival = PTI_SONGWRITER; return SONGWRITER; }
|
||||
COMPOSER { BEGIN(NAME); yylval.ival = PTI_COMPOSER; return COMPOSER; }
|
||||
ARRANGER { BEGIN(NAME); yylval.ival = PTI_ARRANGER; return ARRANGER; }
|
||||
MESSAGE { BEGIN(NAME); yylval.ival = PTI_MESSAGE; return MESSAGE; }
|
||||
DISC_ID { BEGIN(NAME); yylval.ival = PTI_DISC_ID; return DISC_ID; }
|
||||
GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return GENRE; }
|
||||
TOC_INFO1 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
||||
TOC_INFO2 { BEGIN(NAME); yylval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
||||
UPC_EAN { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
||||
ISRC/{ws}+\" { BEGIN(NAME); yylval.ival = PTI_UPC_ISRC; return ISRC; }
|
||||
SIZE_INFO { BEGIN(NAME); yylval.ival = PTI_SIZE_INFO; return SIZE_INFO; }
|
||||
TITLE { BEGIN(NAME); cueparserlval.ival = PTI_TITLE; return TITLE; }
|
||||
PERFORMER { BEGIN(NAME); cueparserlval.ival = PTI_PERFORMER; return PERFORMER; }
|
||||
SONGWRITER { BEGIN(NAME); cueparserlval.ival = PTI_SONGWRITER; return SONGWRITER; }
|
||||
COMPOSER { BEGIN(NAME); cueparserlval.ival = PTI_COMPOSER; return COMPOSER; }
|
||||
ARRANGER { BEGIN(NAME); cueparserlval.ival = PTI_ARRANGER; return ARRANGER; }
|
||||
MESSAGE { BEGIN(NAME); cueparserlval.ival = PTI_MESSAGE; return MESSAGE; }
|
||||
DISC_ID { BEGIN(NAME); cueparserlval.ival = PTI_DISC_ID; return DISC_ID; }
|
||||
GENRE { BEGIN(NAME); cueparserlval.ival = PTI_GENRE; return GENRE; }
|
||||
TOC_INFO1 { BEGIN(NAME); cueparserlval.ival = PTI_TOC_INFO1; return TOC_INFO1; }
|
||||
TOC_INFO2 { BEGIN(NAME); cueparserlval.ival = PTI_TOC_INFO2; return TOC_INFO2; }
|
||||
UPC_EAN { BEGIN(NAME); cueparserlval.ival = PTI_UPC_ISRC; return UPC_EAN; }
|
||||
ISRC/{ws}+\" { BEGIN(NAME); cueparserlval.ival = PTI_UPC_ISRC; return ISRC; }
|
||||
SIZE_INFO { BEGIN(NAME); cueparserlval.ival = PTI_SIZE_INFO; return SIZE_INFO; }
|
||||
|
||||
ISRC { BEGIN(NAME); return TRACK_ISRC; }
|
||||
|
||||
REM { BEGIN(REM); /* exclusive rules for special exceptions */ }
|
||||
|
||||
<REM>DATE { BEGIN(NAME); yylval.ival = REM_DATE; return DATE; }
|
||||
<REM>GENRE { BEGIN(NAME); yylval.ival = PTI_GENRE; return XXX_GENRE; }
|
||||
<REM>REPLAYGAIN_ALBUM_GAIN { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_GAIN;
|
||||
<REM>DATE { BEGIN(NAME); cueparserlval.ival = REM_DATE; return DATE; }
|
||||
<REM>GENRE { BEGIN(NAME); cueparserlval.ival = PTI_GENRE; return XXX_GENRE; }
|
||||
<REM>REPLAYGAIN_ALBUM_GAIN { BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_ALBUM_GAIN;
|
||||
return REPLAYGAIN_ALBUM_GAIN; }
|
||||
<REM>REPLAYGAIN_ALBUM_PEAK { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_ALBUM_PEAK;
|
||||
<REM>REPLAYGAIN_ALBUM_PEAK { BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_ALBUM_PEAK;
|
||||
return REPLAYGAIN_ALBUM_PEAK; }
|
||||
<REM>REPLAYGAIN_TRACK_GAIN { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_GAIN;
|
||||
<REM>REPLAYGAIN_TRACK_GAIN { BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_TRACK_GAIN;
|
||||
return REPLAYGAIN_TRACK_GAIN; }
|
||||
<REM>REPLAYGAIN_TRACK_PEAK { BEGIN(RPG); yylval.ival = REM_REPLAYGAIN_TRACK_PEAK;
|
||||
<REM>REPLAYGAIN_TRACK_PEAK { BEGIN(RPG); cueparserlval.ival = REM_REPLAYGAIN_TRACK_PEAK;
|
||||
return REPLAYGAIN_TRACK_PEAK; }
|
||||
|
||||
<REM>{ws}+ { BEGIN(REM); }
|
||||
@ -115,10 +116,10 @@ REM { BEGIN(REM); /* exclusive rules for special exceptions */ }
|
||||
<REM>\n { BEGIN(INITIAL); }
|
||||
|
||||
<RPG>{nonws}+ {
|
||||
yylval.sval = strncpy( yy_buffer,
|
||||
cueparserlval.sval = strncpy( cueparser_buffer,
|
||||
yytext,
|
||||
(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng));
|
||||
yylval.sval[(yyleng > sizeof(yy_buffer) ? sizeof(yy_buffer) : yyleng)] = '\0';
|
||||
(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng));
|
||||
cueparserlval.sval[(yyleng > sizeof(cueparser_buffer) ? sizeof(cueparser_buffer) : yyleng)] = '\0';
|
||||
BEGIN(SKIP);
|
||||
return STRING;
|
||||
}
|
||||
@ -129,7 +130,7 @@ REM { BEGIN(REM); /* exclusive rules for special exceptions */ }
|
||||
|
||||
{ws}+ { /* ignore whitespace */ }
|
||||
|
||||
[[:digit:]]+ { yylval.ival = atoi(yytext); return NUMBER; }
|
||||
[[:digit:]]+ { cueparserlval.ival = atoi(yytext); return NUMBER; }
|
||||
: { return yytext[0]; }
|
||||
|
||||
^{ws}*\n { yylineno++; /* blank line */ }
|
||||
|
5
dep/libcue/src/generate_parser.sh
Normal file
5
dep/libcue/src/generate_parser.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
flex --nounistd -o cue_scanner.c cue_scanner.l
|
||||
bison --defines=cue_parser.h -o cue_parser.c cue_parser.y
|
||||
|
Loading…
Reference in New Issue
Block a user