rmultimarkdown 6.4.0.3 → 6.7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/Rakefile +7 -13
- data/ext/Makefile +67 -55
- data/ext/extconf.rb +8 -6
- data/ext/mmd/aho-corasick.c +8 -8
- data/ext/mmd/aho-corasick.h +3 -3
- data/ext/mmd/argtable3.c +6537 -0
- data/ext/mmd/argtable3.h +273 -0
- data/ext/mmd/beamer.c +12 -1
- data/ext/mmd/char.c +120 -27
- data/ext/mmd/char.h +23 -23
- data/ext/mmd/critic_markup.c +7 -6
- data/ext/mmd/d_string.c +88 -32
- data/ext/mmd/{include/d_string.h → d_string.h} +50 -38
- data/ext/mmd/epub.c +36 -12
- data/ext/mmd/epub.h +2 -2
- data/ext/mmd/file.c +50 -40
- data/ext/mmd/file.h +2 -2
- data/ext/mmd/html.c +164 -99
- data/ext/mmd/html.h +3 -2
- data/ext/mmd/i18n.h +15 -11
- data/ext/mmd/itmz-lexer.c +16978 -0
- data/ext/mmd/itmz-lexer.h +132 -0
- data/ext/mmd/itmz-parser.c +1189 -0
- data/ext/mmd/itmz-parser.h +11 -0
- data/ext/mmd/itmz-reader.c +388 -0
- data/ext/mmd/itmz-reader.h +111 -0
- data/ext/mmd/itmz.c +567 -0
- data/ext/mmd/itmz.h +117 -0
- data/ext/mmd/latex.c +93 -41
- data/ext/mmd/lexer.c +3506 -2774
- data/ext/mmd/{include/libMultiMarkdown.h → libMultiMarkdown.h} +49 -2
- data/ext/mmd/main.c +612 -0
- data/ext/mmd/memoir.c +4 -1
- data/ext/mmd/miniz.c +6905 -6680
- data/ext/mmd/miniz.h +456 -476
- data/ext/mmd/mmd.c +399 -94
- data/ext/mmd/mmd.h +25 -25
- data/ext/mmd/object_pool.h +3 -3
- data/ext/mmd/opendocument-content.c +137 -69
- data/ext/mmd/opendocument-content.h +2 -2
- data/ext/mmd/opendocument.c +35 -14
- data/ext/mmd/opendocument.h +2 -2
- data/ext/mmd/opml-lexer.c +259 -637
- data/ext/mmd/opml-lexer.h +1 -17
- data/ext/mmd/opml-parser.c +194 -188
- data/ext/mmd/opml-reader.c +72 -142
- data/ext/mmd/opml-reader.h +1 -1
- data/ext/mmd/opml.c +13 -13
- data/ext/mmd/opml.h +1 -1
- data/ext/mmd/parser.c +1623 -1244
- data/ext/mmd/rng.c +8 -3
- data/ext/mmd/scanners.c +66625 -103198
- data/ext/mmd/scanners.h +1 -0
- data/ext/mmd/stack.c +62 -20
- data/ext/mmd/stack.h +10 -21
- data/ext/mmd/textbundle.c +23 -7
- data/ext/mmd/textbundle.h +2 -2
- data/ext/mmd/token.c +42 -16
- data/ext/mmd/{include/token.h → token.h} +22 -8
- data/ext/mmd/token_pairs.c +0 -16
- data/ext/mmd/transclude.c +6 -2
- data/ext/mmd/uthash.h +745 -745
- data/ext/mmd/version.h +8 -8
- data/ext/mmd/writer.c +225 -63
- data/ext/mmd/writer.h +50 -36
- data/ext/mmd/xml.c +855 -0
- data/ext/mmd/xml.h +134 -0
- data/ext/mmd/zip.c +71 -4
- data/ext/mmd/zip.h +7 -1
- data/ext/ruby_multi_markdown.c +9 -18
- data/lib/multi_markdown/version.rb +1 -1
- data/lib/multi_markdown.bundle +0 -0
- data/rmultimarkdown.gemspec +0 -2
- metadata +22 -28
- data/ext/mmd/char_lookup.c +0 -212
data/ext/mmd/opml-parser.c
CHANGED
|
@@ -106,16 +106,16 @@ typedef union {
|
|
|
106
106
|
#define OPMLARG_PDECL , mmd_engine * engine
|
|
107
107
|
#define OPMLARG_FETCH mmd_engine * engine = yypParser->engine
|
|
108
108
|
#define OPMLARG_STORE yypParser->engine = engine
|
|
109
|
-
#define YYNSTATE
|
|
110
|
-
#define YYNRULE
|
|
111
|
-
#define YY_MAX_SHIFT
|
|
112
|
-
#define YY_MIN_SHIFTREDUCE
|
|
113
|
-
#define YY_MAX_SHIFTREDUCE
|
|
114
|
-
#define YY_MIN_REDUCE
|
|
115
|
-
#define YY_MAX_REDUCE
|
|
116
|
-
#define YY_ERROR_ACTION
|
|
117
|
-
#define YY_ACCEPT_ACTION
|
|
118
|
-
#define YY_NO_ACTION
|
|
109
|
+
#define YYNSTATE 19
|
|
110
|
+
#define YYNRULE 19
|
|
111
|
+
#define YY_MAX_SHIFT 18
|
|
112
|
+
#define YY_MIN_SHIFTREDUCE 35
|
|
113
|
+
#define YY_MAX_SHIFTREDUCE 53
|
|
114
|
+
#define YY_MIN_REDUCE 54
|
|
115
|
+
#define YY_MAX_REDUCE 72
|
|
116
|
+
#define YY_ERROR_ACTION 73
|
|
117
|
+
#define YY_ACCEPT_ACTION 74
|
|
118
|
+
#define YY_NO_ACTION 75
|
|
119
119
|
/************* End control #defines *******************************************/
|
|
120
120
|
|
|
121
121
|
/* Define the yytestcase() macro to be a no-op if is not already defined
|
|
@@ -187,42 +187,42 @@ typedef union {
|
|
|
187
187
|
** yy_default[] Default action for each state.
|
|
188
188
|
**
|
|
189
189
|
*********** Begin parsing tables **********************************************/
|
|
190
|
-
#define YY_ACTTAB_COUNT (
|
|
190
|
+
#define YY_ACTTAB_COUNT (60)
|
|
191
191
|
static const YYACTIONTYPE yy_action[] = {
|
|
192
|
-
/* 0 */ 1,
|
|
193
|
-
/* 10 */
|
|
194
|
-
/* 20 */
|
|
195
|
-
/* 30 */ 3,
|
|
196
|
-
/* 40 */
|
|
197
|
-
/* 50 */
|
|
192
|
+
/* 0 */ 1, 49, 15, 3, 53, 46, 1, 47, 15, 3,
|
|
193
|
+
/* 10 */ 53, 1, 52, 15, 3, 53, 1, 51, 15, 3,
|
|
194
|
+
/* 20 */ 53, 45, 1, 13, 15, 3, 53, 1, 16, 15,
|
|
195
|
+
/* 30 */ 3, 53, 74, 18, 11, 10, 2, 4, 9, 14,
|
|
196
|
+
/* 40 */ 6, 6, 7, 7, 5, 5, 8, 4, 43, 12,
|
|
197
|
+
/* 50 */ 2, 17, 39, 44, 42, 41, 40, 38, 50, 54,
|
|
198
198
|
};
|
|
199
199
|
static const YYCODETYPE yy_lookahead[] = {
|
|
200
|
-
/* 0 */ 11, 12, 13, 14, 15, 10, 11,
|
|
200
|
+
/* 0 */ 11, 12, 13, 14, 15, 10, 11, 24, 13, 14,
|
|
201
201
|
/* 10 */ 15, 11, 12, 13, 14, 15, 11, 12, 13, 14,
|
|
202
|
-
/* 20 */ 15, 10, 11,
|
|
203
|
-
/* 30 */ 14, 15, 17, 18,
|
|
204
|
-
/* 40 */ 23, 24,
|
|
205
|
-
/* 50 */
|
|
202
|
+
/* 20 */ 15, 10, 11, 22, 13, 14, 15, 11, 21, 13,
|
|
203
|
+
/* 30 */ 14, 15, 17, 18, 19, 1, 9, 3, 20, 21,
|
|
204
|
+
/* 40 */ 23, 24, 23, 24, 23, 24, 5, 3, 6, 7,
|
|
205
|
+
/* 50 */ 9, 19, 2, 8, 6, 4, 4, 2, 12, 0,
|
|
206
206
|
};
|
|
207
|
-
#define YY_SHIFT_USE_DFLT (
|
|
208
|
-
#define YY_SHIFT_COUNT (
|
|
207
|
+
#define YY_SHIFT_USE_DFLT (60)
|
|
208
|
+
#define YY_SHIFT_COUNT (18)
|
|
209
209
|
#define YY_SHIFT_MIN (-11)
|
|
210
|
-
#define YY_SHIFT_MAX (
|
|
210
|
+
#define YY_SHIFT_MAX (59)
|
|
211
211
|
static const signed char yy_shift_ofst[] = {
|
|
212
|
-
/* 0 */
|
|
213
|
-
/* 10 */
|
|
212
|
+
/* 0 */ 34, -11, -5, 16, 41, 0, 5, 11, 42, 27,
|
|
213
|
+
/* 10 */ 44, 50, 45, 48, 51, 46, 52, 55, 59,
|
|
214
214
|
};
|
|
215
|
-
#define YY_REDUCE_USE_DFLT (-
|
|
215
|
+
#define YY_REDUCE_USE_DFLT (-18)
|
|
216
216
|
#define YY_REDUCE_COUNT (10)
|
|
217
|
-
#define YY_REDUCE_MIN (-
|
|
218
|
-
#define YY_REDUCE_MAX (
|
|
217
|
+
#define YY_REDUCE_MIN (-17)
|
|
218
|
+
#define YY_REDUCE_MAX (32)
|
|
219
219
|
static const signed char yy_reduce_ofst[] = {
|
|
220
|
-
/* 0 */ 15,
|
|
221
|
-
/* 10 */
|
|
220
|
+
/* 0 */ 15, 17, 19, 21, 18, -17, -17, -17, 1, 7,
|
|
221
|
+
/* 10 */ 32,
|
|
222
222
|
};
|
|
223
223
|
static const YYACTIONTYPE yy_default[] = {
|
|
224
|
-
/* 0 */
|
|
225
|
-
/* 10 */
|
|
224
|
+
/* 0 */ 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
|
|
225
|
+
/* 10 */ 73, 56, 73, 73, 73, 73, 73, 55, 73,
|
|
226
226
|
};
|
|
227
227
|
/********** End of lemon-generated parsing tables *****************************/
|
|
228
228
|
|
|
@@ -273,28 +273,28 @@ typedef struct yyStackEntry yyStackEntry;
|
|
|
273
273
|
/* The state of the parser is completely contained in an instance of
|
|
274
274
|
** the following structure */
|
|
275
275
|
struct yyParser {
|
|
276
|
-
yyStackEntry *yytos;
|
|
277
|
-
|
|
276
|
+
yyStackEntry * yytos; /* Pointer to top element of the stack */
|
|
277
|
+
#ifdef YYTRACKMAXSTACKDEPTH
|
|
278
278
|
int yyhwm; /* High-water mark of the stack */
|
|
279
|
-
|
|
280
|
-
|
|
279
|
+
#endif
|
|
280
|
+
#ifndef YYNOERRORRECOVERY
|
|
281
281
|
int yyerrcnt; /* Shifts left before out of the error */
|
|
282
|
-
|
|
282
|
+
#endif
|
|
283
283
|
OPMLARG_SDECL /* A place to hold %extra_argument */
|
|
284
|
-
|
|
284
|
+
#if YYSTACKDEPTH<=0
|
|
285
285
|
int yystksz; /* Current side of the stack */
|
|
286
|
-
yyStackEntry *yystack;
|
|
286
|
+
yyStackEntry * yystack; /* The parser's stack */
|
|
287
287
|
yyStackEntry yystk0; /* First stack entry */
|
|
288
|
-
|
|
288
|
+
#else
|
|
289
289
|
yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */
|
|
290
|
-
|
|
290
|
+
#endif
|
|
291
291
|
};
|
|
292
292
|
typedef struct yyParser yyParser;
|
|
293
293
|
|
|
294
294
|
#ifndef NDEBUG
|
|
295
295
|
#include <stdio.h>
|
|
296
|
-
static FILE *yyTraceFILE = 0;
|
|
297
|
-
static char *yyTracePrompt = 0;
|
|
296
|
+
static FILE * yyTraceFILE = 0;
|
|
297
|
+
static char * yyTracePrompt = 0;
|
|
298
298
|
#endif /* NDEBUG */
|
|
299
299
|
|
|
300
300
|
#ifndef NDEBUG
|
|
@@ -315,7 +315,7 @@ typedef struct yyParser yyParser;
|
|
|
315
315
|
** Outputs:
|
|
316
316
|
** None.
|
|
317
317
|
*/
|
|
318
|
-
void OPMLTrace(FILE *TraceFILE, char *zTracePrompt) {
|
|
318
|
+
void OPMLTrace(FILE * TraceFILE, char * zTracePrompt) {
|
|
319
319
|
yyTraceFILE = TraceFILE;
|
|
320
320
|
yyTracePrompt = zTracePrompt;
|
|
321
321
|
|
|
@@ -330,7 +330,7 @@ void OPMLTrace(FILE *TraceFILE, char *zTracePrompt) {
|
|
|
330
330
|
#ifndef NDEBUG
|
|
331
331
|
/* For tracing shifts, the names of all terminals and nonterminals
|
|
332
332
|
** are required. The following table supplies these names */
|
|
333
|
-
static const char *const yyTokenName[] = {
|
|
333
|
+
static const char * const yyTokenName[] = {
|
|
334
334
|
"$", "OPML_XML", "OPML_WSNL", "OPML_OPML_OPEN",
|
|
335
335
|
"OPML_OPML_CLOSE", "OPML_HEAD_OPEN", "OPML_HEAD_CLOSE", "OPML_TITLE_OPEN",
|
|
336
336
|
"OPML_TITLE_CLOSE", "OPML_BODY_OPEN", "OPML_BODY_CLOSE", "OPML_OUTLINE_OPEN",
|
|
@@ -344,24 +344,26 @@ static const char *const yyTokenName[] = {
|
|
|
344
344
|
#ifndef NDEBUG
|
|
345
345
|
/* For tracing reduce actions, the names of all rules are required.
|
|
346
346
|
*/
|
|
347
|
-
static const char *const yyRuleName[] = {
|
|
347
|
+
static const char * const yyRuleName[] = {
|
|
348
348
|
/* 0 */ "doc ::= doc_xml",
|
|
349
349
|
/* 1 */ "doc_xml ::= OPML_XML doc_opml",
|
|
350
|
-
/* 2 */ "doc_xml ::=
|
|
351
|
-
/* 3 */ "
|
|
352
|
-
/* 4 */ "
|
|
353
|
-
/* 5 */ "
|
|
354
|
-
/* 6 */ "
|
|
355
|
-
/* 7 */ "
|
|
356
|
-
/* 8 */ "
|
|
357
|
-
/* 9 */ "
|
|
358
|
-
/* 10 */ "
|
|
359
|
-
/* 11 */ "
|
|
360
|
-
/* 12 */ "
|
|
361
|
-
/* 13 */ "
|
|
362
|
-
/* 14 */ "opml_outline ::= OPML_OUTLINE_OPEN
|
|
363
|
-
/* 15 */ "opml_outline ::=
|
|
364
|
-
/* 16 */ "opml_outline ::=
|
|
350
|
+
/* 2 */ "doc_xml ::= doc_opml",
|
|
351
|
+
/* 3 */ "doc_xml ::= OPML_XML doc_opml OPML_WSNL",
|
|
352
|
+
/* 4 */ "doc_xml ::= doc_opml OPML_WSNL",
|
|
353
|
+
/* 5 */ "doc_opml ::= OPML_OPML_OPEN opml_header opml_body OPML_OPML_CLOSE",
|
|
354
|
+
/* 6 */ "doc_opml ::= OPML_OPML_OPEN opml_body OPML_OPML_CLOSE",
|
|
355
|
+
/* 7 */ "opml_header ::= OPML_HEAD_OPEN opml_title OPML_HEAD_CLOSE",
|
|
356
|
+
/* 8 */ "opml_header ::= OPML_HEAD_OPEN OPML_HEAD_CLOSE",
|
|
357
|
+
/* 9 */ "opml_title ::= OPML_TITLE_OPEN OPML_TITLE_CLOSE",
|
|
358
|
+
/* 10 */ "opml_body ::= OPML_BODY_OPEN opml_outlines OPML_BODY_CLOSE",
|
|
359
|
+
/* 11 */ "opml_body ::= OPML_BODY_OPEN OPML_BODY_CLOSE",
|
|
360
|
+
/* 12 */ "opml_outlines ::= opml_outlines opml_outline",
|
|
361
|
+
/* 13 */ "opml_outlines ::= opml_outline",
|
|
362
|
+
/* 14 */ "opml_outline ::= OPML_OUTLINE_OPEN OPML_OUTLINE_CLOSE",
|
|
363
|
+
/* 15 */ "opml_outline ::= OPML_OUTLINE_PREAMBLE OPML_OUTLINE_CLOSE",
|
|
364
|
+
/* 16 */ "opml_outline ::= OPML_OUTLINE_OPEN opml_outlines OPML_OUTLINE_CLOSE",
|
|
365
|
+
/* 17 */ "opml_outline ::= OPML_OUTLINE_METADATA opml_outlines OPML_OUTLINE_CLOSE",
|
|
366
|
+
/* 18 */ "opml_outline ::= OPML_OUTLINE_SELF_CLOSE",
|
|
365
367
|
};
|
|
366
368
|
#endif /* NDEBUG */
|
|
367
369
|
|
|
@@ -371,10 +373,10 @@ static const char *const yyRuleName[] = {
|
|
|
371
373
|
** Try to increase the size of the parser stack. Return the number
|
|
372
374
|
** of errors. Return 0 on success.
|
|
373
375
|
*/
|
|
374
|
-
static int yyGrowStack(yyParser *p) {
|
|
376
|
+
static int yyGrowStack(yyParser * p) {
|
|
375
377
|
int newSize;
|
|
376
378
|
int idx;
|
|
377
|
-
yyStackEntry *pNew;
|
|
379
|
+
yyStackEntry * pNew;
|
|
378
380
|
|
|
379
381
|
newSize = p->yystksz * 2 + 100;
|
|
380
382
|
idx = p->yytos ? (int)(p->yytos - p->yystack) : 0;
|
|
@@ -392,14 +394,14 @@ static int yyGrowStack(yyParser *p) {
|
|
|
392
394
|
if ( pNew ) {
|
|
393
395
|
p->yystack = pNew;
|
|
394
396
|
p->yytos = &p->yystack[idx];
|
|
395
|
-
|
|
397
|
+
#ifndef NDEBUG
|
|
396
398
|
|
|
397
399
|
if ( yyTraceFILE ) {
|
|
398
400
|
fprintf(yyTraceFILE, "%sStack grows from %d to %d entries.\n",
|
|
399
401
|
yyTracePrompt, p->yystksz, newSize);
|
|
400
402
|
}
|
|
401
403
|
|
|
402
|
-
|
|
404
|
+
#endif
|
|
403
405
|
p->yystksz = newSize;
|
|
404
406
|
}
|
|
405
407
|
|
|
@@ -428,15 +430,15 @@ static int yyGrowStack(yyParser *p) {
|
|
|
428
430
|
** A pointer to a parser. This pointer is used in subsequent calls
|
|
429
431
|
** to OPML and OPMLFree.
|
|
430
432
|
*/
|
|
431
|
-
void *OPMLAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)) {
|
|
432
|
-
yyParser *pParser;
|
|
433
|
-
pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
|
|
433
|
+
void * OPMLAlloc(void * (*mallocProc)(YYMALLOCARGTYPE)) {
|
|
434
|
+
yyParser * pParser;
|
|
435
|
+
pParser = (yyParser *)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) );
|
|
434
436
|
|
|
435
437
|
if ( pParser ) {
|
|
436
|
-
|
|
438
|
+
#ifdef YYTRACKMAXSTACKDEPTH
|
|
437
439
|
pParser->yyhwm = 0;
|
|
438
|
-
|
|
439
|
-
|
|
440
|
+
#endif
|
|
441
|
+
#if YYSTACKDEPTH<=0
|
|
440
442
|
pParser->yytos = NULL;
|
|
441
443
|
pParser->yystack = NULL;
|
|
442
444
|
pParser->yystksz = 0;
|
|
@@ -446,10 +448,10 @@ void *OPMLAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)) {
|
|
|
446
448
|
pParser->yystksz = 1;
|
|
447
449
|
}
|
|
448
450
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
+
#endif
|
|
452
|
+
#ifndef YYNOERRORRECOVERY
|
|
451
453
|
pParser->yyerrcnt = -1;
|
|
452
|
-
|
|
454
|
+
#endif
|
|
453
455
|
pParser->yytos = pParser->yystack;
|
|
454
456
|
pParser->yystack[0].stateno = 0;
|
|
455
457
|
pParser->yystack[0].major = 0;
|
|
@@ -466,9 +468,9 @@ void *OPMLAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)) {
|
|
|
466
468
|
** directives of the input grammar.
|
|
467
469
|
*/
|
|
468
470
|
static void yy_destructor(
|
|
469
|
-
yyParser *yypParser,
|
|
471
|
+
yyParser * yypParser, /* The parser */
|
|
470
472
|
YYCODETYPE yymajor, /* Type code for object to destroy */
|
|
471
|
-
YYMINORTYPE *yypminor
|
|
473
|
+
YYMINORTYPE * yypminor /* The object to be destroyed */
|
|
472
474
|
) {
|
|
473
475
|
OPMLARG_FETCH;
|
|
474
476
|
|
|
@@ -496,12 +498,12 @@ static void yy_destructor(
|
|
|
496
498
|
** If there is a destructor routine associated with the token which
|
|
497
499
|
** is popped from the stack, then call it.
|
|
498
500
|
*/
|
|
499
|
-
static void yy_pop_parser_stack(yyParser *pParser) {
|
|
500
|
-
yyStackEntry *yytos;
|
|
501
|
+
static void yy_pop_parser_stack(yyParser * pParser) {
|
|
502
|
+
yyStackEntry * yytos;
|
|
501
503
|
assert( pParser->yytos != 0 );
|
|
502
504
|
assert( pParser->yytos > pParser->yystack );
|
|
503
505
|
yytos = pParser->yytos--;
|
|
504
|
-
|
|
506
|
+
#ifndef NDEBUG
|
|
505
507
|
|
|
506
508
|
if ( yyTraceFILE ) {
|
|
507
509
|
fprintf(yyTraceFILE, "%sPopping %s\n",
|
|
@@ -509,7 +511,7 @@ static void yy_pop_parser_stack(yyParser *pParser) {
|
|
|
509
511
|
yyTokenName[yytos->major]);
|
|
510
512
|
}
|
|
511
513
|
|
|
512
|
-
|
|
514
|
+
#endif
|
|
513
515
|
yy_destructor(pParser, yytos->major, &yytos->minor);
|
|
514
516
|
}
|
|
515
517
|
|
|
@@ -522,38 +524,38 @@ static void yy_pop_parser_stack(yyParser *pParser) {
|
|
|
522
524
|
** assumed that the input pointer is never NULL.
|
|
523
525
|
*/
|
|
524
526
|
void OPMLFree(
|
|
525
|
-
void *p,
|
|
526
|
-
void (*freeProc)(void*)
|
|
527
|
+
void * p, /* The parser to be deleted */
|
|
528
|
+
void (*freeProc)(void *) /* Function used to reclaim memory */
|
|
527
529
|
) {
|
|
528
|
-
yyParser *pParser = (yyParser*)p;
|
|
529
|
-
|
|
530
|
+
yyParser * pParser = (yyParser *)p;
|
|
531
|
+
#ifndef YYPARSEFREENEVERNULL
|
|
530
532
|
|
|
531
533
|
if ( pParser == 0 ) {
|
|
532
534
|
return;
|
|
533
535
|
}
|
|
534
536
|
|
|
535
|
-
|
|
537
|
+
#endif
|
|
536
538
|
|
|
537
539
|
while ( pParser->yytos > pParser->yystack ) {
|
|
538
540
|
yy_pop_parser_stack(pParser);
|
|
539
541
|
}
|
|
540
542
|
|
|
541
|
-
|
|
543
|
+
#if YYSTACKDEPTH<=0
|
|
542
544
|
|
|
543
545
|
if ( pParser->yystack != &pParser->yystk0 ) {
|
|
544
546
|
free(pParser->yystack);
|
|
545
547
|
}
|
|
546
548
|
|
|
547
|
-
|
|
548
|
-
(*freeProc)((void*)pParser);
|
|
549
|
+
#endif
|
|
550
|
+
(*freeProc)((void *)pParser);
|
|
549
551
|
}
|
|
550
552
|
|
|
551
553
|
/*
|
|
552
554
|
** Return the peak depth of the stack for a parser.
|
|
553
555
|
*/
|
|
554
556
|
#ifdef YYTRACKMAXSTACKDEPTH
|
|
555
|
-
int OPMLStackPeak(void *p) {
|
|
556
|
-
yyParser *pParser = (yyParser*)p;
|
|
557
|
+
int OPMLStackPeak(void * p) {
|
|
558
|
+
yyParser * pParser = (yyParser *)p;
|
|
557
559
|
return pParser->yyhwm;
|
|
558
560
|
}
|
|
559
561
|
#endif
|
|
@@ -563,7 +565,7 @@ int OPMLStackPeak(void *p) {
|
|
|
563
565
|
** look-ahead token iLookAhead.
|
|
564
566
|
*/
|
|
565
567
|
static unsigned int yy_find_shift_action(
|
|
566
|
-
yyParser *pParser,
|
|
568
|
+
yyParser * pParser, /* The parser */
|
|
567
569
|
YYCODETYPE iLookAhead /* The look-ahead token */
|
|
568
570
|
) {
|
|
569
571
|
int i;
|
|
@@ -581,39 +583,39 @@ static unsigned int yy_find_shift_action(
|
|
|
581
583
|
i += iLookAhead;
|
|
582
584
|
|
|
583
585
|
if ( i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead ) {
|
|
584
|
-
|
|
586
|
+
#ifdef YYFALLBACK
|
|
585
587
|
YYCODETYPE iFallback; /* Fallback token */
|
|
586
588
|
|
|
587
589
|
if ( iLookAhead < sizeof(yyFallback) / sizeof(yyFallback[0])
|
|
588
590
|
&& (iFallback = yyFallback[iLookAhead]) != 0 ) {
|
|
589
|
-
|
|
591
|
+
#ifndef NDEBUG
|
|
590
592
|
|
|
591
593
|
if ( yyTraceFILE ) {
|
|
592
594
|
fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n",
|
|
593
595
|
yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]);
|
|
594
596
|
}
|
|
595
597
|
|
|
596
|
-
|
|
598
|
+
#endif
|
|
597
599
|
assert( yyFallback[iFallback] == 0 ); /* Fallback loop must terminate */
|
|
598
600
|
iLookAhead = iFallback;
|
|
599
601
|
continue;
|
|
600
602
|
}
|
|
601
603
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
+
#endif
|
|
605
|
+
#ifdef YYWILDCARD
|
|
604
606
|
{
|
|
605
607
|
int j = i - iLookAhead + YYWILDCARD;
|
|
606
608
|
|
|
607
609
|
if (
|
|
608
|
-
|
|
610
|
+
#if YY_SHIFT_MIN+YYWILDCARD<0
|
|
609
611
|
j >= 0 &&
|
|
610
|
-
|
|
611
|
-
|
|
612
|
+
#endif
|
|
613
|
+
#if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT
|
|
612
614
|
j < YY_ACTTAB_COUNT &&
|
|
613
|
-
|
|
615
|
+
#endif
|
|
614
616
|
yy_lookahead[j] == YYWILDCARD && iLookAhead > 0
|
|
615
617
|
) {
|
|
616
|
-
|
|
618
|
+
#ifndef NDEBUG
|
|
617
619
|
|
|
618
620
|
if ( yyTraceFILE ) {
|
|
619
621
|
fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n",
|
|
@@ -621,11 +623,11 @@ static unsigned int yy_find_shift_action(
|
|
|
621
623
|
yyTokenName[YYWILDCARD]);
|
|
622
624
|
}
|
|
623
625
|
|
|
624
|
-
|
|
626
|
+
#endif /* NDEBUG */
|
|
625
627
|
return yy_action[j];
|
|
626
628
|
}
|
|
627
629
|
}
|
|
628
|
-
|
|
630
|
+
#endif /* YYWILDCARD */
|
|
629
631
|
return yy_default[stateno];
|
|
630
632
|
} else {
|
|
631
633
|
return yy_action[i];
|
|
@@ -642,45 +644,45 @@ static int yy_find_reduce_action(
|
|
|
642
644
|
YYCODETYPE iLookAhead /* The look-ahead token */
|
|
643
645
|
) {
|
|
644
646
|
int i;
|
|
645
|
-
|
|
647
|
+
#ifdef YYERRORSYMBOL
|
|
646
648
|
|
|
647
649
|
if ( stateno > YY_REDUCE_COUNT ) {
|
|
648
650
|
return yy_default[stateno];
|
|
649
651
|
}
|
|
650
652
|
|
|
651
|
-
|
|
653
|
+
#else
|
|
652
654
|
assert( stateno <= YY_REDUCE_COUNT );
|
|
653
|
-
|
|
655
|
+
#endif
|
|
654
656
|
i = yy_reduce_ofst[stateno];
|
|
655
657
|
assert( i != YY_REDUCE_USE_DFLT );
|
|
656
658
|
assert( iLookAhead != YYNOCODE );
|
|
657
659
|
i += iLookAhead;
|
|
658
|
-
|
|
660
|
+
#ifdef YYERRORSYMBOL
|
|
659
661
|
|
|
660
662
|
if ( i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead ) {
|
|
661
663
|
return yy_default[stateno];
|
|
662
664
|
}
|
|
663
665
|
|
|
664
|
-
|
|
666
|
+
#else
|
|
665
667
|
assert( i >= 0 && i < YY_ACTTAB_COUNT );
|
|
666
668
|
assert( yy_lookahead[i] == iLookAhead );
|
|
667
|
-
|
|
669
|
+
#endif
|
|
668
670
|
return yy_action[i];
|
|
669
671
|
}
|
|
670
672
|
|
|
671
673
|
/*
|
|
672
674
|
** The following routine is called if the stack overflows.
|
|
673
675
|
*/
|
|
674
|
-
static void yyStackOverflow(yyParser *yypParser) {
|
|
676
|
+
static void yyStackOverflow(yyParser * yypParser) {
|
|
675
677
|
OPMLARG_FETCH;
|
|
676
678
|
yypParser->yytos--;
|
|
677
|
-
|
|
679
|
+
#ifndef NDEBUG
|
|
678
680
|
|
|
679
681
|
if ( yyTraceFILE ) {
|
|
680
682
|
fprintf(yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt);
|
|
681
683
|
}
|
|
682
684
|
|
|
683
|
-
|
|
685
|
+
#endif
|
|
684
686
|
|
|
685
687
|
while ( yypParser->yytos > yypParser->yystack ) {
|
|
686
688
|
yy_pop_parser_stack(yypParser);
|
|
@@ -697,7 +699,7 @@ static void yyStackOverflow(yyParser *yypParser) {
|
|
|
697
699
|
** Print tracing information for a SHIFT action
|
|
698
700
|
*/
|
|
699
701
|
#ifndef NDEBUG
|
|
700
|
-
static void yyTraceShift(yyParser *yypParser, int yyNewState) {
|
|
702
|
+
static void yyTraceShift(yyParser * yypParser, int yyNewState) {
|
|
701
703
|
if ( yyTraceFILE ) {
|
|
702
704
|
if ( yyNewState < YYNSTATE ) {
|
|
703
705
|
fprintf(yyTraceFILE, "%sShift '%s', go to state %d\n",
|
|
@@ -717,29 +719,29 @@ static void yyTraceShift(yyParser *yypParser, int yyNewState) {
|
|
|
717
719
|
** Perform a shift action.
|
|
718
720
|
*/
|
|
719
721
|
static void yy_shift(
|
|
720
|
-
yyParser *yypParser,
|
|
722
|
+
yyParser * yypParser, /* The parser to be shifted */
|
|
721
723
|
int yyNewState, /* The new state to shift in */
|
|
722
724
|
int yyMajor, /* The major token to shift in */
|
|
723
725
|
OPMLTOKENTYPE yyMinor /* The minor token to shift in */
|
|
724
726
|
) {
|
|
725
|
-
yyStackEntry *yytos;
|
|
727
|
+
yyStackEntry * yytos;
|
|
726
728
|
yypParser->yytos++;
|
|
727
|
-
|
|
729
|
+
#ifdef YYTRACKMAXSTACKDEPTH
|
|
728
730
|
|
|
729
731
|
if ( (int)(yypParser->yytos - yypParser->yystack) > yypParser->yyhwm ) {
|
|
730
732
|
yypParser->yyhwm++;
|
|
731
733
|
assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) );
|
|
732
734
|
}
|
|
733
735
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
+
#endif
|
|
737
|
+
#if YYSTACKDEPTH>0
|
|
736
738
|
|
|
737
739
|
if ( yypParser->yytos >= &yypParser->yystack[YYSTACKDEPTH] ) {
|
|
738
740
|
yyStackOverflow(yypParser);
|
|
739
741
|
return;
|
|
740
742
|
}
|
|
741
743
|
|
|
742
|
-
|
|
744
|
+
#else
|
|
743
745
|
|
|
744
746
|
if ( yypParser->yytos >= &yypParser->yystack[yypParser->yystksz] ) {
|
|
745
747
|
if ( yyGrowStack(yypParser) ) {
|
|
@@ -748,7 +750,7 @@ static void yy_shift(
|
|
|
748
750
|
}
|
|
749
751
|
}
|
|
750
752
|
|
|
751
|
-
|
|
753
|
+
#endif
|
|
752
754
|
|
|
753
755
|
if ( yyNewState > YY_MAX_SHIFT ) {
|
|
754
756
|
yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE;
|
|
@@ -770,7 +772,9 @@ static const struct {
|
|
|
770
772
|
} yyRuleInfo[] = {
|
|
771
773
|
{ 17, 1 },
|
|
772
774
|
{ 18, 2 },
|
|
775
|
+
{ 18, 1 },
|
|
773
776
|
{ 18, 3 },
|
|
777
|
+
{ 18, 2 },
|
|
774
778
|
{ 19, 4 },
|
|
775
779
|
{ 19, 3 },
|
|
776
780
|
{ 20, 3 },
|
|
@@ -787,23 +791,23 @@ static const struct {
|
|
|
787
791
|
{ 24, 1 },
|
|
788
792
|
};
|
|
789
793
|
|
|
790
|
-
static void yy_accept(yyParser*);
|
|
794
|
+
static void yy_accept(yyParser *); /* Forward Declaration */
|
|
791
795
|
|
|
792
796
|
/*
|
|
793
797
|
** Perform a reduce action and the shift that must immediately
|
|
794
798
|
** follow the reduce.
|
|
795
799
|
*/
|
|
796
800
|
static void yy_reduce(
|
|
797
|
-
yyParser *yypParser,
|
|
801
|
+
yyParser * yypParser, /* The parser */
|
|
798
802
|
unsigned int yyruleno /* Number of the rule by which to reduce */
|
|
799
803
|
) {
|
|
800
804
|
int yygoto; /* The next state */
|
|
801
805
|
int yyact; /* The next action */
|
|
802
|
-
yyStackEntry *yymsp;
|
|
806
|
+
yyStackEntry * yymsp; /* The top of the parser's stack */
|
|
803
807
|
int yysize; /* Amount to pop the stack */
|
|
804
808
|
OPMLARG_FETCH;
|
|
805
809
|
yymsp = yypParser->yytos;
|
|
806
|
-
|
|
810
|
+
#ifndef NDEBUG
|
|
807
811
|
|
|
808
812
|
if ( yyTraceFILE && yyruleno < (int)(sizeof(yyRuleName) / sizeof(yyRuleName[0])) ) {
|
|
809
813
|
yysize = yyRuleInfo[yyruleno].nrhs;
|
|
@@ -811,28 +815,28 @@ static void yy_reduce(
|
|
|
811
815
|
yyRuleName[yyruleno], yymsp[-yysize].stateno);
|
|
812
816
|
}
|
|
813
817
|
|
|
814
|
-
|
|
818
|
+
#endif /* NDEBUG */
|
|
815
819
|
|
|
816
820
|
/* Check that the stack is large enough to grow by a single entry
|
|
817
821
|
** if the RHS of the rule is empty. This ensures that there is room
|
|
818
822
|
** enough on the stack to push the LHS value */
|
|
819
823
|
if ( yyRuleInfo[yyruleno].nrhs == 0 ) {
|
|
820
|
-
|
|
824
|
+
#ifdef YYTRACKMAXSTACKDEPTH
|
|
821
825
|
|
|
822
826
|
if ( (int)(yypParser->yytos - yypParser->yystack) > yypParser->yyhwm ) {
|
|
823
827
|
yypParser->yyhwm++;
|
|
824
828
|
assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack));
|
|
825
829
|
}
|
|
826
830
|
|
|
827
|
-
|
|
828
|
-
|
|
831
|
+
#endif
|
|
832
|
+
#if YYSTACKDEPTH>0
|
|
829
833
|
|
|
830
834
|
if ( yypParser->yytos >= &yypParser->yystack[YYSTACKDEPTH - 1] ) {
|
|
831
835
|
yyStackOverflow(yypParser);
|
|
832
836
|
return;
|
|
833
837
|
}
|
|
834
838
|
|
|
835
|
-
|
|
839
|
+
#else
|
|
836
840
|
|
|
837
841
|
if ( yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1] ) {
|
|
838
842
|
if ( yyGrowStack(yypParser) ) {
|
|
@@ -843,7 +847,7 @@ static void yy_reduce(
|
|
|
843
847
|
yymsp = yypParser->yytos;
|
|
844
848
|
}
|
|
845
849
|
|
|
846
|
-
|
|
850
|
+
#endif
|
|
847
851
|
}
|
|
848
852
|
|
|
849
853
|
switch ( yyruleno ) {
|
|
@@ -864,21 +868,23 @@ static void yy_reduce(
|
|
|
864
868
|
default:
|
|
865
869
|
/* (1) doc_xml ::= OPML_XML doc_opml */
|
|
866
870
|
yytestcase(yyruleno == 1);
|
|
867
|
-
/* (2) doc_xml ::=
|
|
868
|
-
/* (3)
|
|
869
|
-
/* (4)
|
|
870
|
-
/* (5)
|
|
871
|
-
/* (6)
|
|
872
|
-
/* (7)
|
|
873
|
-
/* (8)
|
|
874
|
-
/* (9)
|
|
875
|
-
/* (10)
|
|
876
|
-
/* (11)
|
|
877
|
-
/* (12)
|
|
878
|
-
/* (13)
|
|
879
|
-
/* (14) opml_outline ::= OPML_OUTLINE_OPEN
|
|
880
|
-
/* (15) opml_outline ::=
|
|
881
|
-
/* (16) opml_outline ::=
|
|
871
|
+
/* (2) doc_xml ::= doc_opml */ yytestcase(yyruleno == 2);
|
|
872
|
+
/* (3) doc_xml ::= OPML_XML doc_opml OPML_WSNL */ yytestcase(yyruleno == 3);
|
|
873
|
+
/* (4) doc_xml ::= doc_opml OPML_WSNL */ yytestcase(yyruleno == 4);
|
|
874
|
+
/* (5) doc_opml ::= OPML_OPML_OPEN opml_header opml_body OPML_OPML_CLOSE */ yytestcase(yyruleno == 5);
|
|
875
|
+
/* (6) doc_opml ::= OPML_OPML_OPEN opml_body OPML_OPML_CLOSE */ yytestcase(yyruleno == 6);
|
|
876
|
+
/* (7) opml_header ::= OPML_HEAD_OPEN opml_title OPML_HEAD_CLOSE */ yytestcase(yyruleno == 7);
|
|
877
|
+
/* (8) opml_header ::= OPML_HEAD_OPEN OPML_HEAD_CLOSE */ yytestcase(yyruleno == 8);
|
|
878
|
+
/* (9) opml_title ::= OPML_TITLE_OPEN OPML_TITLE_CLOSE */ yytestcase(yyruleno == 9);
|
|
879
|
+
/* (10) opml_body ::= OPML_BODY_OPEN opml_outlines OPML_BODY_CLOSE */ yytestcase(yyruleno == 10);
|
|
880
|
+
/* (11) opml_body ::= OPML_BODY_OPEN OPML_BODY_CLOSE */ yytestcase(yyruleno == 11);
|
|
881
|
+
/* (12) opml_outlines ::= opml_outlines opml_outline */ yytestcase(yyruleno == 12);
|
|
882
|
+
/* (13) opml_outlines ::= opml_outline (OPTIMIZED OUT) */ assert(yyruleno != 13);
|
|
883
|
+
/* (14) opml_outline ::= OPML_OUTLINE_OPEN OPML_OUTLINE_CLOSE */ yytestcase(yyruleno == 14);
|
|
884
|
+
/* (15) opml_outline ::= OPML_OUTLINE_PREAMBLE OPML_OUTLINE_CLOSE */ yytestcase(yyruleno == 15);
|
|
885
|
+
/* (16) opml_outline ::= OPML_OUTLINE_OPEN opml_outlines OPML_OUTLINE_CLOSE */ yytestcase(yyruleno == 16);
|
|
886
|
+
/* (17) opml_outline ::= OPML_OUTLINE_METADATA opml_outlines OPML_OUTLINE_CLOSE */ yytestcase(yyruleno == 17);
|
|
887
|
+
/* (18) opml_outline ::= OPML_OUTLINE_SELF_CLOSE */ yytestcase(yyruleno == 18);
|
|
882
888
|
break;
|
|
883
889
|
/********** End reduce actions ************************************************/
|
|
884
890
|
};
|
|
@@ -913,16 +919,16 @@ static void yy_reduce(
|
|
|
913
919
|
*/
|
|
914
920
|
#ifndef YYNOERRORRECOVERY
|
|
915
921
|
static void yy_parse_failed(
|
|
916
|
-
yyParser *yypParser
|
|
922
|
+
yyParser * yypParser /* The parser */
|
|
917
923
|
) {
|
|
918
924
|
OPMLARG_FETCH;
|
|
919
|
-
|
|
925
|
+
#ifndef NDEBUG
|
|
920
926
|
|
|
921
927
|
if ( yyTraceFILE ) {
|
|
922
928
|
fprintf(yyTraceFILE, "%sFail!\n", yyTracePrompt);
|
|
923
929
|
}
|
|
924
930
|
|
|
925
|
-
|
|
931
|
+
#endif
|
|
926
932
|
|
|
927
933
|
while ( yypParser->yytos > yypParser->yystack ) {
|
|
928
934
|
yy_pop_parser_stack(yypParser);
|
|
@@ -942,7 +948,7 @@ static void yy_parse_failed(
|
|
|
942
948
|
** The following code executes when a syntax error first occurs.
|
|
943
949
|
*/
|
|
944
950
|
static void yy_syntax_error(
|
|
945
|
-
yyParser *yypParser,
|
|
951
|
+
yyParser * yypParser, /* The parser */
|
|
946
952
|
int yymajor, /* The major type of the error token */
|
|
947
953
|
OPMLTOKENTYPE yyminor /* The minor type of the error token */
|
|
948
954
|
) {
|
|
@@ -951,7 +957,7 @@ static void yy_syntax_error(
|
|
|
951
957
|
/************ Begin %syntax_error code ****************************************/
|
|
952
958
|
|
|
953
959
|
fprintf(stderr, "Parser syntax error.\n");
|
|
954
|
-
|
|
960
|
+
#ifndef NDEBUG
|
|
955
961
|
fprintf(stderr, "Parser syntax error.\n");
|
|
956
962
|
int n = sizeof(yyTokenName) / sizeof(yyTokenName[0]);
|
|
957
963
|
|
|
@@ -963,7 +969,7 @@ static void yy_syntax_error(
|
|
|
963
969
|
}
|
|
964
970
|
}
|
|
965
971
|
|
|
966
|
-
|
|
972
|
+
#endif
|
|
967
973
|
/************ End %syntax_error code ******************************************/
|
|
968
974
|
OPMLARG_STORE; /* Suppress warning about unused %extra_argument variable */
|
|
969
975
|
}
|
|
@@ -972,19 +978,19 @@ static void yy_syntax_error(
|
|
|
972
978
|
** The following is executed when the parser accepts
|
|
973
979
|
*/
|
|
974
980
|
static void yy_accept(
|
|
975
|
-
yyParser *yypParser
|
|
981
|
+
yyParser * yypParser /* The parser */
|
|
976
982
|
) {
|
|
977
983
|
OPMLARG_FETCH;
|
|
978
|
-
|
|
984
|
+
#ifndef NDEBUG
|
|
979
985
|
|
|
980
986
|
if ( yyTraceFILE ) {
|
|
981
987
|
fprintf(yyTraceFILE, "%sAccept!\n", yyTracePrompt);
|
|
982
988
|
}
|
|
983
989
|
|
|
984
|
-
|
|
985
|
-
|
|
990
|
+
#endif
|
|
991
|
+
#ifndef YYNOERRORRECOVERY
|
|
986
992
|
yypParser->yyerrcnt = -1;
|
|
987
|
-
|
|
993
|
+
#endif
|
|
988
994
|
assert( yypParser->yytos == yypParser->yystack );
|
|
989
995
|
/* Here code is inserted which will be executed whenever the
|
|
990
996
|
** parser accepts */
|
|
@@ -1015,61 +1021,61 @@ static void yy_accept(
|
|
|
1015
1021
|
** None.
|
|
1016
1022
|
*/
|
|
1017
1023
|
void OPML(
|
|
1018
|
-
void *yyp,
|
|
1024
|
+
void * yyp, /* The parser */
|
|
1019
1025
|
int yymajor, /* The major token code number */
|
|
1020
1026
|
OPMLTOKENTYPE yyminor /* The value for the token */
|
|
1021
1027
|
OPMLARG_PDECL /* Optional %extra_argument parameter */
|
|
1022
1028
|
) {
|
|
1023
1029
|
YYMINORTYPE yyminorunion;
|
|
1024
1030
|
unsigned int yyact; /* The parser action. */
|
|
1025
|
-
|
|
1031
|
+
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
|
|
1026
1032
|
int yyendofinput; /* True if we are at the end of input */
|
|
1027
|
-
|
|
1028
|
-
|
|
1033
|
+
#endif
|
|
1034
|
+
#ifdef YYERRORSYMBOL
|
|
1029
1035
|
int yyerrorhit = 0; /* True if yymajor has invoked an error */
|
|
1030
|
-
|
|
1031
|
-
yyParser *yypParser;
|
|
1036
|
+
#endif
|
|
1037
|
+
yyParser * yypParser; /* The parser */
|
|
1032
1038
|
|
|
1033
|
-
yypParser = (yyParser*)yyp;
|
|
1039
|
+
yypParser = (yyParser *)yyp;
|
|
1034
1040
|
assert( yypParser->yytos != 0 );
|
|
1035
|
-
|
|
1041
|
+
#if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY)
|
|
1036
1042
|
yyendofinput = (yymajor == 0);
|
|
1037
|
-
|
|
1043
|
+
#endif
|
|
1038
1044
|
OPMLARG_STORE;
|
|
1039
1045
|
|
|
1040
|
-
|
|
1046
|
+
#ifndef NDEBUG
|
|
1041
1047
|
|
|
1042
1048
|
if ( yyTraceFILE ) {
|
|
1043
1049
|
fprintf(yyTraceFILE, "%sInput '%s'\n", yyTracePrompt, yyTokenName[yymajor]);
|
|
1044
1050
|
}
|
|
1045
1051
|
|
|
1046
|
-
|
|
1052
|
+
#endif
|
|
1047
1053
|
|
|
1048
1054
|
do {
|
|
1049
1055
|
yyact = yy_find_shift_action(yypParser, (YYCODETYPE)yymajor);
|
|
1050
1056
|
|
|
1051
1057
|
if ( yyact <= YY_MAX_SHIFTREDUCE ) {
|
|
1052
1058
|
yy_shift(yypParser, yyact, yymajor, yyminor);
|
|
1053
|
-
|
|
1059
|
+
#ifndef YYNOERRORRECOVERY
|
|
1054
1060
|
yypParser->yyerrcnt--;
|
|
1055
|
-
|
|
1061
|
+
#endif
|
|
1056
1062
|
yymajor = YYNOCODE;
|
|
1057
1063
|
} else if ( yyact <= YY_MAX_REDUCE ) {
|
|
1058
1064
|
yy_reduce(yypParser, yyact - YY_MIN_REDUCE);
|
|
1059
1065
|
} else {
|
|
1060
1066
|
assert( yyact == YY_ERROR_ACTION );
|
|
1061
1067
|
yyminorunion.yy0 = yyminor;
|
|
1062
|
-
|
|
1068
|
+
#ifdef YYERRORSYMBOL
|
|
1063
1069
|
int yymx;
|
|
1064
|
-
|
|
1065
|
-
|
|
1070
|
+
#endif
|
|
1071
|
+
#ifndef NDEBUG
|
|
1066
1072
|
|
|
1067
1073
|
if ( yyTraceFILE ) {
|
|
1068
1074
|
fprintf(yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt);
|
|
1069
1075
|
}
|
|
1070
1076
|
|
|
1071
|
-
|
|
1072
|
-
|
|
1077
|
+
#endif
|
|
1078
|
+
#ifdef YYERRORSYMBOL
|
|
1073
1079
|
|
|
1074
1080
|
/* A syntax error has occurred.
|
|
1075
1081
|
** The response to an error depends upon whether or not the
|
|
@@ -1097,14 +1103,14 @@ void OPML(
|
|
|
1097
1103
|
yymx = yypParser->yytos->major;
|
|
1098
1104
|
|
|
1099
1105
|
if ( yymx == YYERRORSYMBOL || yyerrorhit ) {
|
|
1100
|
-
|
|
1106
|
+
#ifndef NDEBUG
|
|
1101
1107
|
|
|
1102
1108
|
if ( yyTraceFILE ) {
|
|
1103
1109
|
fprintf(yyTraceFILE, "%sDiscard input token %s\n",
|
|
1104
1110
|
yyTracePrompt, yyTokenName[yymajor]);
|
|
1105
1111
|
}
|
|
1106
1112
|
|
|
1107
|
-
|
|
1113
|
+
#endif
|
|
1108
1114
|
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
|
|
1109
1115
|
yymajor = YYNOCODE;
|
|
1110
1116
|
} else {
|
|
@@ -1120,9 +1126,9 @@ void OPML(
|
|
|
1120
1126
|
if ( yypParser->yytos < yypParser->yystack || yymajor == 0 ) {
|
|
1121
1127
|
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
|
|
1122
1128
|
yy_parse_failed(yypParser);
|
|
1123
|
-
|
|
1129
|
+
#ifndef YYNOERRORRECOVERY
|
|
1124
1130
|
yypParser->yyerrcnt = -1;
|
|
1125
|
-
|
|
1131
|
+
#endif
|
|
1126
1132
|
yymajor = YYNOCODE;
|
|
1127
1133
|
} else if ( yymx != YYERRORSYMBOL ) {
|
|
1128
1134
|
yy_shift(yypParser, yyact, YYERRORSYMBOL, yyminor);
|
|
@@ -1131,7 +1137,7 @@ void OPML(
|
|
|
1131
1137
|
|
|
1132
1138
|
yypParser->yyerrcnt = 3;
|
|
1133
1139
|
yyerrorhit = 1;
|
|
1134
|
-
|
|
1140
|
+
#elif defined(YYNOERRORRECOVERY)
|
|
1135
1141
|
/* If the YYNOERRORRECOVERY macro is defined, then do not attempt to
|
|
1136
1142
|
** do any kind of error recovery. Instead, simply invoke the syntax
|
|
1137
1143
|
** error routine and continue going as if nothing had happened.
|
|
@@ -1143,7 +1149,7 @@ void OPML(
|
|
|
1143
1149
|
yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion);
|
|
1144
1150
|
yymajor = YYNOCODE;
|
|
1145
1151
|
|
|
1146
|
-
|
|
1152
|
+
#else /* YYERRORSYMBOL is not defined */
|
|
1147
1153
|
|
|
1148
1154
|
/* This is what we do if the grammar does not define ERROR:
|
|
1149
1155
|
**
|
|
@@ -1163,20 +1169,20 @@ void OPML(
|
|
|
1163
1169
|
|
|
1164
1170
|
if ( yyendofinput ) {
|
|
1165
1171
|
yy_parse_failed(yypParser);
|
|
1166
|
-
|
|
1172
|
+
#ifndef YYNOERRORRECOVERY
|
|
1167
1173
|
yypParser->yyerrcnt = -1;
|
|
1168
|
-
|
|
1174
|
+
#endif
|
|
1169
1175
|
}
|
|
1170
1176
|
|
|
1171
1177
|
yymajor = YYNOCODE;
|
|
1172
|
-
|
|
1178
|
+
#endif
|
|
1173
1179
|
}
|
|
1174
1180
|
} while ( yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack );
|
|
1175
1181
|
|
|
1176
|
-
|
|
1182
|
+
#ifndef NDEBUG
|
|
1177
1183
|
|
|
1178
1184
|
if ( yyTraceFILE ) {
|
|
1179
|
-
yyStackEntry *i;
|
|
1185
|
+
yyStackEntry * i;
|
|
1180
1186
|
char cDiv = '[';
|
|
1181
1187
|
fprintf(yyTraceFILE, "%sReturn. Stack=", yyTracePrompt);
|
|
1182
1188
|
|
|
@@ -1188,6 +1194,6 @@ void OPML(
|
|
|
1188
1194
|
fprintf(yyTraceFILE, "]\n");
|
|
1189
1195
|
}
|
|
1190
1196
|
|
|
1191
|
-
|
|
1197
|
+
#endif
|
|
1192
1198
|
return;
|
|
1193
1199
|
}
|