From: Fletcher T. Penney Date: Thu, 2 Mar 2017 21:49:41 +0000 (-0500) Subject: ADDED: Prototype support for Glossaries X-Git-Tag: 0.4.0-b^2~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7272057f6c87f9a00ebc0a6bc182161e8dfa985d;p=multimarkdown ADDED: Prototype support for Glossaries --- diff --git a/Sources/libMultiMarkdown/html.c b/Sources/libMultiMarkdown/html.c index 527b1a5..6c63fad 100644 --- a/Sources/libMultiMarkdown/html.c +++ b/Sources/libMultiMarkdown/html.c @@ -304,6 +304,7 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t char * temp_char2 = NULL; bool temp_bool = 0; token * temp_token = NULL; + footnote * temp_note = NULL; switch (t->type) { case AMPERSAND: @@ -506,6 +507,7 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t case BLOCK_PARA: case BLOCK_DEF_CITATION: case BLOCK_DEF_FOOTNOTE: + case BLOCK_DEF_GLOSSARY: pad(out, 2, scratch); if (!scratch->list_is_tight) @@ -513,6 +515,14 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t mmd_export_token_tree_html(out, source, t->child, offset, scratch); + if (scratch->citation_being_printed) { + scratch->footnote_para_counter--; + + if (scratch->footnote_para_counter == 0) { + printf("  ↩", scratch->citation_being_printed, LC("return to body")); + } + } + if (scratch->footnote_being_printed) { scratch->footnote_para_counter--; @@ -521,11 +531,11 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t } } - if (scratch->citation_being_printed) { + if (scratch->glossary_being_printed) { scratch->footnote_para_counter--; if (scratch->footnote_para_counter == 0) { - printf("  ↩", scratch->citation_being_printed, LC("return to body")); + printf("  ↩", scratch->glossary_being_printed, LC("return to body")); } } @@ -745,6 +755,9 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t case BRACKET_FOOTNOTE_LEFT: print_const("[^"); break; + case BRACKET_GLOSSARY_LEFT: + print_const("[?"); + break; case BRACKET_IMAGE_LEFT: print_const("!["); break; @@ -1086,6 +1099,41 @@ void mmd_export_token_html(DString * out, const char * source, token * t, size_t mmd_export_token_tree_html(out, source, t->child, offset, scratch); } break; + case PAIR_BRACKET_GLOSSARY: + if (scratch->extensions & EXT_NOTES) { + glossary_from_bracket(source, scratch, t, &temp_short); + + if (temp_short == -1) { + print_const("[?"); + mmd_export_token_tree_html(out, source, t->child, offset, scratch); + print_const("]"); + break; + } + + temp_note = stack_peek_index(scratch->used_glossaries, temp_short - 1); + + if (temp_short < scratch->used_glossaries->size) { + // Re-using previous glossary + printf("", + temp_short, LC("see glossary")); + + mmd_print_string_html(out, temp_note->clean_text, false); + + print_const(""); + } else { + // This is a new glossary + printf("", + temp_short, temp_short, LC("see glossary")); + + mmd_print_string_html(out, temp_note->clean_text, false); + + print_const(""); + } + } else { + // Footnotes disabled + mmd_export_token_tree_html(out, source, t->child, offset, scratch); + } + break; case PAIR_BRACKET_VARIABLE: temp_char = text_inside_pair(source, t); temp_char2 = extract_metadata(scratch, temp_char); @@ -1540,6 +1588,59 @@ void mmd_export_footnote_list_html(DString * out, const char * source, scratch_p } +void mmd_export_glossary_list_html(DString * out, const char * source, scratch_pad * scratch) { + if (scratch->used_glossaries->size > 0) { + footnote * note; + token * content; + + pad(out, 2, scratch); + print_const("
\n
\n
    "); + scratch->padded = 0; + + for (int i = 0; i < scratch->used_glossaries->size; ++i) + { + // Export glossary + pad(out, 2, scratch); + + printf("
  1. \n", i + 1); + scratch->padded = 6; + + note = stack_peek_index(scratch->used_glossaries, i); + content = note->content; + + // Print term + mmd_print_string_html(out, note->clean_text, false); + print_const(": "); + + // Print contents + scratch->footnote_para_counter = 0; + + // We need to know which block is the last one in the footnote + while(content) { + if (content->type == BLOCK_PARA) + scratch->footnote_para_counter++; + + content = content->next; + } + + content = note->content; + scratch->glossary_being_printed = i + 1; + + mmd_export_token_tree_html(out, source, content, 0, scratch); + + pad(out, 1, scratch); + printf("
  2. "); + scratch->padded = 0; + } + + pad(out, 2, scratch); + print_const("
\n
"); + scratch->padded = 0; + scratch->glossary_being_printed = 0; + } +} + + void mmd_export_citation_list_html(DString * out, const char * source, scratch_pad * scratch) { if (scratch->used_citations->size > 0) { footnote * note; diff --git a/Sources/libMultiMarkdown/html.h b/Sources/libMultiMarkdown/html.h index 281d7cd..737b3fa 100644 --- a/Sources/libMultiMarkdown/html.h +++ b/Sources/libMultiMarkdown/html.h @@ -69,6 +69,7 @@ void mmd_export_token_tree_html_raw(DString * out, const char * source, token * void mmd_export_citation_list_html(DString * out, const char * source, scratch_pad * scratch); void mmd_export_footnote_list_html(DString * out, const char * source, scratch_pad * scratch); +void mmd_export_glossary_list_html(DString * out, const char * source, scratch_pad * scratch); void mmd_start_complete_html(DString * out, const char * source, scratch_pad * scratch); void mmd_end_complete_html(DString * out, const char * source, scratch_pad * scratch); diff --git a/Sources/libMultiMarkdown/include/libMultiMarkdown.h b/Sources/libMultiMarkdown/include/libMultiMarkdown.h index 9e68df5..bc7248c 100644 --- a/Sources/libMultiMarkdown/include/libMultiMarkdown.h +++ b/Sources/libMultiMarkdown/include/libMultiMarkdown.h @@ -124,6 +124,7 @@ enum token_types { BLOCK_DEFINITION, BLOCK_DEF_ABBREVIATION, BLOCK_DEF_CITATION, + BLOCK_DEF_GLOSSARY, BLOCK_DEF_FOOTNOTE, BLOCK_DEF_LINK, BLOCK_EMPTY, @@ -179,6 +180,7 @@ enum token_types { PAIR_BRACKET, PAIR_BRACKET_ABBREVIATION, PAIR_BRACKET_FOOTNOTE, + PAIR_BRACKET_GLOSSARY, PAIR_BRACKET_CITATION, PAIR_BRACKET_IMAGE, PAIR_BRACKET_VARIABLE, @@ -203,6 +205,7 @@ enum token_types { BRACKET_RIGHT, BRACKET_ABBREVIATION_LEFT, BRACKET_FOOTNOTE_LEFT, + BRACKET_GLOSSARY_LEFT, BRACKET_CITATION_LEFT, BRACKET_IMAGE_LEFT, BRACKET_VARIABLE_LEFT, diff --git a/Sources/libMultiMarkdown/latex.c b/Sources/libMultiMarkdown/latex.c index 069b7bc..9633609 100644 --- a/Sources/libMultiMarkdown/latex.c +++ b/Sources/libMultiMarkdown/latex.c @@ -376,6 +376,7 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat short temp_short; short temp_short2; + short temp_short3; link * temp_link = NULL; char * temp_char = NULL; char * temp_char2 = NULL; @@ -782,6 +783,9 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat case BRACKET_FOOTNOTE_LEFT: print_const("[^"); break; + case BRACKET_GLOSSARY_LEFT: + print_const("[?"); + break; case BRACKET_IMAGE_LEFT: print_const("!["); break; @@ -1101,16 +1105,68 @@ void mmd_export_token_latex(DString * out, const char * source, token * t, scrat if (temp_short < scratch->used_footnotes->size) { // Re-using previous footnote - printf("\\footnote{reuse"); + print("\\footnote{reuse"); - printf("}"); + print("}"); } else { // This is a new footnote - printf("\\footnote{"); + print("\\footnote{"); temp_note = stack_peek_index(scratch->used_footnotes, temp_short - 1); mmd_export_token_tree_latex(out, source, temp_note->content, scratch); - printf("}"); + print("}"); + } + } else { + // Footnotes disabled + mmd_export_token_tree_latex(out, source, t->child, scratch); + } + break; + case PAIR_BRACKET_GLOSSARY: + if (scratch->extensions & EXT_NOTES) { + // See whether we create an inline glossary + temp_short2 = scratch->inline_glossaries_to_free->size; + glossary_from_bracket(source, scratch, t, &temp_short); + temp_short3 = scratch->inline_glossaries_to_free->size; + + if (temp_short == -1) { + print_const("[?"); + mmd_export_token_tree_latex(out, source, t->child, scratch); + print_const("]"); + break; + } + + if (temp_short2 != temp_short3) + temp_bool = true; // This is an inline + else + temp_bool = false; + + temp_note = stack_peek_index(scratch->used_glossaries, temp_short - 1); + + if (temp_short < scratch->used_glossaries->size) { + // Re-using previous glossary + print("\\gls{"); + print(temp_note->label_text); + print("}"); + } else { + // This is a new glossary + + if (temp_bool) { + // This is an inline glossary entry + print_const("\\newglossaryentry{"); + print(temp_note->label_text); + + print_const("}{name="); + print(temp_note->clean_text); + + print_const(", description={"); + + // We skip over temp_note->content, since that is the term in use + mmd_export_token_tree_latex(out, source, temp_note->content, scratch); + print_const("}}"); + } + print_const("\\gls{"); + print(temp_note->label_text); + print_const("}"); } } else { // Footnotes disabled @@ -1546,6 +1602,25 @@ void mmd_export_token_tree_latex_tt(DString * out, const char * source, token * } +void mmd_define_glossaries_latex(DString * out, const char * source, scratch_pad * scratch) { + // Iterate through glossary definitions + fn_holder * f, * f_tmp; + + HASH_ITER(hh, scratch->glossary_hash, f, f_tmp) { + // Add this glossary definition + print_const("\\longnewglossaryentry{"); + print(f->note->label_text); + + print_const("}{name="); + print(f->note->clean_text); + print_const("}{"); + + mmd_export_token_tree_latex(out, source, f->note->content, scratch); + print_const("}\n\n"); + } +} + + void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * scratch) { // Iterate over metadata keys meta * m; @@ -1616,6 +1691,9 @@ void mmd_start_complete_latex(DString * out, const char * source, scratch_pad * } } + // Define glossaries in preamble for more flexibility + mmd_define_glossaries_latex(out, source, scratch); + m = extract_meta_from_stack(scratch, "latexbegin"); if (m) { printf("\\input{%s}\n", m->value); diff --git a/Sources/libMultiMarkdown/lexer.c b/Sources/libMultiMarkdown/lexer.c index f4ea5df..f668de9 100644 --- a/Sources/libMultiMarkdown/lexer.c +++ b/Sources/libMultiMarkdown/lexer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 on Wed Feb 15 19:09:41 2017 */ +/* Generated by re2c 0.14.3 on Thu Mar 2 09:54:28 2017 */ /** MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more. @@ -132,12 +132,12 @@ yy2: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy265; - case '-': goto yy264; - case '=': goto yy261; - case '>': goto yy263; - case '{': goto yy259; - case '~': goto yy262; + case '+': goto yy267; + case '-': goto yy266; + case '=': goto yy263; + case '>': goto yy265; + case '{': goto yy261; + case '~': goto yy264; default: goto yy3; } yy3: @@ -146,7 +146,7 @@ yy4: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '+': goto yy256; + case '+': goto yy258; default: goto yy5; } yy5: @@ -154,7 +154,7 @@ yy5: yy6: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '-': goto yy250; + case '-': goto yy252; default: goto yy7; } yy7: @@ -163,7 +163,7 @@ yy8: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '<': goto yy247; + case '<': goto yy249; default: goto yy9; } yy9: @@ -172,8 +172,8 @@ yy10: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '>': goto yy243; - case '~': goto yy242; + case '>': goto yy245; + case '~': goto yy244; default: goto yy11; } yy11: @@ -182,7 +182,7 @@ yy12: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '=': goto yy239; + case '=': goto yy241; default: goto yy13; } yy13: @@ -192,7 +192,8 @@ yy14: switch ((yych = *YYCURSOR)) { case '#': goto yy235; case '%': goto yy233; - case '^': goto yy237; + case '?': goto yy237; + case '^': goto yy239; default: goto yy15; } yy15: @@ -432,7 +433,7 @@ yy70: case 7: goto yy49; case 8: goto yy127; case 9: goto yy215; - default: goto yy260; + default: goto yy262; } yy71: YYCTXMARKER = YYCURSOR + 1; @@ -946,140 +947,143 @@ yy235: { return BRACKET_CITATION_LEFT; } yy237: ++YYCURSOR; - { return BRACKET_FOOTNOTE_LEFT; } + { return BRACKET_GLOSSARY_LEFT; } yy239: + ++YYCURSOR; + { return BRACKET_FOOTNOTE_LEFT; } +yy241: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy240; + case '}': goto yy242; default: goto yy70; } -yy240: +yy242: ++YYCURSOR; { return CRITIC_HI_CLOSE; } -yy242: +yy244: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy245; + case '}': goto yy247; default: goto yy70; } -yy243: +yy245: ++YYCURSOR; { return CRITIC_SUB_DIV; } -yy245: +yy247: ++YYCURSOR; { return CRITIC_SUB_CLOSE; } -yy247: +yy249: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy248; + case '}': goto yy250; default: goto yy70; } -yy248: +yy250: ++YYCURSOR; { return CRITIC_COM_CLOSE; } -yy250: +yy252: ++YYCURSOR; switch ((yych = *YYCURSOR)) { - case '-': goto yy254; - case '}': goto yy252; - default: goto yy251; + case '-': goto yy256; + case '}': goto yy254; + default: goto yy253; } -yy251: +yy253: { return DASH_N; } -yy252: +yy254: ++YYCURSOR; { return CRITIC_DEL_CLOSE; } -yy254: +yy256: ++YYCURSOR; { return DASH_M; } -yy256: +yy258: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy257; + case '}': goto yy259; default: goto yy70; } -yy257: +yy259: ++YYCURSOR; { return CRITIC_ADD_CLOSE; } -yy259: +yy261: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case 'T': goto yy276; - default: goto yy260; + case 'T': goto yy278; + default: goto yy262; } -yy260: +yy262: { return BRACE_DOUBLE_LEFT; } -yy261: +yy263: yych = *++YYCURSOR; switch (yych) { - case '=': goto yy274; + case '=': goto yy276; default: goto yy70; } -yy262: +yy264: yych = *++YYCURSOR; switch (yych) { - case '~': goto yy272; + case '~': goto yy274; default: goto yy70; } -yy263: +yy265: yych = *++YYCURSOR; switch (yych) { - case '>': goto yy270; + case '>': goto yy272; default: goto yy70; } -yy264: +yy266: yych = *++YYCURSOR; switch (yych) { - case '-': goto yy268; + case '-': goto yy270; default: goto yy70; } -yy265: +yy267: yych = *++YYCURSOR; switch (yych) { - case '+': goto yy266; + case '+': goto yy268; default: goto yy70; } -yy266: +yy268: ++YYCURSOR; { return CRITIC_ADD_OPEN; } -yy268: +yy270: ++YYCURSOR; { return CRITIC_DEL_OPEN; } -yy270: +yy272: ++YYCURSOR; { return CRITIC_COM_OPEN; } -yy272: +yy274: ++YYCURSOR; { return CRITIC_SUB_OPEN; } -yy274: +yy276: ++YYCURSOR; { return CRITIC_HI_OPEN; } -yy276: +yy278: yych = *++YYCURSOR; switch (yych) { - case 'O': goto yy277; + case 'O': goto yy279; default: goto yy70; } -yy277: +yy279: yych = *++YYCURSOR; switch (yych) { - case 'C': goto yy278; + case 'C': goto yy280; default: goto yy70; } -yy278: +yy280: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy279; + case '}': goto yy281; default: goto yy70; } -yy279: +yy281: yych = *++YYCURSOR; switch (yych) { - case '}': goto yy280; + case '}': goto yy282; default: goto yy70; } -yy280: +yy282: ++YYCURSOR; { return TOC; } } diff --git a/Sources/libMultiMarkdown/lexer.re b/Sources/libMultiMarkdown/lexer.re index 36684dc..4ab32a1 100644 --- a/Sources/libMultiMarkdown/lexer.re +++ b/Sources/libMultiMarkdown/lexer.re @@ -115,6 +115,7 @@ int scan(Scanner * s, const char * stop) { "![" { return BRACKET_IMAGE_LEFT; } "[^" { return BRACKET_FOOTNOTE_LEFT; } + "[?" { return BRACKET_GLOSSARY_LEFT; } "[#" { return BRACKET_CITATION_LEFT; } "[%" { return BRACKET_VARIABLE_LEFT; } diff --git a/Sources/libMultiMarkdown/mmd.c b/Sources/libMultiMarkdown/mmd.c index 6f26a94..4da3ad2 100644 --- a/Sources/libMultiMarkdown/mmd.c +++ b/Sources/libMultiMarkdown/mmd.c @@ -103,6 +103,7 @@ mmd_engine * mmd_engine_create(DString * d, unsigned long extensions) { e->citation_stack = stack_new(0); e->definition_stack = stack_new(0); e->footnote_stack = stack_new(0); + e->glossary_stack = stack_new(0); e->header_stack = stack_new(0); e->link_stack = stack_new(0); e->metadata_stack = stack_new(0); @@ -127,13 +128,15 @@ mmd_engine * mmd_engine_create(DString * d, unsigned long extensions) { if (extensions & EXT_NOTES) { token_pair_engine_add_pairing(e->pairings2, BRACKET_CITATION_LEFT, BRACKET_RIGHT, PAIR_BRACKET_CITATION, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); token_pair_engine_add_pairing(e->pairings2, BRACKET_FOOTNOTE_LEFT, BRACKET_RIGHT, PAIR_BRACKET_FOOTNOTE, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); + token_pair_engine_add_pairing(e->pairings2, BRACKET_GLOSSARY_LEFT, BRACKET_RIGHT, PAIR_BRACKET_GLOSSARY, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); } else { token_pair_engine_add_pairing(e->pairings2, BRACKET_CITATION_LEFT, BRACKET_RIGHT, PAIR_BRACKET, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); token_pair_engine_add_pairing(e->pairings2, BRACKET_FOOTNOTE_LEFT, BRACKET_RIGHT, PAIR_BRACKET, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); + token_pair_engine_add_pairing(e->pairings2, BRACKET_GLOSSARY_LEFT, BRACKET_RIGHT, PAIR_BRACKET, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); } - token_pair_engine_add_pairing(e->pairings2, BRACKET_VARIABLE_LEFT, BRACKET_RIGHT, PAIR_BRACKET_VARIABLE, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); token_pair_engine_add_pairing(e->pairings2, BRACKET_ABBREVIATION_LEFT, BRACKET_RIGHT, PAIR_BRACKET_ABBREVIATION, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); + token_pair_engine_add_pairing(e->pairings2, BRACKET_VARIABLE_LEFT, BRACKET_RIGHT, PAIR_BRACKET_VARIABLE, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); token_pair_engine_add_pairing(e->pairings2, BRACKET_IMAGE_LEFT, BRACKET_RIGHT, PAIR_BRACKET_IMAGE, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); token_pair_engine_add_pairing(e->pairings2, PAREN_LEFT, PAREN_RIGHT, PAIR_PAREN, PAIRING_ALLOW_EMPTY | PAIRING_PRUNE_MATCH); @@ -232,17 +235,25 @@ void mmd_engine_free(mmd_engine * e, bool freeDString) { } stack_free(e->citation_stack); + // Footnotes need to be freed + while (e->footnote_stack->size) { + footnote_free(stack_pop(e->footnote_stack)); + } + stack_free(e->footnote_stack); + + // Glossaries need to be freed + while (e->glossary_stack->size) { + footnote_free(stack_pop(e->glossary_stack)); + } + stack_free(e->glossary_stack); + + // Links need to be freed while (e->link_stack->size) { link_free(stack_pop(e->link_stack)); } stack_free(e->link_stack); - // Footnotes need to be freed - while (e->footnote_stack->size) { - footnote_free(stack_pop(e->footnote_stack)); - } - stack_free(e->footnote_stack); // Metadata needs to be freed while (e->metadata_stack->size) { @@ -606,6 +617,15 @@ void mmd_assign_line_type(mmd_engine * e, token * line) { line->type = (scan_len) ? LINE_DEF_LINK : LINE_PLAIN; } break; + case BRACKET_GLOSSARY_LEFT: + if (e->extensions & EXT_NOTES) { + scan_len = scan_ref_glossary(&source[line->start]); + line->type = (scan_len) ? LINE_DEF_GLOSSARY : LINE_PLAIN; + } else { + scan_len = scan_ref_link_no_attributes(&source[line->start]); + line->type = (scan_len) ? LINE_DEF_LINK : LINE_PLAIN; + } + break; case PIPE: // If PIPE is first, save checking later and assign LINE_TABLE now if (!(e->extensions & EXT_COMPATIBILITY)) { @@ -917,6 +937,7 @@ void mmd_pair_tokens_in_block(token * block, token_pair_engine * e, stack * s) { case BLOCK_DEF_ABBREVIATION: case BLOCK_DEF_CITATION: case BLOCK_DEF_FOOTNOTE: + case BLOCK_DEF_GLOSSARY: case BLOCK_DEF_LINK: case BLOCK_H1: case BLOCK_H2: @@ -1684,6 +1705,7 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) { case LINE_DEF_ABBREVIATION: case LINE_DEF_CITATION: case LINE_DEF_FOOTNOTE: + case LINE_DEF_GLOSSARY: case LINE_DEF_LINK: case LINE_EMPTY: case LINE_LIST_BULLETED: diff --git a/Sources/libMultiMarkdown/mmd.h b/Sources/libMultiMarkdown/mmd.h index 5d9da75..c32e5fc 100644 --- a/Sources/libMultiMarkdown/mmd.h +++ b/Sources/libMultiMarkdown/mmd.h @@ -80,8 +80,9 @@ struct mmd_engine { stack * abbreviation_stack; stack * citation_stack; stack * definition_stack; - stack * header_stack; stack * footnote_stack; + stack * glossary_stack; + stack * header_stack; stack * link_stack; stack * metadata_stack; diff --git a/Sources/libMultiMarkdown/parser.c b/Sources/libMultiMarkdown/parser.c index 08e3eda..1635e50 100644 --- a/Sources/libMultiMarkdown/parser.c +++ b/Sources/libMultiMarkdown/parser.c @@ -92,7 +92,7 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char -#define YYNOCODE 83 +#define YYNOCODE 85 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE token * typedef union { @@ -107,16 +107,16 @@ typedef union { #define ParseARG_FETCH mmd_engine * engine = yypParser->engine #define ParseARG_STORE yypParser->engine = engine #define YYFALLBACK 1 -#define YYNSTATE 41 -#define YYNRULE 131 -#define YY_MAX_SHIFT 40 -#define YY_MIN_SHIFTREDUCE 133 -#define YY_MAX_SHIFTREDUCE 263 -#define YY_MIN_REDUCE 264 -#define YY_MAX_REDUCE 394 -#define YY_ERROR_ACTION 395 -#define YY_ACCEPT_ACTION 396 -#define YY_NO_ACTION 397 +#define YYNSTATE 42 +#define YYNRULE 134 +#define YY_MAX_SHIFT 41 +#define YY_MIN_SHIFTREDUCE 136 +#define YY_MAX_SHIFTREDUCE 269 +#define YY_MIN_REDUCE 270 +#define YY_MAX_REDUCE 403 +#define YY_ERROR_ACTION 404 +#define YY_ACCEPT_ACTION 405 +#define YY_NO_ACTION 406 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -188,90 +188,94 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (258) +#define YY_ACTTAB_COUNT (278) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 396, 1, 135, 30, 145, 146, 147, 148, 149, 40, - /* 10 */ 151, 29, 27, 37, 35, 28, 13, 158, 159, 160, - /* 20 */ 39, 211, 12, 12, 27, 233, 220, 221, 262, 32, - /* 30 */ 32, 25, 258, 24, 23, 217, 37, 35, 262, 7, - /* 40 */ 186, 38, 258, 14, 14, 264, 142, 175, 182, 15, - /* 50 */ 262, 212, 220, 221, 258, 247, 136, 137, 138, 139, - /* 60 */ 140, 141, 225, 6, 5, 3, 2, 16, 34, 34, - /* 70 */ 143, 231, 4, 233, 235, 238, 241, 236, 239, 242, - /* 80 */ 253, 142, 220, 221, 15, 262, 179, 220, 221, 258, - /* 90 */ 247, 136, 137, 138, 139, 140, 141, 225, 6, 5, - /* 100 */ 3, 2, 16, 193, 21, 143, 231, 4, 233, 235, - /* 110 */ 238, 241, 236, 239, 242, 253, 134, 30, 145, 146, - /* 120 */ 147, 148, 149, 40, 151, 29, 27, 37, 35, 28, - /* 130 */ 13, 158, 159, 160, 217, 245, 246, 39, 27, 243, - /* 140 */ 214, 31, 31, 32, 32, 25, 192, 24, 23, 204, - /* 150 */ 37, 35, 167, 7, 191, 38, 233, 14, 14, 33, - /* 160 */ 33, 244, 187, 189, 185, 188, 190, 245, 246, 26, - /* 170 */ 26, 243, 8, 39, 8, 12, 12, 36, 36, 161, - /* 180 */ 9, 9, 17, 17, 162, 248, 169, 169, 227, 249, - /* 190 */ 26, 255, 172, 244, 183, 180, 181, 184, 26, 226, - /* 200 */ 4, 9, 9, 17, 17, 5, 199, 168, 168, 9, - /* 210 */ 9, 17, 17, 245, 246, 173, 173, 243, 26, 6, - /* 220 */ 254, 209, 194, 26, 210, 210, 206, 207, 175, 10, - /* 230 */ 10, 19, 19, 26, 200, 161, 18, 18, 266, 244, - /* 240 */ 176, 177, 178, 26, 11, 11, 20, 20, 266, 195, - /* 250 */ 266, 4, 266, 266, 266, 161, 22, 22, + /* 0 */ 405, 1, 138, 31, 148, 149, 150, 151, 152, 153, + /* 10 */ 41, 155, 30, 28, 38, 36, 29, 14, 162, 163, + /* 20 */ 164, 40, 216, 13, 13, 28, 239, 225, 226, 268, + /* 30 */ 33, 33, 26, 264, 25, 24, 40, 38, 36, 219, + /* 40 */ 8, 222, 39, 191, 15, 15, 270, 145, 268, 180, + /* 50 */ 16, 268, 264, 225, 226, 264, 253, 139, 140, 141, + /* 60 */ 142, 143, 144, 230, 7, 6, 237, 4, 3, 2, + /* 70 */ 17, 27, 217, 146, 5, 239, 241, 244, 247, 242, + /* 80 */ 245, 248, 259, 145, 222, 166, 16, 268, 187, 225, + /* 90 */ 226, 264, 253, 139, 140, 141, 142, 143, 144, 230, + /* 100 */ 7, 6, 237, 4, 3, 2, 17, 239, 261, 146, + /* 110 */ 5, 239, 241, 244, 247, 242, 245, 248, 259, 137, + /* 120 */ 31, 148, 149, 150, 151, 152, 153, 41, 155, 30, + /* 130 */ 28, 38, 36, 29, 14, 162, 163, 164, 260, 251, + /* 140 */ 252, 184, 28, 249, 35, 35, 254, 33, 33, 26, + /* 150 */ 255, 25, 24, 22, 38, 36, 214, 8, 197, 39, + /* 160 */ 215, 15, 15, 209, 211, 212, 250, 192, 194, 190, + /* 170 */ 193, 195, 251, 252, 27, 196, 249, 9, 40, 9, + /* 180 */ 13, 13, 32, 32, 171, 10, 10, 18, 18, 165, + /* 190 */ 5, 174, 174, 34, 34, 232, 27, 37, 37, 250, + /* 200 */ 188, 185, 186, 189, 27, 5, 231, 10, 10, 18, + /* 210 */ 18, 177, 6, 173, 173, 10, 10, 18, 18, 27, + /* 220 */ 204, 172, 172, 7, 251, 252, 27, 199, 249, 27, + /* 230 */ 10, 10, 18, 18, 27, 215, 178, 178, 165, 19, + /* 240 */ 19, 165, 23, 23, 180, 11, 11, 20, 20, 27, + /* 250 */ 205, 250, 181, 182, 183, 225, 226, 272, 272, 272, + /* 260 */ 12, 12, 21, 21, 272, 200, 272, 272, 272, 272, + /* 270 */ 272, 272, 272, 272, 272, 272, 272, 198, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - /* 10 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - /* 20 */ 78, 79, 80, 81, 61, 28, 7, 8, 5, 66, - /* 30 */ 67, 68, 9, 70, 71, 6, 73, 74, 5, 76, - /* 40 */ 69, 78, 9, 80, 81, 0, 1, 28, 69, 4, - /* 50 */ 5, 28, 7, 8, 9, 10, 11, 12, 13, 14, - /* 60 */ 15, 16, 17, 18, 19, 20, 21, 22, 66, 67, - /* 70 */ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - /* 80 */ 35, 1, 7, 8, 4, 5, 69, 7, 8, 9, - /* 90 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - /* 100 */ 20, 21, 22, 28, 61, 25, 26, 27, 28, 29, - /* 110 */ 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, - /* 120 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - /* 130 */ 53, 54, 55, 56, 6, 2, 3, 78, 61, 6, - /* 140 */ 81, 57, 58, 66, 67, 68, 61, 70, 71, 75, - /* 150 */ 73, 74, 65, 76, 72, 78, 28, 80, 81, 57, - /* 160 */ 58, 28, 29, 30, 31, 32, 33, 2, 3, 46, - /* 170 */ 46, 6, 77, 78, 79, 80, 81, 57, 58, 58, - /* 180 */ 57, 58, 59, 60, 60, 6, 63, 64, 6, 10, - /* 190 */ 46, 6, 67, 28, 29, 30, 31, 32, 46, 17, - /* 200 */ 27, 57, 58, 59, 60, 19, 74, 63, 64, 57, - /* 210 */ 58, 59, 60, 2, 3, 63, 64, 6, 46, 18, - /* 220 */ 35, 5, 73, 46, 9, 9, 2, 3, 28, 57, - /* 230 */ 58, 59, 60, 46, 62, 58, 59, 60, 82, 28, - /* 240 */ 29, 30, 31, 46, 57, 58, 59, 60, 82, 62, - /* 250 */ 82, 27, 82, 82, 82, 58, 59, 60, + /* 0 */ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + /* 10 */ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + /* 20 */ 58, 80, 81, 82, 83, 63, 29, 7, 8, 5, + /* 30 */ 68, 69, 70, 9, 72, 73, 80, 75, 76, 83, + /* 40 */ 78, 6, 80, 71, 82, 83, 0, 1, 5, 29, + /* 50 */ 4, 5, 9, 7, 8, 9, 10, 11, 12, 13, + /* 60 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + /* 70 */ 24, 48, 29, 27, 28, 29, 30, 31, 32, 33, + /* 80 */ 34, 35, 36, 1, 6, 62, 4, 5, 71, 7, + /* 90 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + /* 100 */ 18, 19, 20, 21, 22, 23, 24, 29, 6, 27, + /* 110 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 40, + /* 120 */ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + /* 130 */ 51, 52, 53, 54, 55, 56, 57, 58, 36, 2, + /* 140 */ 3, 71, 63, 6, 68, 69, 6, 68, 69, 70, + /* 150 */ 10, 72, 73, 63, 75, 76, 5, 78, 63, 80, + /* 160 */ 9, 82, 83, 77, 2, 3, 29, 30, 31, 32, + /* 170 */ 33, 34, 2, 3, 48, 74, 6, 79, 80, 81, + /* 180 */ 82, 83, 59, 60, 67, 59, 60, 61, 62, 60, + /* 190 */ 28, 65, 66, 59, 60, 6, 48, 59, 60, 29, + /* 200 */ 30, 31, 32, 33, 48, 28, 17, 59, 60, 61, + /* 210 */ 62, 69, 19, 65, 66, 59, 60, 61, 62, 48, + /* 220 */ 76, 65, 66, 18, 2, 3, 48, 75, 6, 48, + /* 230 */ 59, 60, 61, 62, 48, 9, 65, 66, 60, 61, + /* 240 */ 62, 60, 61, 62, 29, 59, 60, 61, 62, 48, + /* 250 */ 64, 29, 30, 31, 32, 7, 8, 84, 84, 84, + /* 260 */ 59, 60, 61, 62, 84, 64, 84, 84, 84, 84, + /* 270 */ 84, 84, 84, 84, 84, 84, 84, 29, }; -#define YY_SHIFT_USE_DFLT (258) -#define YY_SHIFT_COUNT (40) +#define YY_SHIFT_USE_DFLT (278) +#define YY_SHIFT_COUNT (41) #define YY_SHIFT_MIN (-3) -#define YY_SHIFT_MAX (224) +#define YY_SHIFT_MAX (248) static const short yy_shift_ofst[] = { - /* 0 */ 80, 45, 128, 128, 128, 128, 128, 33, 33, 128, - /* 10 */ 128, 128, 23, 224, 33, 29, 29, -3, -3, -3, - /* 20 */ -3, 29, -3, 133, 165, 211, 19, 75, 185, 179, - /* 30 */ 182, 29, 173, 29, 173, 186, 29, 201, 216, 215, - /* 40 */ 200, + /* 0 */ 82, 46, 78, 78, 78, 78, 78, 78, 24, 24, + /* 10 */ 78, 78, 78, 43, 162, 24, 35, 35, -3, -3, + /* 20 */ -3, -3, 35, -3, 137, 170, 222, 20, 248, 102, + /* 30 */ 140, 189, 35, 177, 35, 177, 193, 35, 205, 151, + /* 40 */ 226, 215, }; -#define YY_REDUCE_USE_DFLT (-59) -#define YY_REDUCE_COUNT (37) -#define YY_REDUCE_MIN (-58) -#define YY_REDUCE_MAX (197) +#define YY_REDUCE_USE_DFLT (-60) +#define YY_REDUCE_COUNT (38) +#define YY_REDUCE_MIN (-59) +#define YY_REDUCE_MAX (201) static const short yy_reduce_ofst[] = { - /* 0 */ -37, 77, 123, 144, 152, 172, 187, 95, -58, 177, - /* 10 */ 197, 197, 59, 2, 59, 84, 102, 124, 124, 124, - /* 20 */ 124, 120, 124, -29, -21, 17, 43, 85, 74, 82, - /* 30 */ 87, 121, 125, 121, 125, 132, 121, 149, + /* 0 */ -38, 79, 126, 148, 156, 171, 186, 201, 98, -59, + /* 10 */ 178, 181, 181, -44, 76, -44, 123, 134, 23, 23, + /* 20 */ 23, 23, 138, 23, -28, 17, 70, 90, 95, 86, + /* 30 */ 101, 117, 129, 142, 129, 142, 144, 129, 152, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 395, 395, 360, 359, 305, 334, 329, 388, 339, 353, - /* 10 */ 332, 327, 344, 288, 346, 387, 361, 355, 297, 333, - /* 20 */ 328, 295, 296, 371, 368, 365, 350, 284, 287, 283, - /* 30 */ 275, 336, 394, 301, 302, 286, 294, 285, 392, 392, - /* 40 */ 281, + /* 0 */ 404, 404, 369, 368, 367, 313, 342, 337, 397, 347, + /* 10 */ 361, 340, 335, 352, 295, 354, 396, 370, 363, 304, + /* 20 */ 341, 336, 302, 303, 380, 377, 374, 358, 291, 294, + /* 30 */ 290, 281, 344, 403, 309, 310, 293, 301, 292, 401, + /* 40 */ 401, 288, }; /********** End of lemon-generated parsing tables *****************************/ @@ -311,8 +315,10 @@ static const YYCODETYPE yyFallback[] = { 10, /* LINE_BLOCKQUOTE => LINE_HTML */ 10, /* LINE_LIST_BULLETED => LINE_HTML */ 10, /* LINE_LIST_ENUMERATED => LINE_HTML */ + 10, /* LINE_DEF_ABBREVIATION => LINE_HTML */ 10, /* LINE_DEF_CITATION => LINE_HTML */ 10, /* LINE_DEF_FOOTNOTE => LINE_HTML */ + 10, /* LINE_DEF_GLOSSARY => LINE_HTML */ 10, /* LINE_DEF_LINK => LINE_HTML */ 10, /* LINE_FENCE_BACKTICK => LINE_HTML */ 10, /* LINE_FENCE_BACKTICK_START => LINE_HTML */ @@ -406,22 +412,22 @@ static const char *const yyTokenName[] = { "LINE_INDENTED_SPACE", "LINE_TABLE", "LINE_HTML", "LINE_ATX_1", "LINE_ATX_2", "LINE_ATX_3", "LINE_ATX_4", "LINE_ATX_5", "LINE_ATX_6", "LINE_BLOCKQUOTE", "LINE_LIST_BULLETED", "LINE_LIST_ENUMERATED", - "LINE_DEF_CITATION", "LINE_DEF_FOOTNOTE", "LINE_DEF_LINK", "LINE_FENCE_BACKTICK", - "LINE_FENCE_BACKTICK_START", "LINE_TOC", "LINE_DEF_ABBREVIATION", "LINE_DEFINITION", - "LINE_EMPTY", "LINE_FENCE_BACKTICK_3", "LINE_FENCE_BACKTICK_4", "LINE_FENCE_BACKTICK_5", - "LINE_FENCE_BACKTICK_START_3", "LINE_FENCE_BACKTICK_START_4", "LINE_FENCE_BACKTICK_START_5", "LINE_META", - "error", "doc", "blocks", "block", - "blockquote", "def_abbreviation", "def_citation", "def_footnote", - "def_link", "definition_block", "empty", "fenced_block", - "html_block", "indented_code", "list_bullet", "list_enum", - "meta_block", "para", "setext_1", "setext_2", - "table", "chunk", "chunk_line", "nested_chunks", - "nested_chunk", "indented_line", "ext_chunk", "opt_ext_chunk", - "tail", "quote_line", "defs", "def", - "fenced_3", "fenced_line", "fenced_4", "fenced_5", - "html_line", "item_bullet", "item_enum", "meta_line", - "table_header", "table_body", "header_rows", "table_section", - "all_rows", "row", + "LINE_DEF_ABBREVIATION", "LINE_DEF_CITATION", "LINE_DEF_FOOTNOTE", "LINE_DEF_GLOSSARY", + "LINE_DEF_LINK", "LINE_FENCE_BACKTICK", "LINE_FENCE_BACKTICK_START", "LINE_TOC", + "LINE_DEFINITION", "LINE_EMPTY", "LINE_FENCE_BACKTICK_3", "LINE_FENCE_BACKTICK_4", + "LINE_FENCE_BACKTICK_5", "LINE_FENCE_BACKTICK_START_3", "LINE_FENCE_BACKTICK_START_4", "LINE_FENCE_BACKTICK_START_5", + "LINE_META", "error", "doc", "blocks", + "block", "blockquote", "def_abbreviation", "def_citation", + "def_footnote", "def_glossary", "def_link", "definition_block", + "empty", "fenced_block", "html_block", "indented_code", + "list_bullet", "list_enum", "meta_block", "para", + "setext_1", "setext_2", "table", "chunk", + "chunk_line", "nested_chunks", "nested_chunk", "indented_line", + "ext_chunk", "opt_ext_chunk", "tail", "quote_line", + "defs", "def", "fenced_3", "fenced_line", + "fenced_4", "fenced_5", "html_line", "item_bullet", + "item_enum", "meta_line", "table_header", "table_body", + "header_rows", "table_section", "all_rows", "row", }; #endif /* NDEBUG */ @@ -444,122 +450,125 @@ static const char *const yyRuleName[] = { /* 12 */ "block ::= def_abbreviation", /* 13 */ "block ::= def_citation", /* 14 */ "block ::= def_footnote", - /* 15 */ "block ::= def_link", - /* 16 */ "block ::= definition_block", - /* 17 */ "block ::= empty", - /* 18 */ "block ::= fenced_block", - /* 19 */ "block ::= html_block", - /* 20 */ "block ::= indented_code", - /* 21 */ "block ::= list_bullet", - /* 22 */ "block ::= list_enum", - /* 23 */ "block ::= meta_block", - /* 24 */ "block ::= para", - /* 25 */ "block ::= setext_1", - /* 26 */ "block ::= setext_2", - /* 27 */ "block ::= table", - /* 28 */ "chunk ::= chunk chunk_line", - /* 29 */ "nested_chunks ::= nested_chunks nested_chunk", - /* 30 */ "nested_chunk ::= empty indented_line chunk", - /* 31 */ "nested_chunk ::= empty indented_line", - /* 32 */ "ext_chunk ::= chunk nested_chunks", - /* 33 */ "opt_ext_chunk ::= chunk nested_chunks", - /* 34 */ "blockquote ::= blockquote quote_line", - /* 35 */ "def_citation ::= LINE_DEF_CITATION tail", - /* 36 */ "def_footnote ::= LINE_DEF_FOOTNOTE tail", - /* 37 */ "def_link ::= LINE_DEF_LINK chunk", - /* 38 */ "definition_block ::= para defs", - /* 39 */ "defs ::= defs def", - /* 40 */ "def ::= LINE_DEFINITION tail", - /* 41 */ "def ::= LINE_DEFINITION", - /* 42 */ "empty ::= empty LINE_EMPTY", - /* 43 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3", - /* 44 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4", - /* 45 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5", - /* 46 */ "fenced_3 ::= fenced_3 fenced_line", - /* 47 */ "fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4", - /* 48 */ "fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5", - /* 49 */ "fenced_4 ::= fenced_4 fenced_line", - /* 50 */ "fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3", - /* 51 */ "fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3", - /* 52 */ "fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5", - /* 53 */ "fenced_5 ::= fenced_5 fenced_line", - /* 54 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3", - /* 55 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3", - /* 56 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4", - /* 57 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4", - /* 58 */ "html_block ::= html_block html_line", - /* 59 */ "indented_code ::= indented_code indented_line", - /* 60 */ "indented_code ::= indented_code LINE_EMPTY", - /* 61 */ "list_bullet ::= list_bullet item_bullet", - /* 62 */ "item_bullet ::= LINE_LIST_BULLETED ext_chunk", - /* 63 */ "item_bullet ::= LINE_LIST_BULLETED chunk", - /* 64 */ "item_bullet ::= LINE_LIST_BULLETED nested_chunks", - /* 65 */ "item_bullet ::= LINE_LIST_BULLETED", - /* 66 */ "list_enum ::= list_enum item_enum", - /* 67 */ "item_enum ::= LINE_LIST_ENUMERATED ext_chunk", - /* 68 */ "item_enum ::= LINE_LIST_ENUMERATED chunk", - /* 69 */ "item_enum ::= LINE_LIST_ENUMERATED nested_chunks", - /* 70 */ "item_enum ::= LINE_LIST_ENUMERATED", - /* 71 */ "meta_block ::= meta_block meta_line", - /* 72 */ "para ::= LINE_PLAIN chunk", - /* 73 */ "setext_1 ::= para LINE_SETEXT_1", - /* 74 */ "setext_2 ::= para LINE_SETEXT_2", - /* 75 */ "table ::= table_header table_body", - /* 76 */ "table_header ::= header_rows LINE_TABLE_SEPARATOR", - /* 77 */ "header_rows ::= header_rows LINE_TABLE", - /* 78 */ "table_body ::= table_body table_section", - /* 79 */ "table_section ::= all_rows LINE_EMPTY", - /* 80 */ "table_section ::= all_rows", - /* 81 */ "all_rows ::= all_rows row", - /* 82 */ "para ::= all_rows", - /* 83 */ "chunk ::= chunk_line", - /* 84 */ "chunk_line ::= LINE_CONTINUATION", - /* 85 */ "nested_chunks ::= nested_chunk", - /* 86 */ "nested_chunk ::= empty", - /* 87 */ "indented_line ::= LINE_INDENTED_TAB", - /* 88 */ "indented_line ::= LINE_INDENTED_SPACE", - /* 89 */ "opt_ext_chunk ::= chunk", - /* 90 */ "tail ::= opt_ext_chunk", - /* 91 */ "tail ::= nested_chunks", - /* 92 */ "blockquote ::= LINE_BLOCKQUOTE", - /* 93 */ "quote_line ::= LINE_BLOCKQUOTE", - /* 94 */ "quote_line ::= LINE_CONTINUATION", - /* 95 */ "def_citation ::= LINE_DEF_CITATION", - /* 96 */ "def_footnote ::= LINE_DEF_FOOTNOTE", - /* 97 */ "def_link ::= LINE_DEF_LINK", - /* 98 */ "def_abbreviation ::= LINE_DEF_ABBREVIATION", - /* 99 */ "defs ::= def", - /* 100 */ "empty ::= LINE_EMPTY", - /* 101 */ "fenced_block ::= fenced_3", - /* 102 */ "fenced_3 ::= LINE_FENCE_BACKTICK_3", - /* 103 */ "fenced_3 ::= LINE_FENCE_BACKTICK_START_3", - /* 104 */ "fenced_block ::= fenced_4", - /* 105 */ "fenced_4 ::= LINE_FENCE_BACKTICK_4", - /* 106 */ "fenced_4 ::= LINE_FENCE_BACKTICK_START_4", - /* 107 */ "fenced_block ::= fenced_5", - /* 108 */ "fenced_5 ::= LINE_FENCE_BACKTICK_5", - /* 109 */ "fenced_5 ::= LINE_FENCE_BACKTICK_START_5", - /* 110 */ "fenced_line ::= LINE_CONTINUATION", - /* 111 */ "fenced_line ::= LINE_EMPTY", - /* 112 */ "fenced_line ::= LINE_SETEXT_1", - /* 113 */ "fenced_line ::= LINE_SETEXT_2", - /* 114 */ "html_block ::= LINE_HTML", - /* 115 */ "html_line ::= LINE_CONTINUATION", - /* 116 */ "html_line ::= LINE_HTML", - /* 117 */ "indented_code ::= indented_line", - /* 118 */ "list_bullet ::= item_bullet", - /* 119 */ "list_enum ::= item_enum", - /* 120 */ "meta_block ::= LINE_META", - /* 121 */ "meta_line ::= LINE_META", - /* 122 */ "meta_line ::= LINE_CONTINUATION", - /* 123 */ "para ::= LINE_PLAIN", - /* 124 */ "table ::= table_header", - /* 125 */ "header_rows ::= LINE_TABLE", - /* 126 */ "table_body ::= table_section", - /* 127 */ "all_rows ::= row", - /* 128 */ "row ::= header_rows", - /* 129 */ "row ::= LINE_TABLE_SEPARATOR", - /* 130 */ "para ::= defs", + /* 15 */ "block ::= def_glossary", + /* 16 */ "block ::= def_link", + /* 17 */ "block ::= definition_block", + /* 18 */ "block ::= empty", + /* 19 */ "block ::= fenced_block", + /* 20 */ "block ::= html_block", + /* 21 */ "block ::= indented_code", + /* 22 */ "block ::= list_bullet", + /* 23 */ "block ::= list_enum", + /* 24 */ "block ::= meta_block", + /* 25 */ "block ::= para", + /* 26 */ "block ::= setext_1", + /* 27 */ "block ::= setext_2", + /* 28 */ "block ::= table", + /* 29 */ "chunk ::= chunk chunk_line", + /* 30 */ "nested_chunks ::= nested_chunks nested_chunk", + /* 31 */ "nested_chunk ::= empty indented_line chunk", + /* 32 */ "nested_chunk ::= empty indented_line", + /* 33 */ "ext_chunk ::= chunk nested_chunks", + /* 34 */ "opt_ext_chunk ::= chunk nested_chunks", + /* 35 */ "blockquote ::= blockquote quote_line", + /* 36 */ "def_citation ::= LINE_DEF_CITATION tail", + /* 37 */ "def_footnote ::= LINE_DEF_FOOTNOTE tail", + /* 38 */ "def_glossary ::= LINE_DEF_GLOSSARY tail", + /* 39 */ "def_link ::= LINE_DEF_LINK chunk", + /* 40 */ "definition_block ::= para defs", + /* 41 */ "defs ::= defs def", + /* 42 */ "def ::= LINE_DEFINITION tail", + /* 43 */ "def ::= LINE_DEFINITION", + /* 44 */ "empty ::= empty LINE_EMPTY", + /* 45 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3", + /* 46 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4", + /* 47 */ "fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5", + /* 48 */ "fenced_3 ::= fenced_3 fenced_line", + /* 49 */ "fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4", + /* 50 */ "fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5", + /* 51 */ "fenced_4 ::= fenced_4 fenced_line", + /* 52 */ "fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3", + /* 53 */ "fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3", + /* 54 */ "fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5", + /* 55 */ "fenced_5 ::= fenced_5 fenced_line", + /* 56 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3", + /* 57 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3", + /* 58 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4", + /* 59 */ "fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4", + /* 60 */ "html_block ::= html_block html_line", + /* 61 */ "indented_code ::= indented_code indented_line", + /* 62 */ "indented_code ::= indented_code LINE_EMPTY", + /* 63 */ "list_bullet ::= list_bullet item_bullet", + /* 64 */ "item_bullet ::= LINE_LIST_BULLETED ext_chunk", + /* 65 */ "item_bullet ::= LINE_LIST_BULLETED chunk", + /* 66 */ "item_bullet ::= LINE_LIST_BULLETED nested_chunks", + /* 67 */ "item_bullet ::= LINE_LIST_BULLETED", + /* 68 */ "list_enum ::= list_enum item_enum", + /* 69 */ "item_enum ::= LINE_LIST_ENUMERATED ext_chunk", + /* 70 */ "item_enum ::= LINE_LIST_ENUMERATED chunk", + /* 71 */ "item_enum ::= LINE_LIST_ENUMERATED nested_chunks", + /* 72 */ "item_enum ::= LINE_LIST_ENUMERATED", + /* 73 */ "meta_block ::= meta_block meta_line", + /* 74 */ "para ::= LINE_PLAIN chunk", + /* 75 */ "setext_1 ::= para LINE_SETEXT_1", + /* 76 */ "setext_2 ::= para LINE_SETEXT_2", + /* 77 */ "table ::= table_header table_body", + /* 78 */ "table_header ::= header_rows LINE_TABLE_SEPARATOR", + /* 79 */ "header_rows ::= header_rows LINE_TABLE", + /* 80 */ "table_body ::= table_body table_section", + /* 81 */ "table_section ::= all_rows LINE_EMPTY", + /* 82 */ "table_section ::= all_rows", + /* 83 */ "all_rows ::= all_rows row", + /* 84 */ "para ::= all_rows", + /* 85 */ "chunk ::= chunk_line", + /* 86 */ "chunk_line ::= LINE_CONTINUATION", + /* 87 */ "nested_chunks ::= nested_chunk", + /* 88 */ "nested_chunk ::= empty", + /* 89 */ "indented_line ::= LINE_INDENTED_TAB", + /* 90 */ "indented_line ::= LINE_INDENTED_SPACE", + /* 91 */ "opt_ext_chunk ::= chunk", + /* 92 */ "tail ::= opt_ext_chunk", + /* 93 */ "tail ::= nested_chunks", + /* 94 */ "blockquote ::= LINE_BLOCKQUOTE", + /* 95 */ "quote_line ::= LINE_BLOCKQUOTE", + /* 96 */ "quote_line ::= LINE_CONTINUATION", + /* 97 */ "def_citation ::= LINE_DEF_CITATION", + /* 98 */ "def_footnote ::= LINE_DEF_FOOTNOTE", + /* 99 */ "def_glossary ::= LINE_DEF_GLOSSARY", + /* 100 */ "def_link ::= LINE_DEF_LINK", + /* 101 */ "def_abbreviation ::= LINE_DEF_ABBREVIATION", + /* 102 */ "defs ::= def", + /* 103 */ "empty ::= LINE_EMPTY", + /* 104 */ "fenced_block ::= fenced_3", + /* 105 */ "fenced_3 ::= LINE_FENCE_BACKTICK_3", + /* 106 */ "fenced_3 ::= LINE_FENCE_BACKTICK_START_3", + /* 107 */ "fenced_block ::= fenced_4", + /* 108 */ "fenced_4 ::= LINE_FENCE_BACKTICK_4", + /* 109 */ "fenced_4 ::= LINE_FENCE_BACKTICK_START_4", + /* 110 */ "fenced_block ::= fenced_5", + /* 111 */ "fenced_5 ::= LINE_FENCE_BACKTICK_5", + /* 112 */ "fenced_5 ::= LINE_FENCE_BACKTICK_START_5", + /* 113 */ "fenced_line ::= LINE_CONTINUATION", + /* 114 */ "fenced_line ::= LINE_EMPTY", + /* 115 */ "fenced_line ::= LINE_SETEXT_1", + /* 116 */ "fenced_line ::= LINE_SETEXT_2", + /* 117 */ "html_block ::= LINE_HTML", + /* 118 */ "html_line ::= LINE_CONTINUATION", + /* 119 */ "html_line ::= LINE_HTML", + /* 120 */ "indented_code ::= indented_line", + /* 121 */ "list_bullet ::= item_bullet", + /* 122 */ "list_enum ::= item_enum", + /* 123 */ "meta_block ::= LINE_META", + /* 124 */ "meta_line ::= LINE_META", + /* 125 */ "meta_line ::= LINE_CONTINUATION", + /* 126 */ "para ::= LINE_PLAIN", + /* 127 */ "table ::= table_header", + /* 128 */ "header_rows ::= LINE_TABLE", + /* 129 */ "table_body ::= table_section", + /* 130 */ "all_rows ::= row", + /* 131 */ "row ::= header_rows", + /* 132 */ "row ::= LINE_TABLE_SEPARATOR", + /* 133 */ "para ::= defs", }; #endif /* NDEBUG */ @@ -908,137 +917,140 @@ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ unsigned char nrhs; /* Number of right-hand side symbols in the rule */ } yyRuleInfo[] = { - { 37, 1 }, - { 38, 2 }, { 38, 1 }, + { 39, 2 }, { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 57, 2 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, + { 40, 1 }, { 59, 2 }, - { 60, 3 }, - { 60, 2 }, + { 61, 2 }, + { 62, 3 }, { 62, 2 }, - { 63, 2 }, - { 40, 2 }, - { 42, 2 }, + { 64, 2 }, + { 65, 2 }, + { 41, 2 }, { 43, 2 }, { 44, 2 }, { 45, 2 }, - { 66, 2 }, - { 67, 2 }, - { 67, 1 }, { 46, 2 }, { 47, 2 }, - { 47, 2 }, - { 47, 2 }, { 68, 2 }, - { 47, 2 }, - { 47, 2 }, - { 70, 2 }, - { 70, 2 }, - { 70, 2 }, - { 47, 2 }, - { 71, 2 }, - { 71, 2 }, - { 71, 2 }, - { 71, 2 }, - { 71, 2 }, + { 69, 2 }, + { 69, 1 }, { 48, 2 }, { 49, 2 }, { 49, 2 }, - { 50, 2 }, + { 49, 2 }, + { 70, 2 }, + { 49, 2 }, + { 49, 2 }, + { 72, 2 }, + { 72, 2 }, + { 72, 2 }, + { 49, 2 }, { 73, 2 }, { 73, 2 }, { 73, 2 }, - { 73, 1 }, + { 73, 2 }, + { 73, 2 }, + { 50, 2 }, + { 51, 2 }, { 51, 2 }, - { 74, 2 }, - { 74, 2 }, - { 74, 2 }, - { 74, 1 }, { 52, 2 }, + { 75, 2 }, + { 75, 2 }, + { 75, 2 }, + { 75, 1 }, { 53, 2 }, + { 76, 2 }, + { 76, 2 }, + { 76, 2 }, + { 76, 1 }, { 54, 2 }, { 55, 2 }, { 56, 2 }, - { 76, 2 }, + { 57, 2 }, + { 58, 2 }, { 78, 2 }, - { 77, 2 }, - { 79, 2 }, - { 79, 1 }, { 80, 2 }, - { 53, 1 }, - { 57, 1 }, - { 58, 1 }, + { 79, 2 }, + { 81, 2 }, + { 81, 1 }, + { 82, 2 }, + { 55, 1 }, { 59, 1 }, { 60, 1 }, { 61, 1 }, - { 61, 1 }, + { 62, 1 }, + { 63, 1 }, { 63, 1 }, - { 64, 1 }, - { 64, 1 }, - { 40, 1 }, - { 65, 1 }, { 65, 1 }, - { 42, 1 }, + { 66, 1 }, + { 66, 1 }, + { 41, 1 }, + { 67, 1 }, + { 67, 1 }, { 43, 1 }, { 44, 1 }, - { 41, 1 }, - { 66, 1 }, + { 45, 1 }, { 46, 1 }, - { 47, 1 }, - { 68, 1 }, + { 42, 1 }, { 68, 1 }, - { 47, 1 }, + { 48, 1 }, + { 49, 1 }, { 70, 1 }, { 70, 1 }, - { 47, 1 }, - { 71, 1 }, - { 71, 1 }, - { 69, 1 }, - { 69, 1 }, - { 69, 1 }, - { 69, 1 }, - { 48, 1 }, + { 49, 1 }, { 72, 1 }, { 72, 1 }, { 49, 1 }, + { 73, 1 }, + { 73, 1 }, + { 71, 1 }, + { 71, 1 }, + { 71, 1 }, + { 71, 1 }, { 50, 1 }, + { 74, 1 }, + { 74, 1 }, { 51, 1 }, { 52, 1 }, - { 75, 1 }, - { 75, 1 }, { 53, 1 }, - { 56, 1 }, - { 78, 1 }, + { 54, 1 }, + { 77, 1 }, { 77, 1 }, + { 55, 1 }, + { 58, 1 }, { 80, 1 }, - { 81, 1 }, - { 81, 1 }, - { 53, 1 }, + { 79, 1 }, + { 82, 1 }, + { 83, 1 }, + { 83, 1 }, + { 55, 1 }, }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -1176,204 +1188,210 @@ static void yy_reduce( { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, yylhsminor.yy0); recursive_parse_indent(engine, yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 15: /* block ::= def_link */ + case 15: /* block ::= def_glossary */ +{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_GLOSSARY); stack_push(engine->definition_stack, yylhsminor.yy0); recursive_parse_indent(engine, yylhsminor.yy0); } + yymsp[0].minor.yy0 = yylhsminor.yy0; + break; + case 16: /* block ::= def_link */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_LINK); stack_push(engine->definition_stack, yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 16: /* block ::= definition_block */ + case 17: /* block ::= definition_block */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFLIST); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 17: /* block ::= empty */ + case 18: /* block ::= empty */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_EMPTY); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 18: /* block ::= fenced_block */ + case 19: /* block ::= fenced_block */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_FENCED); yymsp[0].minor.yy0->child->type = CODE_FENCE; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 19: /* block ::= html_block */ + case 20: /* block ::= html_block */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_HTML); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 20: /* block ::= indented_code */ + case 21: /* block ::= indented_code */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_INDENTED); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 21: /* block ::= list_bullet */ + case 22: /* block ::= list_bullet */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_BULLETED); is_list_loose(yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 22: /* block ::= list_enum */ + case 23: /* block ::= list_enum */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ENUMERATED); is_list_loose(yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 23: /* block ::= meta_block */ + case 24: /* block ::= meta_block */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_META); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 24: /* block ::= para */ + case 25: /* block ::= para */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_PARA); is_para_html(engine, yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 25: /* block ::= setext_1 */ + case 26: /* block ::= setext_1 */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 26: /* block ::= setext_2 */ + case 27: /* block ::= setext_2 */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 27: /* block ::= table */ + case 28: /* block ::= table */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 28: /* chunk ::= chunk chunk_line */ - case 29: /* nested_chunks ::= nested_chunks nested_chunk */ yytestcase(yyruleno==29); - case 32: /* ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==32); - case 33: /* opt_ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==33); - case 34: /* blockquote ::= blockquote quote_line */ yytestcase(yyruleno==34); - case 35: /* def_citation ::= LINE_DEF_CITATION tail */ yytestcase(yyruleno==35); - case 36: /* def_footnote ::= LINE_DEF_FOOTNOTE tail */ yytestcase(yyruleno==36); - case 37: /* def_link ::= LINE_DEF_LINK chunk */ yytestcase(yyruleno==37); - case 39: /* defs ::= defs def */ yytestcase(yyruleno==39); - case 42: /* empty ::= empty LINE_EMPTY */ yytestcase(yyruleno==42); - case 46: /* fenced_3 ::= fenced_3 fenced_line */ yytestcase(yyruleno==46); - case 49: /* fenced_4 ::= fenced_4 fenced_line */ yytestcase(yyruleno==49); - case 50: /* fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==50); - case 51: /* fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==51); - case 53: /* fenced_5 ::= fenced_5 fenced_line */ yytestcase(yyruleno==53); - case 54: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==54); - case 55: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==55); - case 56: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==56); - case 57: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4 */ yytestcase(yyruleno==57); - case 58: /* html_block ::= html_block html_line */ yytestcase(yyruleno==58); - case 59: /* indented_code ::= indented_code indented_line */ yytestcase(yyruleno==59); - case 60: /* indented_code ::= indented_code LINE_EMPTY */ yytestcase(yyruleno==60); - case 61: /* list_bullet ::= list_bullet item_bullet */ yytestcase(yyruleno==61); - case 66: /* list_enum ::= list_enum item_enum */ yytestcase(yyruleno==66); - case 71: /* meta_block ::= meta_block meta_line */ yytestcase(yyruleno==71); - case 72: /* para ::= LINE_PLAIN chunk */ yytestcase(yyruleno==72); - case 73: /* setext_1 ::= para LINE_SETEXT_1 */ yytestcase(yyruleno==73); - case 74: /* setext_2 ::= para LINE_SETEXT_2 */ yytestcase(yyruleno==74); - case 75: /* table ::= table_header table_body */ yytestcase(yyruleno==75); - case 77: /* header_rows ::= header_rows LINE_TABLE */ yytestcase(yyruleno==77); - case 78: /* table_body ::= table_body table_section */ yytestcase(yyruleno==78); - case 81: /* all_rows ::= all_rows row */ yytestcase(yyruleno==81); + case 29: /* chunk ::= chunk chunk_line */ + case 30: /* nested_chunks ::= nested_chunks nested_chunk */ yytestcase(yyruleno==30); + case 33: /* ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==33); + case 34: /* opt_ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==34); + case 35: /* blockquote ::= blockquote quote_line */ yytestcase(yyruleno==35); + case 36: /* def_citation ::= LINE_DEF_CITATION tail */ yytestcase(yyruleno==36); + case 37: /* def_footnote ::= LINE_DEF_FOOTNOTE tail */ yytestcase(yyruleno==37); + case 38: /* def_glossary ::= LINE_DEF_GLOSSARY tail */ yytestcase(yyruleno==38); + case 39: /* def_link ::= LINE_DEF_LINK chunk */ yytestcase(yyruleno==39); + case 41: /* defs ::= defs def */ yytestcase(yyruleno==41); + case 44: /* empty ::= empty LINE_EMPTY */ yytestcase(yyruleno==44); + case 48: /* fenced_3 ::= fenced_3 fenced_line */ yytestcase(yyruleno==48); + case 51: /* fenced_4 ::= fenced_4 fenced_line */ yytestcase(yyruleno==51); + case 52: /* fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==52); + case 53: /* fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==53); + case 55: /* fenced_5 ::= fenced_5 fenced_line */ yytestcase(yyruleno==55); + case 56: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==56); + case 57: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==57); + case 58: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==58); + case 59: /* fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4 */ yytestcase(yyruleno==59); + case 60: /* html_block ::= html_block html_line */ yytestcase(yyruleno==60); + case 61: /* indented_code ::= indented_code indented_line */ yytestcase(yyruleno==61); + case 62: /* indented_code ::= indented_code LINE_EMPTY */ yytestcase(yyruleno==62); + case 63: /* list_bullet ::= list_bullet item_bullet */ yytestcase(yyruleno==63); + case 68: /* list_enum ::= list_enum item_enum */ yytestcase(yyruleno==68); + case 73: /* meta_block ::= meta_block meta_line */ yytestcase(yyruleno==73); + case 74: /* para ::= LINE_PLAIN chunk */ yytestcase(yyruleno==74); + case 75: /* setext_1 ::= para LINE_SETEXT_1 */ yytestcase(yyruleno==75); + case 76: /* setext_2 ::= para LINE_SETEXT_2 */ yytestcase(yyruleno==76); + case 77: /* table ::= table_header table_body */ yytestcase(yyruleno==77); + case 79: /* header_rows ::= header_rows LINE_TABLE */ yytestcase(yyruleno==79); + case 80: /* table_body ::= table_body table_section */ yytestcase(yyruleno==80); + case 83: /* all_rows ::= all_rows row */ yytestcase(yyruleno==83); { yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 30: /* nested_chunk ::= empty indented_line chunk */ + case 31: /* nested_chunk ::= empty indented_line chunk */ { yylhsminor.yy0 = yymsp[-2].minor.yy0; token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = LINE_CONTINUATION; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 31: /* nested_chunk ::= empty indented_line */ + case 32: /* nested_chunk ::= empty indented_line */ { yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->type = LINE_CONTINUATION; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 38: /* definition_block ::= para defs */ + case 40: /* definition_block ::= para defs */ { yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = BLOCK_TERM; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 40: /* def ::= LINE_DEFINITION tail */ + case 42: /* def ::= LINE_DEFINITION tail */ { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_DEFINITION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); recursive_parse_indent(engine, yylhsminor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 41: /* def ::= LINE_DEFINITION */ + case 43: /* def ::= LINE_DEFINITION */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFINITION); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 43: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3 */ - case 44: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==44); - case 45: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==45); - case 47: /* fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==47); - case 48: /* fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==48); - case 52: /* fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==52); + case 45: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3 */ + case 46: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==46); + case 47: /* fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==47); + case 49: /* fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==49); + case 50: /* fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==50); + case 54: /* fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==54); { yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->child->type = CODE_FENCE; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 62: /* item_bullet ::= LINE_LIST_BULLETED ext_chunk */ - case 64: /* item_bullet ::= LINE_LIST_BULLETED nested_chunks */ yytestcase(yyruleno==64); - case 67: /* item_enum ::= LINE_LIST_ENUMERATED ext_chunk */ yytestcase(yyruleno==67); - case 69: /* item_enum ::= LINE_LIST_ENUMERATED nested_chunks */ yytestcase(yyruleno==69); + case 64: /* item_bullet ::= LINE_LIST_BULLETED ext_chunk */ + case 66: /* item_bullet ::= LINE_LIST_BULLETED nested_chunks */ yytestcase(yyruleno==66); + case 69: /* item_enum ::= LINE_LIST_ENUMERATED ext_chunk */ yytestcase(yyruleno==69); + case 71: /* item_enum ::= LINE_LIST_ENUMERATED nested_chunks */ yytestcase(yyruleno==71); { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); recursive_parse_list_item(engine, yylhsminor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 63: /* item_bullet ::= LINE_LIST_BULLETED chunk */ - case 68: /* item_enum ::= LINE_LIST_ENUMERATED chunk */ yytestcase(yyruleno==68); + case 65: /* item_bullet ::= LINE_LIST_BULLETED chunk */ + case 70: /* item_enum ::= LINE_LIST_ENUMERATED chunk */ yytestcase(yyruleno==70); { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM_TIGHT); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); recursive_parse_list_item(engine, yylhsminor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 65: /* item_bullet ::= LINE_LIST_BULLETED */ - case 70: /* item_enum ::= LINE_LIST_ENUMERATED */ yytestcase(yyruleno==70); + case 67: /* item_bullet ::= LINE_LIST_BULLETED */ + case 72: /* item_enum ::= LINE_LIST_ENUMERATED */ yytestcase(yyruleno==72); { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ITEM_TIGHT); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 76: /* table_header ::= header_rows LINE_TABLE_SEPARATOR */ + case 78: /* table_header ::= header_rows LINE_TABLE_SEPARATOR */ { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_HEADER); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 79: /* table_section ::= all_rows LINE_EMPTY */ + case 81: /* table_section ::= all_rows LINE_EMPTY */ { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_SECTION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 80: /* table_section ::= all_rows */ + case 82: /* table_section ::= all_rows */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE_SECTION); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 82: /* para ::= all_rows */ + case 84: /* para ::= all_rows */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; default: - /* (83) chunk ::= chunk_line (OPTIMIZED OUT) */ assert(yyruleno!=83); - /* (84) chunk_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==84); - /* (85) nested_chunks ::= nested_chunk (OPTIMIZED OUT) */ assert(yyruleno!=85); - /* (86) nested_chunk ::= empty */ yytestcase(yyruleno==86); - /* (87) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==87); - /* (88) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==88); - /* (89) opt_ext_chunk ::= chunk */ yytestcase(yyruleno==89); - /* (90) tail ::= opt_ext_chunk (OPTIMIZED OUT) */ assert(yyruleno!=90); - /* (91) tail ::= nested_chunks */ yytestcase(yyruleno==91); - /* (92) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==92); - /* (93) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==93); - /* (94) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==94); - /* (95) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==95); - /* (96) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==96); - /* (97) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==97); - /* (98) def_abbreviation ::= LINE_DEF_ABBREVIATION */ yytestcase(yyruleno==98); - /* (99) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=99); - /* (100) empty ::= LINE_EMPTY */ yytestcase(yyruleno==100); - /* (101) fenced_block ::= fenced_3 */ yytestcase(yyruleno==101); - /* (102) fenced_3 ::= LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==102); - /* (103) fenced_3 ::= LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==103); - /* (104) fenced_block ::= fenced_4 */ yytestcase(yyruleno==104); - /* (105) fenced_4 ::= LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==105); - /* (106) fenced_4 ::= LINE_FENCE_BACKTICK_START_4 */ yytestcase(yyruleno==106); - /* (107) fenced_block ::= fenced_5 */ yytestcase(yyruleno==107); - /* (108) fenced_5 ::= LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==108); - /* (109) fenced_5 ::= LINE_FENCE_BACKTICK_START_5 */ yytestcase(yyruleno==109); - /* (110) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==110); - /* (111) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==111); - /* (112) fenced_line ::= LINE_SETEXT_1 */ yytestcase(yyruleno==112); - /* (113) fenced_line ::= LINE_SETEXT_2 */ yytestcase(yyruleno==113); - /* (114) html_block ::= LINE_HTML */ yytestcase(yyruleno==114); - /* (115) html_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==115); - /* (116) html_line ::= LINE_HTML */ yytestcase(yyruleno==116); - /* (117) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=117); - /* (118) list_bullet ::= item_bullet (OPTIMIZED OUT) */ assert(yyruleno!=118); - /* (119) list_enum ::= item_enum (OPTIMIZED OUT) */ assert(yyruleno!=119); - /* (120) meta_block ::= LINE_META */ yytestcase(yyruleno==120); - /* (121) meta_line ::= LINE_META */ yytestcase(yyruleno==121); - /* (122) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==122); - /* (123) para ::= LINE_PLAIN */ yytestcase(yyruleno==123); - /* (124) table ::= table_header */ yytestcase(yyruleno==124); - /* (125) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==125); - /* (126) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=126); - /* (127) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=127); - /* (128) row ::= header_rows */ yytestcase(yyruleno==128); - /* (129) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==129); - /* (130) para ::= defs */ yytestcase(yyruleno==130); + /* (85) chunk ::= chunk_line (OPTIMIZED OUT) */ assert(yyruleno!=85); + /* (86) chunk_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==86); + /* (87) nested_chunks ::= nested_chunk (OPTIMIZED OUT) */ assert(yyruleno!=87); + /* (88) nested_chunk ::= empty */ yytestcase(yyruleno==88); + /* (89) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==89); + /* (90) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==90); + /* (91) opt_ext_chunk ::= chunk */ yytestcase(yyruleno==91); + /* (92) tail ::= opt_ext_chunk (OPTIMIZED OUT) */ assert(yyruleno!=92); + /* (93) tail ::= nested_chunks */ yytestcase(yyruleno==93); + /* (94) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==94); + /* (95) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==95); + /* (96) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==96); + /* (97) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==97); + /* (98) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==98); + /* (99) def_glossary ::= LINE_DEF_GLOSSARY */ yytestcase(yyruleno==99); + /* (100) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==100); + /* (101) def_abbreviation ::= LINE_DEF_ABBREVIATION */ yytestcase(yyruleno==101); + /* (102) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=102); + /* (103) empty ::= LINE_EMPTY */ yytestcase(yyruleno==103); + /* (104) fenced_block ::= fenced_3 */ yytestcase(yyruleno==104); + /* (105) fenced_3 ::= LINE_FENCE_BACKTICK_3 */ yytestcase(yyruleno==105); + /* (106) fenced_3 ::= LINE_FENCE_BACKTICK_START_3 */ yytestcase(yyruleno==106); + /* (107) fenced_block ::= fenced_4 */ yytestcase(yyruleno==107); + /* (108) fenced_4 ::= LINE_FENCE_BACKTICK_4 */ yytestcase(yyruleno==108); + /* (109) fenced_4 ::= LINE_FENCE_BACKTICK_START_4 */ yytestcase(yyruleno==109); + /* (110) fenced_block ::= fenced_5 */ yytestcase(yyruleno==110); + /* (111) fenced_5 ::= LINE_FENCE_BACKTICK_5 */ yytestcase(yyruleno==111); + /* (112) fenced_5 ::= LINE_FENCE_BACKTICK_START_5 */ yytestcase(yyruleno==112); + /* (113) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==113); + /* (114) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==114); + /* (115) fenced_line ::= LINE_SETEXT_1 */ yytestcase(yyruleno==115); + /* (116) fenced_line ::= LINE_SETEXT_2 */ yytestcase(yyruleno==116); + /* (117) html_block ::= LINE_HTML */ yytestcase(yyruleno==117); + /* (118) html_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==118); + /* (119) html_line ::= LINE_HTML */ yytestcase(yyruleno==119); + /* (120) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=120); + /* (121) list_bullet ::= item_bullet (OPTIMIZED OUT) */ assert(yyruleno!=121); + /* (122) list_enum ::= item_enum (OPTIMIZED OUT) */ assert(yyruleno!=122); + /* (123) meta_block ::= LINE_META */ yytestcase(yyruleno==123); + /* (124) meta_line ::= LINE_META */ yytestcase(yyruleno==124); + /* (125) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==125); + /* (126) para ::= LINE_PLAIN */ yytestcase(yyruleno==126); + /* (127) table ::= table_header */ yytestcase(yyruleno==127); + /* (128) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==128); + /* (129) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=129); + /* (130) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=130); + /* (131) row ::= header_rows */ yytestcase(yyruleno==131); + /* (132) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==132); + /* (133) para ::= defs */ yytestcase(yyruleno==133); break; /********** End reduce actions ************************************************/ }; diff --git a/Sources/libMultiMarkdown/parser.h b/Sources/libMultiMarkdown/parser.h index 8ad7feb..55917c2 100644 --- a/Sources/libMultiMarkdown/parser.h +++ b/Sources/libMultiMarkdown/parser.h @@ -17,19 +17,20 @@ #define LINE_BLOCKQUOTE 17 #define LINE_LIST_BULLETED 18 #define LINE_LIST_ENUMERATED 19 -#define LINE_DEF_CITATION 20 -#define LINE_DEF_FOOTNOTE 21 -#define LINE_DEF_LINK 22 -#define LINE_FENCE_BACKTICK 23 -#define LINE_FENCE_BACKTICK_START 24 -#define LINE_TOC 25 -#define LINE_DEF_ABBREVIATION 26 -#define LINE_DEFINITION 27 -#define LINE_EMPTY 28 -#define LINE_FENCE_BACKTICK_3 29 -#define LINE_FENCE_BACKTICK_4 30 -#define LINE_FENCE_BACKTICK_5 31 -#define LINE_FENCE_BACKTICK_START_3 32 -#define LINE_FENCE_BACKTICK_START_4 33 -#define LINE_FENCE_BACKTICK_START_5 34 -#define LINE_META 35 +#define LINE_DEF_ABBREVIATION 20 +#define LINE_DEF_CITATION 21 +#define LINE_DEF_FOOTNOTE 22 +#define LINE_DEF_GLOSSARY 23 +#define LINE_DEF_LINK 24 +#define LINE_FENCE_BACKTICK 25 +#define LINE_FENCE_BACKTICK_START 26 +#define LINE_TOC 27 +#define LINE_DEFINITION 28 +#define LINE_EMPTY 29 +#define LINE_FENCE_BACKTICK_3 30 +#define LINE_FENCE_BACKTICK_4 31 +#define LINE_FENCE_BACKTICK_5 32 +#define LINE_FENCE_BACKTICK_START_3 33 +#define LINE_FENCE_BACKTICK_START_4 34 +#define LINE_FENCE_BACKTICK_START_5 35 +#define LINE_META 36 diff --git a/Sources/libMultiMarkdown/parser.out b/Sources/libMultiMarkdown/parser.out index 1d9a8a0..f62e8b2 100644 --- a/Sources/libMultiMarkdown/parser.out +++ b/Sources/libMultiMarkdown/parser.out @@ -14,6 +14,7 @@ State 0: block ::= * def_abbreviation block ::= * def_citation block ::= * def_footnote + block ::= * def_glossary block ::= * def_link block ::= * definition_block block ::= * empty @@ -35,6 +36,8 @@ State 0: def_citation ::= * LINE_DEF_CITATION def_footnote ::= * LINE_DEF_FOOTNOTE tail def_footnote ::= * LINE_DEF_FOOTNOTE + def_glossary ::= * LINE_DEF_GLOSSARY tail + def_glossary ::= * LINE_DEF_GLOSSARY def_link ::= * LINE_DEF_LINK chunk def_link ::= * LINE_DEF_LINK def_abbreviation ::= * LINE_DEF_ABBREVIATION @@ -105,67 +108,69 @@ State 0: para ::= * defs LINE_HR shift-reduce 9 block ::= LINE_HR - LINE_PLAIN shift 15 - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_INDENTED_TAB shift-reduce 87 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_SPACE shift-reduce 88 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_HTML shift-reduce 114 html_block ::= LINE_HTML + LINE_PLAIN shift 16 + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_INDENTED_TAB shift-reduce 89 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_SPACE shift-reduce 90 indented_line ::= LINE_INDENTED_SPACE + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_HTML shift-reduce 117 html_block ::= LINE_HTML LINE_ATX_1 shift-reduce 3 block ::= LINE_ATX_1 LINE_ATX_2 shift-reduce 4 block ::= LINE_ATX_2 LINE_ATX_3 shift-reduce 5 block ::= LINE_ATX_3 LINE_ATX_4 shift-reduce 6 block ::= LINE_ATX_4 LINE_ATX_5 shift-reduce 7 block ::= LINE_ATX_5 LINE_ATX_6 shift-reduce 8 block ::= LINE_ATX_6 - LINE_BLOCKQUOTE shift-reduce 92 blockquote ::= LINE_BLOCKQUOTE - LINE_LIST_BULLETED shift 6 - LINE_LIST_ENUMERATED shift 5 - LINE_DEF_CITATION shift 3 - LINE_DEF_FOOTNOTE shift 2 - LINE_DEF_LINK shift 16 + LINE_BLOCKQUOTE shift-reduce 94 blockquote ::= LINE_BLOCKQUOTE + LINE_LIST_BULLETED shift 7 + LINE_LIST_ENUMERATED shift 6 + LINE_DEF_ABBREVIATION shift-reduce 101 def_abbreviation ::= LINE_DEF_ABBREVIATION + LINE_DEF_CITATION shift 4 + LINE_DEF_FOOTNOTE shift 3 + LINE_DEF_GLOSSARY shift 2 + LINE_DEF_LINK shift 17 LINE_TOC shift-reduce 10 block ::= LINE_TOC - LINE_DEF_ABBREVIATION shift-reduce 98 def_abbreviation ::= LINE_DEF_ABBREVIATION - LINE_DEFINITION shift 4 - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_FENCE_BACKTICK_3 shift-reduce 102 fenced_3 ::= LINE_FENCE_BACKTICK_3 - LINE_FENCE_BACKTICK_4 shift-reduce 105 fenced_4 ::= LINE_FENCE_BACKTICK_4 - LINE_FENCE_BACKTICK_5 shift-reduce 108 fenced_5 ::= LINE_FENCE_BACKTICK_5 - LINE_FENCE_BACKTICK_START_3 shift-reduce 103 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 - LINE_FENCE_BACKTICK_START_4 shift-reduce 106 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 - LINE_FENCE_BACKTICK_START_5 shift-reduce 109 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 - LINE_META shift-reduce 120 meta_block ::= LINE_META + LINE_DEFINITION shift 5 + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_FENCE_BACKTICK_3 shift-reduce 105 fenced_3 ::= LINE_FENCE_BACKTICK_3 + LINE_FENCE_BACKTICK_4 shift-reduce 108 fenced_4 ::= LINE_FENCE_BACKTICK_4 + LINE_FENCE_BACKTICK_5 shift-reduce 111 fenced_5 ::= LINE_FENCE_BACKTICK_5 + LINE_FENCE_BACKTICK_START_3 shift-reduce 106 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 + LINE_FENCE_BACKTICK_START_4 shift-reduce 109 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 + LINE_FENCE_BACKTICK_START_5 shift-reduce 112 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 + LINE_META shift-reduce 123 meta_block ::= LINE_META doc accept blocks shift 1 block shift-reduce 2 blocks ::= block - blockquote shift 30 + blockquote shift 31 def_abbreviation shift-reduce 12 block ::= def_abbreviation def_citation shift-reduce 13 block ::= def_citation def_footnote shift-reduce 14 block ::= def_footnote - def_link shift-reduce 15 block ::= def_link - definition_block shift-reduce 16 block ::= definition_block - empty shift 40 - fenced_block shift-reduce 18 block ::= fenced_block - html_block shift 29 - indented_code shift 27 - list_bullet shift 37 - list_enum shift 35 - meta_block shift 28 - para shift 13 - setext_1 shift-reduce 25 block ::= setext_1 - setext_2 shift-reduce 26 block ::= setext_2 - table shift-reduce 27 block ::= table - indented_line shift 27 /* because indented_line==indented_code */ - defs shift 32 - def shift 32 /* because def==defs */ - fenced_3 shift 25 - fenced_4 shift 24 - fenced_5 shift 23 - item_bullet shift 37 /* because item_bullet==list_bullet */ - item_enum shift 35 /* because item_enum==list_enum */ - table_header shift 7 - header_rows shift 38 - all_rows shift 14 - row shift 14 /* because row==all_rows */ + def_glossary shift-reduce 15 block ::= def_glossary + def_link shift-reduce 16 block ::= def_link + definition_block shift-reduce 17 block ::= definition_block + empty shift 41 + fenced_block shift-reduce 19 block ::= fenced_block + html_block shift 30 + indented_code shift 28 + list_bullet shift 38 + list_enum shift 36 + meta_block shift 29 + para shift 14 + setext_1 shift-reduce 26 block ::= setext_1 + setext_2 shift-reduce 27 block ::= setext_2 + table shift-reduce 28 block ::= table + indented_line shift 28 /* because indented_line==indented_code */ + defs shift 33 + def shift 33 /* because def==defs */ + fenced_3 shift 26 + fenced_4 shift 25 + fenced_5 shift 24 + item_bullet shift 38 /* because item_bullet==list_bullet */ + item_enum shift 36 /* because item_enum==list_enum */ + table_header shift 8 + header_rows shift 39 + all_rows shift 15 + row shift 15 /* because row==all_rows */ State 1: (0) doc ::= blocks * @@ -182,6 +187,7 @@ State 1: block ::= * def_abbreviation block ::= * def_citation block ::= * def_footnote + block ::= * def_glossary block ::= * def_link block ::= * definition_block block ::= * empty @@ -203,6 +209,8 @@ State 1: def_citation ::= * LINE_DEF_CITATION def_footnote ::= * LINE_DEF_FOOTNOTE tail def_footnote ::= * LINE_DEF_FOOTNOTE + def_glossary ::= * LINE_DEF_GLOSSARY tail + def_glossary ::= * LINE_DEF_GLOSSARY def_link ::= * LINE_DEF_LINK chunk def_link ::= * LINE_DEF_LINK def_abbreviation ::= * LINE_DEF_ABBREVIATION @@ -274,65 +282,67 @@ State 1: $ reduce 0 doc ::= blocks LINE_HR shift-reduce 9 block ::= LINE_HR - LINE_PLAIN shift 15 - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_INDENTED_TAB shift-reduce 87 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_SPACE shift-reduce 88 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_HTML shift-reduce 114 html_block ::= LINE_HTML + LINE_PLAIN shift 16 + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_INDENTED_TAB shift-reduce 89 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_SPACE shift-reduce 90 indented_line ::= LINE_INDENTED_SPACE + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_HTML shift-reduce 117 html_block ::= LINE_HTML LINE_ATX_1 shift-reduce 3 block ::= LINE_ATX_1 LINE_ATX_2 shift-reduce 4 block ::= LINE_ATX_2 LINE_ATX_3 shift-reduce 5 block ::= LINE_ATX_3 LINE_ATX_4 shift-reduce 6 block ::= LINE_ATX_4 LINE_ATX_5 shift-reduce 7 block ::= LINE_ATX_5 LINE_ATX_6 shift-reduce 8 block ::= LINE_ATX_6 - LINE_BLOCKQUOTE shift-reduce 92 blockquote ::= LINE_BLOCKQUOTE - LINE_LIST_BULLETED shift 6 - LINE_LIST_ENUMERATED shift 5 - LINE_DEF_CITATION shift 3 - LINE_DEF_FOOTNOTE shift 2 - LINE_DEF_LINK shift 16 + LINE_BLOCKQUOTE shift-reduce 94 blockquote ::= LINE_BLOCKQUOTE + LINE_LIST_BULLETED shift 7 + LINE_LIST_ENUMERATED shift 6 + LINE_DEF_ABBREVIATION shift-reduce 101 def_abbreviation ::= LINE_DEF_ABBREVIATION + LINE_DEF_CITATION shift 4 + LINE_DEF_FOOTNOTE shift 3 + LINE_DEF_GLOSSARY shift 2 + LINE_DEF_LINK shift 17 LINE_TOC shift-reduce 10 block ::= LINE_TOC - LINE_DEF_ABBREVIATION shift-reduce 98 def_abbreviation ::= LINE_DEF_ABBREVIATION - LINE_DEFINITION shift 4 - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_FENCE_BACKTICK_3 shift-reduce 102 fenced_3 ::= LINE_FENCE_BACKTICK_3 - LINE_FENCE_BACKTICK_4 shift-reduce 105 fenced_4 ::= LINE_FENCE_BACKTICK_4 - LINE_FENCE_BACKTICK_5 shift-reduce 108 fenced_5 ::= LINE_FENCE_BACKTICK_5 - LINE_FENCE_BACKTICK_START_3 shift-reduce 103 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 - LINE_FENCE_BACKTICK_START_4 shift-reduce 106 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 - LINE_FENCE_BACKTICK_START_5 shift-reduce 109 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 - LINE_META shift-reduce 120 meta_block ::= LINE_META + LINE_DEFINITION shift 5 + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_FENCE_BACKTICK_3 shift-reduce 105 fenced_3 ::= LINE_FENCE_BACKTICK_3 + LINE_FENCE_BACKTICK_4 shift-reduce 108 fenced_4 ::= LINE_FENCE_BACKTICK_4 + LINE_FENCE_BACKTICK_5 shift-reduce 111 fenced_5 ::= LINE_FENCE_BACKTICK_5 + LINE_FENCE_BACKTICK_START_3 shift-reduce 106 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 + LINE_FENCE_BACKTICK_START_4 shift-reduce 109 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 + LINE_FENCE_BACKTICK_START_5 shift-reduce 112 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 + LINE_META shift-reduce 123 meta_block ::= LINE_META block shift-reduce 1 blocks ::= blocks block - blockquote shift 30 + blockquote shift 31 def_abbreviation shift-reduce 12 block ::= def_abbreviation def_citation shift-reduce 13 block ::= def_citation def_footnote shift-reduce 14 block ::= def_footnote - def_link shift-reduce 15 block ::= def_link - definition_block shift-reduce 16 block ::= definition_block - empty shift 40 - fenced_block shift-reduce 18 block ::= fenced_block - html_block shift 29 - indented_code shift 27 - list_bullet shift 37 - list_enum shift 35 - meta_block shift 28 - para shift 13 - setext_1 shift-reduce 25 block ::= setext_1 - setext_2 shift-reduce 26 block ::= setext_2 - table shift-reduce 27 block ::= table - indented_line shift 27 /* because indented_line==indented_code */ - defs shift 32 - def shift 32 /* because def==defs */ - fenced_3 shift 25 - fenced_4 shift 24 - fenced_5 shift 23 - item_bullet shift 37 /* because item_bullet==list_bullet */ - item_enum shift 35 /* because item_enum==list_enum */ - table_header shift 7 - header_rows shift 38 - all_rows shift 14 - row shift 14 /* because row==all_rows */ + def_glossary shift-reduce 15 block ::= def_glossary + def_link shift-reduce 16 block ::= def_link + definition_block shift-reduce 17 block ::= definition_block + empty shift 41 + fenced_block shift-reduce 19 block ::= fenced_block + html_block shift 30 + indented_code shift 28 + list_bullet shift 38 + list_enum shift 36 + meta_block shift 29 + para shift 14 + setext_1 shift-reduce 26 block ::= setext_1 + setext_2 shift-reduce 27 block ::= setext_2 + table shift-reduce 28 block ::= table + indented_line shift 28 /* because indented_line==indented_code */ + defs shift 33 + def shift 33 /* because def==defs */ + fenced_3 shift 26 + fenced_4 shift 25 + fenced_5 shift 24 + item_bullet shift 38 /* because item_bullet==list_bullet */ + item_enum shift 36 /* because item_enum==list_enum */ + table_header shift 8 + header_rows shift 39 + all_rows shift 15 + row shift 15 /* because row==all_rows */ State 2: chunk ::= * chunk chunk_line @@ -347,22 +357,22 @@ State 2: opt_ext_chunk ::= * chunk tail ::= * opt_ext_chunk tail ::= * nested_chunks - def_footnote ::= LINE_DEF_FOOTNOTE * tail - (96) def_footnote ::= LINE_DEF_FOOTNOTE * + def_glossary ::= LINE_DEF_GLOSSARY * tail + (99) def_glossary ::= LINE_DEF_GLOSSARY * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 96 ** Parsing conflict ** - empty shift 26 - chunk shift 9 - chunk_line shift 9 /* because chunk_line==chunk */ - nested_chunks shift 17 - nested_chunk shift 17 /* because nested_chunk==nested_chunks */ - opt_ext_chunk shift-reduce 36 def_footnote ::= LINE_DEF_FOOTNOTE tail /* because opt_ext_chunk==tail */ - tail shift-reduce 36 def_footnote ::= LINE_DEF_FOOTNOTE tail - {default} reduce 96 def_footnote ::= LINE_DEF_FOOTNOTE + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 99 ** Parsing conflict ** + empty shift 27 + chunk shift 10 + chunk_line shift 10 /* because chunk_line==chunk */ + nested_chunks shift 18 + nested_chunk shift 18 /* because nested_chunk==nested_chunks */ + opt_ext_chunk shift-reduce 38 def_glossary ::= LINE_DEF_GLOSSARY tail /* because opt_ext_chunk==tail */ + tail shift-reduce 38 def_glossary ::= LINE_DEF_GLOSSARY tail + {default} reduce 99 def_glossary ::= LINE_DEF_GLOSSARY State 3: chunk ::= * chunk chunk_line @@ -377,22 +387,22 @@ State 3: opt_ext_chunk ::= * chunk tail ::= * opt_ext_chunk tail ::= * nested_chunks - def_citation ::= LINE_DEF_CITATION * tail - (95) def_citation ::= LINE_DEF_CITATION * + def_footnote ::= LINE_DEF_FOOTNOTE * tail + (98) def_footnote ::= LINE_DEF_FOOTNOTE * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 95 ** Parsing conflict ** - empty shift 26 - chunk shift 9 - chunk_line shift 9 /* because chunk_line==chunk */ - nested_chunks shift 17 - nested_chunk shift 17 /* because nested_chunk==nested_chunks */ - opt_ext_chunk shift-reduce 35 def_citation ::= LINE_DEF_CITATION tail /* because opt_ext_chunk==tail */ - tail shift-reduce 35 def_citation ::= LINE_DEF_CITATION tail - {default} reduce 95 def_citation ::= LINE_DEF_CITATION + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 98 ** Parsing conflict ** + empty shift 27 + chunk shift 10 + chunk_line shift 10 /* because chunk_line==chunk */ + nested_chunks shift 18 + nested_chunk shift 18 /* because nested_chunk==nested_chunks */ + opt_ext_chunk shift-reduce 37 def_footnote ::= LINE_DEF_FOOTNOTE tail /* because opt_ext_chunk==tail */ + tail shift-reduce 37 def_footnote ::= LINE_DEF_FOOTNOTE tail + {default} reduce 98 def_footnote ::= LINE_DEF_FOOTNOTE State 4: chunk ::= * chunk chunk_line @@ -407,22 +417,22 @@ State 4: opt_ext_chunk ::= * chunk tail ::= * opt_ext_chunk tail ::= * nested_chunks - def ::= LINE_DEFINITION * tail - (41) def ::= LINE_DEFINITION * + def_citation ::= LINE_DEF_CITATION * tail + (97) def_citation ::= LINE_DEF_CITATION * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 41 ** Parsing conflict ** - empty shift 26 - chunk shift 9 - chunk_line shift 9 /* because chunk_line==chunk */ - nested_chunks shift 17 - nested_chunk shift 17 /* because nested_chunk==nested_chunks */ - opt_ext_chunk shift-reduce 40 def ::= LINE_DEFINITION tail /* because opt_ext_chunk==tail */ - tail shift-reduce 40 def ::= LINE_DEFINITION tail - {default} reduce 41 def ::= LINE_DEFINITION + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 97 ** Parsing conflict ** + empty shift 27 + chunk shift 10 + chunk_line shift 10 /* because chunk_line==chunk */ + nested_chunks shift 18 + nested_chunk shift 18 /* because nested_chunk==nested_chunks */ + opt_ext_chunk shift-reduce 36 def_citation ::= LINE_DEF_CITATION tail /* because opt_ext_chunk==tail */ + tail shift-reduce 36 def_citation ::= LINE_DEF_CITATION tail + {default} reduce 97 def_citation ::= LINE_DEF_CITATION State 5: chunk ::= * chunk chunk_line @@ -433,24 +443,26 @@ State 5: nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty - ext_chunk ::= * chunk nested_chunks + opt_ext_chunk ::= * chunk nested_chunks + opt_ext_chunk ::= * chunk + tail ::= * opt_ext_chunk + tail ::= * nested_chunks + def ::= LINE_DEFINITION * tail + (43) def ::= LINE_DEFINITION * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - item_enum ::= LINE_LIST_ENUMERATED * ext_chunk - item_enum ::= LINE_LIST_ENUMERATED * chunk - item_enum ::= LINE_LIST_ENUMERATED * nested_chunks - (70) item_enum ::= LINE_LIST_ENUMERATED * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 70 ** Parsing conflict ** - empty shift 26 + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 43 ** Parsing conflict ** + empty shift 27 chunk shift 10 chunk_line shift 10 /* because chunk_line==chunk */ - nested_chunks shift 19 - nested_chunk shift 19 /* because nested_chunk==nested_chunks */ - ext_chunk shift-reduce 67 item_enum ::= LINE_LIST_ENUMERATED ext_chunk - {default} reduce 70 item_enum ::= LINE_LIST_ENUMERATED + nested_chunks shift 18 + nested_chunk shift 18 /* because nested_chunk==nested_chunks */ + opt_ext_chunk shift-reduce 42 def ::= LINE_DEFINITION tail /* because opt_ext_chunk==tail */ + tail shift-reduce 42 def ::= LINE_DEFINITION tail + {default} reduce 43 def ::= LINE_DEFINITION State 6: chunk ::= * chunk chunk_line @@ -464,25 +476,53 @@ State 6: ext_chunk ::= * chunk nested_chunks empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - item_bullet ::= LINE_LIST_BULLETED * ext_chunk - item_bullet ::= LINE_LIST_BULLETED * chunk - item_bullet ::= LINE_LIST_BULLETED * nested_chunks - (65) item_bullet ::= LINE_LIST_BULLETED * + item_enum ::= LINE_LIST_ENUMERATED * ext_chunk + item_enum ::= LINE_LIST_ENUMERATED * chunk + item_enum ::= LINE_LIST_ENUMERATED * nested_chunks + (72) item_enum ::= LINE_LIST_ENUMERATED * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 65 ** Parsing conflict ** - empty shift 26 + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 72 ** Parsing conflict ** + empty shift 27 chunk shift 11 chunk_line shift 11 /* because chunk_line==chunk */ nested_chunks shift 20 nested_chunk shift 20 /* because nested_chunk==nested_chunks */ - ext_chunk shift-reduce 62 item_bullet ::= LINE_LIST_BULLETED ext_chunk - {default} reduce 65 item_bullet ::= LINE_LIST_BULLETED + ext_chunk shift-reduce 69 item_enum ::= LINE_LIST_ENUMERATED ext_chunk + {default} reduce 72 item_enum ::= LINE_LIST_ENUMERATED State 7: + chunk ::= * chunk chunk_line + chunk ::= * chunk_line + chunk_line ::= * LINE_CONTINUATION + nested_chunks ::= * nested_chunks nested_chunk + nested_chunks ::= * nested_chunk + nested_chunk ::= * empty indented_line chunk + nested_chunk ::= * empty indented_line + nested_chunk ::= * empty + ext_chunk ::= * chunk nested_chunks + empty ::= * empty LINE_EMPTY + empty ::= * LINE_EMPTY + item_bullet ::= LINE_LIST_BULLETED * ext_chunk + item_bullet ::= LINE_LIST_BULLETED * chunk + item_bullet ::= LINE_LIST_BULLETED * nested_chunks + (67) item_bullet ::= LINE_LIST_BULLETED * + + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 67 ** Parsing conflict ** + empty shift 27 + chunk shift 12 + chunk_line shift 12 /* because chunk_line==chunk */ + nested_chunks shift 21 + nested_chunk shift 21 /* because nested_chunk==nested_chunks */ + ext_chunk shift-reduce 64 item_bullet ::= LINE_LIST_BULLETED ext_chunk + {default} reduce 67 item_bullet ::= LINE_LIST_BULLETED + +State 8: table ::= table_header * table_body - (124) table ::= table_header * + (127) table ::= table_header * header_rows ::= * header_rows LINE_TABLE header_rows ::= * LINE_TABLE table_body ::= * table_body table_section @@ -494,19 +534,19 @@ State 7: row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 124 ** Parsing conflict ** - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_TABLE reduce 124 ** Parsing conflict ** - table_body shift 8 - header_rows shift 39 - table_section shift 8 /* because table_section==table_body */ - all_rows shift 12 - row shift 12 /* because row==all_rows */ - {default} reduce 124 table ::= table_header + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 127 ** Parsing conflict ** + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_TABLE reduce 127 ** Parsing conflict ** + table_body shift 9 + header_rows shift 40 + table_section shift 9 /* because table_section==table_body */ + all_rows shift 13 + row shift 13 /* because row==all_rows */ + {default} reduce 127 table ::= table_header -State 8: - (75) table ::= table_header table_body * +State 9: + (77) table ::= table_header table_body * header_rows ::= * header_rows LINE_TABLE header_rows ::= * LINE_TABLE table_body ::= table_body * table_section @@ -517,17 +557,17 @@ State 8: row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 75 ** Parsing conflict ** - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_TABLE reduce 75 ** Parsing conflict ** - header_rows shift 39 - table_section shift-reduce 78 table_body ::= table_body table_section - all_rows shift 12 - row shift 12 /* because row==all_rows */ - {default} reduce 75 table ::= table_header table_body + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 77 ** Parsing conflict ** + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_TABLE reduce 77 ** Parsing conflict ** + header_rows shift 40 + table_section shift-reduce 80 table_body ::= table_body table_section + all_rows shift 13 + row shift 13 /* because row==all_rows */ + {default} reduce 77 table ::= table_header table_body -State 9: +State 10: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION nested_chunks ::= * nested_chunks nested_chunk @@ -536,20 +576,20 @@ State 9: nested_chunk ::= * empty indented_line nested_chunk ::= * empty opt_ext_chunk ::= chunk * nested_chunks - (89) opt_ext_chunk ::= chunk * + (91) opt_ext_chunk ::= chunk * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 89 ** Parsing conflict ** - empty shift 26 - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - nested_chunks shift 18 - nested_chunk shift 18 /* because nested_chunk==nested_chunks */ - {default} reduce 89 opt_ext_chunk ::= chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 91 ** Parsing conflict ** + empty shift 27 + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + nested_chunks shift 19 + nested_chunk shift 19 /* because nested_chunk==nested_chunks */ + {default} reduce 91 opt_ext_chunk ::= chunk -State 10: +State 11: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION nested_chunks ::= * nested_chunks nested_chunk @@ -560,18 +600,18 @@ State 10: ext_chunk ::= chunk * nested_chunks empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - (68) item_enum ::= LINE_LIST_ENUMERATED chunk * + (70) item_enum ::= LINE_LIST_ENUMERATED chunk * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 68 ** Parsing conflict ** - empty shift 26 - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - nested_chunks shift 22 - nested_chunk shift 22 /* because nested_chunk==nested_chunks */ - {default} reduce 68 item_enum ::= LINE_LIST_ENUMERATED chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 70 ** Parsing conflict ** + empty shift 27 + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + nested_chunks shift 23 + nested_chunk shift 23 /* because nested_chunk==nested_chunks */ + {default} reduce 70 item_enum ::= LINE_LIST_ENUMERATED chunk -State 11: +State 12: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION nested_chunks ::= * nested_chunks nested_chunk @@ -582,38 +622,38 @@ State 11: ext_chunk ::= chunk * nested_chunks empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - (63) item_bullet ::= LINE_LIST_BULLETED chunk * + (65) item_bullet ::= LINE_LIST_BULLETED chunk * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 63 ** Parsing conflict ** - empty shift 26 - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - nested_chunks shift 22 - nested_chunk shift 22 /* because nested_chunk==nested_chunks */ - {default} reduce 63 item_bullet ::= LINE_LIST_BULLETED chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 65 ** Parsing conflict ** + empty shift 27 + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + nested_chunks shift 23 + nested_chunk shift 23 /* because nested_chunk==nested_chunks */ + {default} reduce 65 item_bullet ::= LINE_LIST_BULLETED chunk -State 12: +State 13: header_rows ::= * header_rows LINE_TABLE header_rows ::= * LINE_TABLE table_section ::= all_rows * LINE_EMPTY - (80) table_section ::= all_rows * + (82) table_section ::= all_rows * all_rows ::= all_rows * row row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 80 ** Parsing conflict ** - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_TABLE reduce 80 ** Parsing conflict ** - LINE_EMPTY shift-reduce 79 table_section ::= all_rows LINE_EMPTY - LINE_EMPTY reduce 80 ** Parsing conflict ** - header_rows shift 39 - row shift-reduce 81 all_rows ::= all_rows row - {default} reduce 80 table_section ::= all_rows + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 82 ** Parsing conflict ** + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_TABLE reduce 82 ** Parsing conflict ** + LINE_EMPTY shift-reduce 81 table_section ::= all_rows LINE_EMPTY + LINE_EMPTY reduce 82 ** Parsing conflict ** + header_rows shift 40 + row shift-reduce 83 all_rows ::= all_rows row + {default} reduce 82 table_section ::= all_rows -State 13: - (24) block ::= para * +State 14: + (25) block ::= para * definition_block ::= para * defs defs ::= * defs def defs ::= * def @@ -622,144 +662,144 @@ State 13: setext_1 ::= para * LINE_SETEXT_1 setext_2 ::= para * LINE_SETEXT_2 - LINE_SETEXT_1 shift-reduce 73 setext_1 ::= para LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 74 setext_2 ::= para LINE_SETEXT_2 - LINE_DEFINITION shift 4 - LINE_DEFINITION reduce 24 ** Parsing conflict ** - defs shift 34 - def shift 34 /* because def==defs */ - {default} reduce 24 block ::= para + LINE_SETEXT_1 shift-reduce 75 setext_1 ::= para LINE_SETEXT_1 + LINE_SETEXT_2 shift-reduce 76 setext_2 ::= para LINE_SETEXT_2 + LINE_DEFINITION shift 5 + LINE_DEFINITION reduce 25 ** Parsing conflict ** + defs shift 35 + def shift 35 /* because def==defs */ + {default} reduce 25 block ::= para -State 14: +State 15: header_rows ::= * header_rows LINE_TABLE header_rows ::= * LINE_TABLE all_rows ::= all_rows * row row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - (82) para ::= all_rows * + (84) para ::= all_rows * - LINE_TABLE_SEPARATOR shift-reduce 129 row ::= LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 82 ** Parsing conflict ** - LINE_TABLE shift-reduce 125 header_rows ::= LINE_TABLE - LINE_TABLE reduce 82 ** Parsing conflict ** - header_rows shift 39 - row shift-reduce 81 all_rows ::= all_rows row - {default} reduce 82 para ::= all_rows + LINE_TABLE_SEPARATOR shift-reduce 132 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 84 ** Parsing conflict ** + LINE_TABLE shift-reduce 128 header_rows ::= LINE_TABLE + LINE_TABLE reduce 84 ** Parsing conflict ** + header_rows shift 40 + row shift-reduce 83 all_rows ::= all_rows row + {default} reduce 84 para ::= all_rows -State 15: +State 16: chunk ::= * chunk chunk_line chunk ::= * chunk_line chunk_line ::= * LINE_CONTINUATION para ::= LINE_PLAIN * chunk - (123) para ::= LINE_PLAIN * + (126) para ::= LINE_PLAIN * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk shift 31 - chunk_line shift 31 /* because chunk_line==chunk */ - {default} reduce 123 para ::= LINE_PLAIN + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk shift 32 + chunk_line shift 32 /* because chunk_line==chunk */ + {default} reduce 126 para ::= LINE_PLAIN -State 16: +State 17: chunk ::= * chunk chunk_line chunk ::= * chunk_line chunk_line ::= * LINE_CONTINUATION def_link ::= LINE_DEF_LINK * chunk - (97) def_link ::= LINE_DEF_LINK * + (100) def_link ::= LINE_DEF_LINK * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk shift 33 - chunk_line shift 33 /* because chunk_line==chunk */ - {default} reduce 97 def_link ::= LINE_DEF_LINK + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk shift 34 + chunk_line shift 34 /* because chunk_line==chunk */ + {default} reduce 100 def_link ::= LINE_DEF_LINK -State 17: +State 18: nested_chunks ::= nested_chunks * nested_chunk nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty - (91) tail ::= nested_chunks * + (93) tail ::= nested_chunks * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 91 ** Parsing conflict ** - empty shift 26 - nested_chunk shift-reduce 29 nested_chunks ::= nested_chunks nested_chunk - {default} reduce 91 tail ::= nested_chunks + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 93 ** Parsing conflict ** + empty shift 27 + nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk + {default} reduce 93 tail ::= nested_chunks -State 18: +State 19: nested_chunks ::= nested_chunks * nested_chunk nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty - (33) opt_ext_chunk ::= chunk nested_chunks * + (34) opt_ext_chunk ::= chunk nested_chunks * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 33 ** Parsing conflict ** - empty shift 26 - nested_chunk shift-reduce 29 nested_chunks ::= nested_chunks nested_chunk - {default} reduce 33 opt_ext_chunk ::= chunk nested_chunks + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 34 ** Parsing conflict ** + empty shift 27 + nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk + {default} reduce 34 opt_ext_chunk ::= chunk nested_chunks -State 19: +State 20: nested_chunks ::= nested_chunks * nested_chunk nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - (69) item_enum ::= LINE_LIST_ENUMERATED nested_chunks * + (71) item_enum ::= LINE_LIST_ENUMERATED nested_chunks * - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 69 ** Parsing conflict ** - empty shift 26 - nested_chunk shift-reduce 29 nested_chunks ::= nested_chunks nested_chunk - {default} reduce 69 item_enum ::= LINE_LIST_ENUMERATED nested_chunks + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 71 ** Parsing conflict ** + empty shift 27 + nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk + {default} reduce 71 item_enum ::= LINE_LIST_ENUMERATED nested_chunks -State 20: +State 21: nested_chunks ::= nested_chunks * nested_chunk nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - (64) item_bullet ::= LINE_LIST_BULLETED nested_chunks * + (66) item_bullet ::= LINE_LIST_BULLETED nested_chunks * - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 64 ** Parsing conflict ** - empty shift 26 - nested_chunk shift-reduce 29 nested_chunks ::= nested_chunks nested_chunk - {default} reduce 64 item_bullet ::= LINE_LIST_BULLETED nested_chunks + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 66 ** Parsing conflict ** + empty shift 27 + nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk + {default} reduce 66 item_bullet ::= LINE_LIST_BULLETED nested_chunks -State 21: +State 22: chunk ::= * chunk chunk_line chunk ::= * chunk_line chunk_line ::= * LINE_CONTINUATION nested_chunk ::= empty indented_line * chunk - (31) nested_chunk ::= empty indented_line * + (32) nested_chunk ::= empty indented_line * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk shift 36 - chunk_line shift 36 /* because chunk_line==chunk */ - {default} reduce 31 nested_chunk ::= empty indented_line + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk shift 37 + chunk_line shift 37 /* because chunk_line==chunk */ + {default} reduce 32 nested_chunk ::= empty indented_line -State 22: +State 23: nested_chunks ::= nested_chunks * nested_chunk nested_chunk ::= * empty indented_line chunk nested_chunk ::= * empty indented_line nested_chunk ::= * empty - (32) ext_chunk ::= chunk nested_chunks * + (33) ext_chunk ::= chunk nested_chunks * empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY - LINE_EMPTY shift-reduce 100 empty ::= LINE_EMPTY - LINE_EMPTY reduce 32 ** Parsing conflict ** - empty shift 26 - nested_chunk shift-reduce 29 nested_chunks ::= nested_chunks nested_chunk - {default} reduce 32 ext_chunk ::= chunk nested_chunks + LINE_EMPTY shift-reduce 103 empty ::= LINE_EMPTY + LINE_EMPTY reduce 33 ** Parsing conflict ** + empty shift 27 + nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk + {default} reduce 33 ext_chunk ::= chunk nested_chunks -State 23: +State 24: fenced_block ::= fenced_5 * LINE_FENCE_BACKTICK_5 - (107) fenced_block ::= fenced_5 * + (110) fenced_block ::= fenced_5 * fenced_5 ::= fenced_5 * fenced_line fenced_5 ::= fenced_5 * LINE_FENCE_BACKTICK_3 fenced_5 ::= fenced_5 * LINE_FENCE_BACKTICK_START_3 @@ -770,28 +810,28 @@ State 23: fenced_line ::= * LINE_SETEXT_1 fenced_line ::= * LINE_SETEXT_2 - LINE_SETEXT_1 shift-reduce 112 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 113 fenced_line ::= LINE_SETEXT_2 - LINE_CONTINUATION shift-reduce 110 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 111 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 107 ** Parsing conflict ** - LINE_FENCE_BACKTICK_3 shift-reduce 54 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3 - LINE_FENCE_BACKTICK_3 reduce 107 ** Parsing conflict ** - LINE_FENCE_BACKTICK_4 shift-reduce 56 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4 - LINE_FENCE_BACKTICK_4 reduce 107 ** Parsing conflict ** - LINE_FENCE_BACKTICK_5 shift-reduce 52 fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5 - LINE_FENCE_BACKTICK_5 reduce 107 ** Parsing conflict ** - LINE_FENCE_BACKTICK_START_3 shift-reduce 55 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3 - LINE_FENCE_BACKTICK_START_3 reduce 107 ** Parsing conflict ** - LINE_FENCE_BACKTICK_START_4 shift-reduce 57 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4 - LINE_FENCE_BACKTICK_START_4 reduce 107 ** Parsing conflict ** - fenced_line shift-reduce 53 fenced_5 ::= fenced_5 fenced_line - {default} reduce 107 fenced_block ::= fenced_5 + LINE_SETEXT_1 shift-reduce 115 fenced_line ::= LINE_SETEXT_1 + LINE_SETEXT_2 shift-reduce 116 fenced_line ::= LINE_SETEXT_2 + LINE_CONTINUATION shift-reduce 113 fenced_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 114 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 110 ** Parsing conflict ** + LINE_FENCE_BACKTICK_3 shift-reduce 56 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3 + LINE_FENCE_BACKTICK_3 reduce 110 ** Parsing conflict ** + LINE_FENCE_BACKTICK_4 shift-reduce 58 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4 + LINE_FENCE_BACKTICK_4 reduce 110 ** Parsing conflict ** + LINE_FENCE_BACKTICK_5 shift-reduce 54 fenced_block ::= fenced_5 LINE_FENCE_BACKTICK_5 + LINE_FENCE_BACKTICK_5 reduce 110 ** Parsing conflict ** + LINE_FENCE_BACKTICK_START_3 shift-reduce 57 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_3 + LINE_FENCE_BACKTICK_START_3 reduce 110 ** Parsing conflict ** + LINE_FENCE_BACKTICK_START_4 shift-reduce 59 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4 + LINE_FENCE_BACKTICK_START_4 reduce 110 ** Parsing conflict ** + fenced_line shift-reduce 55 fenced_5 ::= fenced_5 fenced_line + {default} reduce 110 fenced_block ::= fenced_5 -State 24: +State 25: fenced_block ::= fenced_4 * LINE_FENCE_BACKTICK_4 fenced_block ::= fenced_4 * LINE_FENCE_BACKTICK_5 - (104) fenced_block ::= fenced_4 * + (107) fenced_block ::= fenced_4 * fenced_4 ::= fenced_4 * fenced_line fenced_4 ::= fenced_4 * LINE_FENCE_BACKTICK_3 fenced_4 ::= fenced_4 * LINE_FENCE_BACKTICK_START_3 @@ -800,217 +840,217 @@ State 24: fenced_line ::= * LINE_SETEXT_1 fenced_line ::= * LINE_SETEXT_2 - LINE_SETEXT_1 shift-reduce 112 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 113 fenced_line ::= LINE_SETEXT_2 - LINE_CONTINUATION shift-reduce 110 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 111 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 104 ** Parsing conflict ** - LINE_FENCE_BACKTICK_3 shift-reduce 50 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3 - LINE_FENCE_BACKTICK_3 reduce 104 ** Parsing conflict ** - LINE_FENCE_BACKTICK_4 shift-reduce 47 fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4 - LINE_FENCE_BACKTICK_4 reduce 104 ** Parsing conflict ** - LINE_FENCE_BACKTICK_5 shift-reduce 48 fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5 - LINE_FENCE_BACKTICK_5 reduce 104 ** Parsing conflict ** - LINE_FENCE_BACKTICK_START_3 shift-reduce 51 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3 - LINE_FENCE_BACKTICK_START_3 reduce 104 ** Parsing conflict ** - fenced_line shift-reduce 49 fenced_4 ::= fenced_4 fenced_line - {default} reduce 104 fenced_block ::= fenced_4 + LINE_SETEXT_1 shift-reduce 115 fenced_line ::= LINE_SETEXT_1 + LINE_SETEXT_2 shift-reduce 116 fenced_line ::= LINE_SETEXT_2 + LINE_CONTINUATION shift-reduce 113 fenced_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 114 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 107 ** Parsing conflict ** + LINE_FENCE_BACKTICK_3 shift-reduce 52 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3 + LINE_FENCE_BACKTICK_3 reduce 107 ** Parsing conflict ** + LINE_FENCE_BACKTICK_4 shift-reduce 49 fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4 + LINE_FENCE_BACKTICK_4 reduce 107 ** Parsing conflict ** + LINE_FENCE_BACKTICK_5 shift-reduce 50 fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_5 + LINE_FENCE_BACKTICK_5 reduce 107 ** Parsing conflict ** + LINE_FENCE_BACKTICK_START_3 shift-reduce 53 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3 + LINE_FENCE_BACKTICK_START_3 reduce 107 ** Parsing conflict ** + fenced_line shift-reduce 51 fenced_4 ::= fenced_4 fenced_line + {default} reduce 107 fenced_block ::= fenced_4 -State 25: +State 26: fenced_block ::= fenced_3 * LINE_FENCE_BACKTICK_3 fenced_block ::= fenced_3 * LINE_FENCE_BACKTICK_4 fenced_block ::= fenced_3 * LINE_FENCE_BACKTICK_5 - (101) fenced_block ::= fenced_3 * + (104) fenced_block ::= fenced_3 * fenced_3 ::= fenced_3 * fenced_line fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY fenced_line ::= * LINE_SETEXT_1 fenced_line ::= * LINE_SETEXT_2 - LINE_SETEXT_1 shift-reduce 112 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 113 fenced_line ::= LINE_SETEXT_2 - LINE_CONTINUATION shift-reduce 110 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 111 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 101 ** Parsing conflict ** - LINE_FENCE_BACKTICK_3 shift-reduce 43 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3 - LINE_FENCE_BACKTICK_3 reduce 101 ** Parsing conflict ** - LINE_FENCE_BACKTICK_4 shift-reduce 44 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4 - LINE_FENCE_BACKTICK_4 reduce 101 ** Parsing conflict ** - LINE_FENCE_BACKTICK_5 shift-reduce 45 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5 - LINE_FENCE_BACKTICK_5 reduce 101 ** Parsing conflict ** - fenced_line shift-reduce 46 fenced_3 ::= fenced_3 fenced_line - {default} reduce 101 fenced_block ::= fenced_3 + LINE_SETEXT_1 shift-reduce 115 fenced_line ::= LINE_SETEXT_1 + LINE_SETEXT_2 shift-reduce 116 fenced_line ::= LINE_SETEXT_2 + LINE_CONTINUATION shift-reduce 113 fenced_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 114 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 104 ** Parsing conflict ** + LINE_FENCE_BACKTICK_3 shift-reduce 45 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3 + LINE_FENCE_BACKTICK_3 reduce 104 ** Parsing conflict ** + LINE_FENCE_BACKTICK_4 shift-reduce 46 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4 + LINE_FENCE_BACKTICK_4 reduce 104 ** Parsing conflict ** + LINE_FENCE_BACKTICK_5 shift-reduce 47 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5 + LINE_FENCE_BACKTICK_5 reduce 104 ** Parsing conflict ** + fenced_line shift-reduce 48 fenced_3 ::= fenced_3 fenced_line + {default} reduce 104 fenced_block ::= fenced_3 -State 26: +State 27: nested_chunk ::= empty * indented_line chunk nested_chunk ::= empty * indented_line - (86) nested_chunk ::= empty * + (88) nested_chunk ::= empty * indented_line ::= * LINE_INDENTED_TAB indented_line ::= * LINE_INDENTED_SPACE empty ::= empty * LINE_EMPTY - LINE_INDENTED_TAB shift-reduce 87 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_TAB reduce 86 ** Parsing conflict ** - LINE_INDENTED_SPACE shift-reduce 88 indented_line ::= LINE_INDENTED_SPACE - LINE_INDENTED_SPACE reduce 86 ** Parsing conflict ** - LINE_EMPTY shift-reduce 42 empty ::= empty LINE_EMPTY - LINE_EMPTY reduce 86 ** Parsing conflict ** - indented_line shift 21 - {default} reduce 86 nested_chunk ::= empty + LINE_INDENTED_TAB shift-reduce 89 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_TAB reduce 88 ** Parsing conflict ** + LINE_INDENTED_SPACE shift-reduce 90 indented_line ::= LINE_INDENTED_SPACE + LINE_INDENTED_SPACE reduce 88 ** Parsing conflict ** + LINE_EMPTY shift-reduce 44 empty ::= empty LINE_EMPTY + LINE_EMPTY reduce 88 ** Parsing conflict ** + indented_line shift 22 + {default} reduce 88 nested_chunk ::= empty -State 27: - (20) block ::= indented_code * +State 28: + (21) block ::= indented_code * indented_line ::= * LINE_INDENTED_TAB indented_line ::= * LINE_INDENTED_SPACE indented_code ::= indented_code * indented_line indented_code ::= indented_code * LINE_EMPTY - LINE_INDENTED_TAB shift-reduce 87 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_TAB reduce 20 ** Parsing conflict ** - LINE_INDENTED_SPACE shift-reduce 88 indented_line ::= LINE_INDENTED_SPACE - LINE_INDENTED_SPACE reduce 20 ** Parsing conflict ** - LINE_EMPTY shift-reduce 60 indented_code ::= indented_code LINE_EMPTY - LINE_EMPTY reduce 20 ** Parsing conflict ** - indented_line shift-reduce 59 indented_code ::= indented_code indented_line - {default} reduce 20 block ::= indented_code + LINE_INDENTED_TAB shift-reduce 89 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_TAB reduce 21 ** Parsing conflict ** + LINE_INDENTED_SPACE shift-reduce 90 indented_line ::= LINE_INDENTED_SPACE + LINE_INDENTED_SPACE reduce 21 ** Parsing conflict ** + LINE_EMPTY shift-reduce 62 indented_code ::= indented_code LINE_EMPTY + LINE_EMPTY reduce 21 ** Parsing conflict ** + indented_line shift-reduce 61 indented_code ::= indented_code indented_line + {default} reduce 21 block ::= indented_code -State 28: - (23) block ::= meta_block * +State 29: + (24) block ::= meta_block * meta_block ::= meta_block * meta_line meta_line ::= * LINE_META meta_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 122 meta_line ::= LINE_CONTINUATION - LINE_META shift-reduce 121 meta_line ::= LINE_META - LINE_META reduce 23 ** Parsing conflict ** - meta_line shift-reduce 71 meta_block ::= meta_block meta_line - {default} reduce 23 block ::= meta_block + LINE_CONTINUATION shift-reduce 125 meta_line ::= LINE_CONTINUATION + LINE_META shift-reduce 124 meta_line ::= LINE_META + LINE_META reduce 24 ** Parsing conflict ** + meta_line shift-reduce 73 meta_block ::= meta_block meta_line + {default} reduce 24 block ::= meta_block -State 29: - (19) block ::= html_block * +State 30: + (20) block ::= html_block * html_block ::= html_block * html_line html_line ::= * LINE_CONTINUATION html_line ::= * LINE_HTML - LINE_CONTINUATION shift-reduce 115 html_line ::= LINE_CONTINUATION - LINE_HTML shift-reduce 116 html_line ::= LINE_HTML - LINE_HTML reduce 19 ** Parsing conflict ** - html_line shift-reduce 58 html_block ::= html_block html_line - {default} reduce 19 block ::= html_block + LINE_CONTINUATION shift-reduce 118 html_line ::= LINE_CONTINUATION + LINE_HTML shift-reduce 119 html_line ::= LINE_HTML + LINE_HTML reduce 20 ** Parsing conflict ** + html_line shift-reduce 60 html_block ::= html_block html_line + {default} reduce 20 block ::= html_block -State 30: +State 31: (11) block ::= blockquote * blockquote ::= blockquote * quote_line quote_line ::= * LINE_BLOCKQUOTE quote_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 94 quote_line ::= LINE_CONTINUATION - LINE_BLOCKQUOTE shift-reduce 93 quote_line ::= LINE_BLOCKQUOTE + LINE_CONTINUATION shift-reduce 96 quote_line ::= LINE_CONTINUATION + LINE_BLOCKQUOTE shift-reduce 95 quote_line ::= LINE_BLOCKQUOTE LINE_BLOCKQUOTE reduce 11 ** Parsing conflict ** - quote_line shift-reduce 34 blockquote ::= blockquote quote_line + quote_line shift-reduce 35 blockquote ::= blockquote quote_line {default} reduce 11 block ::= blockquote -State 31: +State 32: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION - (72) para ::= LINE_PLAIN chunk * + (74) para ::= LINE_PLAIN chunk * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - {default} reduce 72 para ::= LINE_PLAIN chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + {default} reduce 74 para ::= LINE_PLAIN chunk -State 32: +State 33: defs ::= defs * def def ::= * LINE_DEFINITION tail def ::= * LINE_DEFINITION - (130) para ::= defs * + (133) para ::= defs * - LINE_DEFINITION shift 4 - LINE_DEFINITION reduce 130 ** Parsing conflict ** - def shift-reduce 39 defs ::= defs def - {default} reduce 130 para ::= defs + LINE_DEFINITION shift 5 + LINE_DEFINITION reduce 133 ** Parsing conflict ** + def shift-reduce 41 defs ::= defs def + {default} reduce 133 para ::= defs -State 33: +State 34: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION - (37) def_link ::= LINE_DEF_LINK chunk * + (39) def_link ::= LINE_DEF_LINK chunk * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - {default} reduce 37 def_link ::= LINE_DEF_LINK chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + {default} reduce 39 def_link ::= LINE_DEF_LINK chunk -State 34: - (38) definition_block ::= para defs * +State 35: + (40) definition_block ::= para defs * defs ::= defs * def def ::= * LINE_DEFINITION tail def ::= * LINE_DEFINITION - LINE_DEFINITION shift 4 - LINE_DEFINITION reduce 38 ** Parsing conflict ** - def shift-reduce 39 defs ::= defs def - {default} reduce 38 definition_block ::= para defs + LINE_DEFINITION shift 5 + LINE_DEFINITION reduce 40 ** Parsing conflict ** + def shift-reduce 41 defs ::= defs def + {default} reduce 40 definition_block ::= para defs -State 35: - (22) block ::= list_enum * +State 36: + (23) block ::= list_enum * list_enum ::= list_enum * item_enum item_enum ::= * LINE_LIST_ENUMERATED ext_chunk item_enum ::= * LINE_LIST_ENUMERATED chunk item_enum ::= * LINE_LIST_ENUMERATED nested_chunks item_enum ::= * LINE_LIST_ENUMERATED - LINE_LIST_ENUMERATED shift 5 - LINE_LIST_ENUMERATED reduce 22 ** Parsing conflict ** - item_enum shift-reduce 66 list_enum ::= list_enum item_enum - {default} reduce 22 block ::= list_enum + LINE_LIST_ENUMERATED shift 6 + LINE_LIST_ENUMERATED reduce 23 ** Parsing conflict ** + item_enum shift-reduce 68 list_enum ::= list_enum item_enum + {default} reduce 23 block ::= list_enum -State 36: +State 37: chunk ::= chunk * chunk_line chunk_line ::= * LINE_CONTINUATION - (30) nested_chunk ::= empty indented_line chunk * + (31) nested_chunk ::= empty indented_line chunk * - LINE_CONTINUATION shift-reduce 84 chunk_line ::= LINE_CONTINUATION - chunk_line shift-reduce 28 chunk ::= chunk chunk_line - {default} reduce 30 nested_chunk ::= empty indented_line chunk + LINE_CONTINUATION shift-reduce 86 chunk_line ::= LINE_CONTINUATION + chunk_line shift-reduce 29 chunk ::= chunk chunk_line + {default} reduce 31 nested_chunk ::= empty indented_line chunk -State 37: - (21) block ::= list_bullet * +State 38: + (22) block ::= list_bullet * list_bullet ::= list_bullet * item_bullet item_bullet ::= * LINE_LIST_BULLETED ext_chunk item_bullet ::= * LINE_LIST_BULLETED chunk item_bullet ::= * LINE_LIST_BULLETED nested_chunks item_bullet ::= * LINE_LIST_BULLETED - LINE_LIST_BULLETED shift 6 - LINE_LIST_BULLETED reduce 21 ** Parsing conflict ** - item_bullet shift-reduce 61 list_bullet ::= list_bullet item_bullet - {default} reduce 21 block ::= list_bullet + LINE_LIST_BULLETED shift 7 + LINE_LIST_BULLETED reduce 22 ** Parsing conflict ** + item_bullet shift-reduce 63 list_bullet ::= list_bullet item_bullet + {default} reduce 22 block ::= list_bullet -State 38: +State 39: table_header ::= header_rows * LINE_TABLE_SEPARATOR header_rows ::= header_rows * LINE_TABLE - (128) row ::= header_rows * + (131) row ::= header_rows * - LINE_TABLE_SEPARATOR shift-reduce 76 table_header ::= header_rows LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 128 ** Parsing conflict ** - LINE_TABLE shift-reduce 77 header_rows ::= header_rows LINE_TABLE - LINE_TABLE reduce 128 ** Parsing conflict ** - {default} reduce 128 row ::= header_rows + LINE_TABLE_SEPARATOR shift-reduce 78 table_header ::= header_rows LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 131 ** Parsing conflict ** + LINE_TABLE shift-reduce 79 header_rows ::= header_rows LINE_TABLE + LINE_TABLE reduce 131 ** Parsing conflict ** + {default} reduce 131 row ::= header_rows -State 39: +State 40: header_rows ::= header_rows * LINE_TABLE - (128) row ::= header_rows * + (131) row ::= header_rows * - LINE_TABLE shift-reduce 77 header_rows ::= header_rows LINE_TABLE - LINE_TABLE reduce 128 ** Parsing conflict ** - {default} reduce 128 row ::= header_rows + LINE_TABLE shift-reduce 79 header_rows ::= header_rows LINE_TABLE + LINE_TABLE reduce 131 ** Parsing conflict ** + {default} reduce 131 row ::= header_rows -State 40: - (17) block ::= empty * +State 41: + (18) block ::= empty * empty ::= empty * LINE_EMPTY - LINE_EMPTY shift-reduce 42 empty ::= empty LINE_EMPTY - LINE_EMPTY reduce 17 ** Parsing conflict ** - {default} reduce 17 block ::= empty + LINE_EMPTY shift-reduce 44 empty ::= empty LINE_EMPTY + LINE_EMPTY reduce 18 ** Parsing conflict ** + {default} reduce 18 block ::= empty ---------------------------------------------------- Symbols: @@ -1034,65 +1074,67 @@ Symbols: 17: LINE_BLOCKQUOTE 18: LINE_LIST_BULLETED 19: LINE_LIST_ENUMERATED - 20: LINE_DEF_CITATION - 21: LINE_DEF_FOOTNOTE - 22: LINE_DEF_LINK - 23: LINE_FENCE_BACKTICK - 24: LINE_FENCE_BACKTICK_START - 25: LINE_TOC - 26: LINE_DEF_ABBREVIATION - 27: LINE_DEFINITION - 28: LINE_EMPTY - 29: LINE_FENCE_BACKTICK_3 - 30: LINE_FENCE_BACKTICK_4 - 31: LINE_FENCE_BACKTICK_5 - 32: LINE_FENCE_BACKTICK_START_3 - 33: LINE_FENCE_BACKTICK_START_4 - 34: LINE_FENCE_BACKTICK_START_5 - 35: LINE_META - 36: error: - 37: doc: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_TOC LINE_DEF_ABBREVIATION LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META - 38: blocks: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_TOC LINE_DEF_ABBREVIATION LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META - 39: block: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_TOC LINE_DEF_ABBREVIATION LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META - 40: blockquote: LINE_BLOCKQUOTE - 41: def_abbreviation: LINE_DEF_ABBREVIATION - 42: def_citation: LINE_DEF_CITATION - 43: def_footnote: LINE_DEF_FOOTNOTE - 44: def_link: LINE_DEF_LINK - 45: definition_block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION - 46: empty: LINE_EMPTY - 47: fenced_block: LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 - 48: html_block: LINE_HTML - 49: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE - 50: list_bullet: LINE_LIST_BULLETED - 51: list_enum: LINE_LIST_ENUMERATED - 52: meta_block: LINE_META - 53: para: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION - 54: setext_1: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION - 55: setext_2: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION - 56: table: LINE_TABLE - 57: chunk: LINE_CONTINUATION - 58: chunk_line: LINE_CONTINUATION - 59: nested_chunks: LINE_EMPTY - 60: nested_chunk: LINE_EMPTY - 61: indented_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE - 62: ext_chunk: LINE_CONTINUATION - 63: opt_ext_chunk: LINE_CONTINUATION - 64: tail: LINE_CONTINUATION LINE_EMPTY - 65: quote_line: LINE_CONTINUATION LINE_BLOCKQUOTE - 66: defs: LINE_DEFINITION - 67: def: LINE_DEFINITION - 68: fenced_3: LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_START_3 - 69: fenced_line: LINE_SETEXT_1 LINE_SETEXT_2 LINE_CONTINUATION LINE_EMPTY - 70: fenced_4: LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_START_4 - 71: fenced_5: LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_5 - 72: html_line: LINE_CONTINUATION LINE_HTML - 73: item_bullet: LINE_LIST_BULLETED - 74: item_enum: LINE_LIST_ENUMERATED - 75: meta_line: LINE_CONTINUATION LINE_META - 76: table_header: LINE_TABLE - 77: table_body: LINE_TABLE_SEPARATOR LINE_TABLE - 78: header_rows: LINE_TABLE - 79: table_section: LINE_TABLE_SEPARATOR LINE_TABLE - 80: all_rows: LINE_TABLE_SEPARATOR LINE_TABLE - 81: row: LINE_TABLE_SEPARATOR LINE_TABLE + 20: LINE_DEF_ABBREVIATION + 21: LINE_DEF_CITATION + 22: LINE_DEF_FOOTNOTE + 23: LINE_DEF_GLOSSARY + 24: LINE_DEF_LINK + 25: LINE_FENCE_BACKTICK + 26: LINE_FENCE_BACKTICK_START + 27: LINE_TOC + 28: LINE_DEFINITION + 29: LINE_EMPTY + 30: LINE_FENCE_BACKTICK_3 + 31: LINE_FENCE_BACKTICK_4 + 32: LINE_FENCE_BACKTICK_5 + 33: LINE_FENCE_BACKTICK_START_3 + 34: LINE_FENCE_BACKTICK_START_4 + 35: LINE_FENCE_BACKTICK_START_5 + 36: LINE_META + 37: error: + 38: doc: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_ABBREVIATION LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_GLOSSARY LINE_DEF_LINK LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META + 39: blocks: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_ABBREVIATION LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_GLOSSARY LINE_DEF_LINK LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META + 40: block: LINE_HR LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_ABBREVIATION LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_GLOSSARY LINE_DEF_LINK LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 LINE_META + 41: blockquote: LINE_BLOCKQUOTE + 42: def_abbreviation: LINE_DEF_ABBREVIATION + 43: def_citation: LINE_DEF_CITATION + 44: def_footnote: LINE_DEF_FOOTNOTE + 45: def_glossary: LINE_DEF_GLOSSARY + 46: def_link: LINE_DEF_LINK + 47: definition_block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION + 48: empty: LINE_EMPTY + 49: fenced_block: LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 + 50: html_block: LINE_HTML + 51: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE + 52: list_bullet: LINE_LIST_BULLETED + 53: list_enum: LINE_LIST_ENUMERATED + 54: meta_block: LINE_META + 55: para: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION + 56: setext_1: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION + 57: setext_2: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION + 58: table: LINE_TABLE + 59: chunk: LINE_CONTINUATION + 60: chunk_line: LINE_CONTINUATION + 61: nested_chunks: LINE_EMPTY + 62: nested_chunk: LINE_EMPTY + 63: indented_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE + 64: ext_chunk: LINE_CONTINUATION + 65: opt_ext_chunk: LINE_CONTINUATION + 66: tail: LINE_CONTINUATION LINE_EMPTY + 67: quote_line: LINE_CONTINUATION LINE_BLOCKQUOTE + 68: defs: LINE_DEFINITION + 69: def: LINE_DEFINITION + 70: fenced_3: LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_START_3 + 71: fenced_line: LINE_SETEXT_1 LINE_SETEXT_2 LINE_CONTINUATION LINE_EMPTY + 72: fenced_4: LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_START_4 + 73: fenced_5: LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_5 + 74: html_line: LINE_CONTINUATION LINE_HTML + 75: item_bullet: LINE_LIST_BULLETED + 76: item_enum: LINE_LIST_ENUMERATED + 77: meta_line: LINE_CONTINUATION LINE_META + 78: table_header: LINE_TABLE + 79: table_body: LINE_TABLE_SEPARATOR LINE_TABLE + 80: header_rows: LINE_TABLE + 81: table_section: LINE_TABLE_SEPARATOR LINE_TABLE + 82: all_rows: LINE_TABLE_SEPARATOR LINE_TABLE + 83: row: LINE_TABLE_SEPARATOR LINE_TABLE diff --git a/Sources/libMultiMarkdown/parser.y b/Sources/libMultiMarkdown/parser.y index b1abf81..0221e19 100644 --- a/Sources/libMultiMarkdown/parser.y +++ b/Sources/libMultiMarkdown/parser.y @@ -68,7 +68,9 @@ %fallback LINE_CONTINUATION LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE. -%fallback LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START. +%fallback LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE +LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_ABBREVIATION LINE_DEF_CITATION LINE_DEF_FOOTNOTE +LINE_DEF_GLOSSARY LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START. doc ::= blocks(B). { engine->root = B; } @@ -115,6 +117,7 @@ block(A) ::= blockquote(B). { A = token_new_parent(B, BLOCK_BLOCKQUOTE); rec block(A) ::= def_abbreviation(B). { A = token_new_parent(B, BLOCK_DEF_ABBREVIATION); stack_push(engine->definition_stack, A); } block(A) ::= def_citation(B). { A = token_new_parent(B, BLOCK_DEF_CITATION); stack_push(engine->definition_stack, A); } block(A) ::= def_footnote(B). { A = token_new_parent(B, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, A); recursive_parse_indent(engine, A); } +block(A) ::= def_glossary(B). { A = token_new_parent(B, BLOCK_DEF_GLOSSARY); stack_push(engine->definition_stack, A); recursive_parse_indent(engine, A); } block(A) ::= def_link(B). { A = token_new_parent(B, BLOCK_DEF_LINK); stack_push(engine->definition_stack, A); } block(A) ::= definition_block(B). { A = token_new_parent(B, BLOCK_DEFLIST); } block(A) ::= empty(B). { A = token_new_parent(B, BLOCK_EMPTY); } @@ -194,6 +197,9 @@ def_citation ::= LINE_DEF_CITATION. def_footnote(A) ::= LINE_DEF_FOOTNOTE(B) tail(C). { A = B; token_chain_append(B, C); } def_footnote ::= LINE_DEF_FOOTNOTE. +def_glossary(A) ::= LINE_DEF_GLOSSARY(B) tail(C). { A = B; token_chain_append(B, C); } +def_glossary ::= LINE_DEF_GLOSSARY. + def_link(A) ::= LINE_DEF_LINK(B) chunk(C). { A = B; token_chain_append(B, C); } def_link ::= LINE_DEF_LINK. diff --git a/Sources/libMultiMarkdown/scanners.c b/Sources/libMultiMarkdown/scanners.c index 6fddf63..44b1b8f 100644 --- a/Sources/libMultiMarkdown/scanners.c +++ b/Sources/libMultiMarkdown/scanners.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.14.3 on Thu Mar 2 09:19:45 2017 */ +/* Generated by re2c 0.14.3 on Thu Mar 2 09:54:25 2017 */ /** MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more. @@ -3641,6 +3641,7 @@ yy177: } + size_t scan_ref_foot(const char * c) { const char * marker = NULL; const char * start = c; @@ -3742,14 +3743,13 @@ yy195: } -size_t scan_ref_link_no_attributes(const char * c) { +size_t scan_ref_glossary(const char * c) { const char * marker = NULL; const char * start = c; { char yych; - unsigned int yyaccept = 0; yych = *c; switch (yych) { case '\n': goto yy198; @@ -3760,962 +3760,1064 @@ size_t scan_ref_link_no_attributes(const char * c) { yy198: { return 0; } yy199: - yyaccept = 0; yych = *(marker = ++c); switch (yych) { - case ' ': goto yy335; - case '[': goto yy336; + case ' ': goto yy211; + case '[': goto yy212; default: goto yy198; } yy200: + yych = *(marker = ++c); + switch (yych) { + case '?': goto yy202; + default: goto yy198; + } +yy201: + yych = *++c; + goto yy198; +yy202: + yych = *++c; + switch (yych) { + case ']': goto yy203; + default: goto yy205; + } +yy203: + c = marker; + goto yy198; +yy204: + ++c; + yych = *c; +yy205: + switch (yych) { + case 0x00: + case '\n': + case '\r': goto yy203; + case ']': goto yy206; + default: goto yy204; + } +yy206: + yych = *++c; + switch (yych) { + case ':': goto yy207; + default: goto yy203; + } +yy207: + yych = *++c; + switch (yych) { + case 0x00: + case '\n': + case '\r': goto yy203; + default: goto yy208; + } +yy208: + ++c; + yych = *c; + switch (yych) { + case 0x00: + case '\n': + case '\r': goto yy210; + default: goto yy208; + } +yy210: + { return (size_t)( c - start ); } +yy211: + yych = *++c; + switch (yych) { + case ' ': goto yy213; + case '[': goto yy212; + default: goto yy203; + } +yy212: + yych = *++c; + switch (yych) { + case '?': goto yy202; + default: goto yy203; + } +yy213: + ++c; + switch ((yych = *c)) { + case '[': goto yy212; + default: goto yy203; + } +} + +} + + +size_t scan_ref_link_no_attributes(const char * c) { + const char * marker = NULL; + const char * start = c; + + +{ + char yych; + unsigned int yyaccept = 0; + yych = *c; + switch (yych) { + case '\n': goto yy216; + case ' ': goto yy217; + case '[': goto yy218; + default: goto yy219; + } +yy216: + { return 0; } +yy217: + yyaccept = 0; + yych = *(marker = ++c); + switch (yych) { + case ' ': goto yy353; + case '[': goto yy354; + default: goto yy216; + } +yy218: yyaccept = 0; yych = *(marker = ++c); switch (yych) { case 0x00: case '\n': case '\r': - case ']': goto yy198; - default: goto yy202; + case ']': goto yy216; + default: goto yy220; } -yy201: +yy219: yych = *++c; - goto yy198; -yy202: + goto yy216; +yy220: ++c; yych = *c; -yy203: +yy221: switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case ']': goto yy205; - default: goto yy202; + case '\r': goto yy222; + case ']': goto yy223; + default: goto yy220; } -yy204: +yy222: c = marker; if (yyaccept == 0) { - goto yy198; + goto yy216; } else { - goto yy218; + goto yy236; } -yy205: +yy223: yych = *++c; switch (yych) { - case ':': goto yy206; - default: goto yy204; + case ':': goto yy224; + default: goto yy222; } -yy206: +yy224: ++c; yych = *c; switch (yych) { - case 0x00: goto yy204; + case 0x00: goto yy222; case '\t': - case ' ': goto yy206; - case '\n': goto yy208; - case '\r': goto yy210; - case '<': goto yy211; - default: goto yy213; + case ' ': goto yy224; + case '\n': goto yy226; + case '\r': goto yy228; + case '<': goto yy229; + default: goto yy231; } -yy208: +yy226: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; + case '\r': goto yy222; case '\t': - case ' ': goto yy208; - case '<': goto yy211; - default: goto yy213; + case ' ': goto yy226; + case '<': goto yy229; + default: goto yy231; } -yy210: +yy228: yych = *++c; switch (yych) { case 0x00: - case '\r': goto yy204; + case '\r': goto yy222; case '\t': case '\n': - case ' ': goto yy208; - case '<': goto yy211; - default: goto yy213; + case ' ': goto yy226; + case '<': goto yy229; + default: goto yy231; } -yy211: +yy229: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy215; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy308; - case '\'': goto yy310; - case '(': goto yy312; - case '>': goto yy213; - default: goto yy211; + case ' ': goto yy233; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy326; + case '\'': goto yy328; + case '(': goto yy330; + case '>': goto yy231; + default: goto yy229; } -yy213: +yy231: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy215; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy221; - case '\'': goto yy223; - case '(': goto yy225; - default: goto yy213; + case ' ': goto yy233; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy239; + case '\'': goto yy241; + case '(': goto yy243; + default: goto yy231; } -yy215: +yy233: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy215; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy237; - case '\'': goto yy239; - case '(': goto yy241; - default: goto yy204; + case ' ': goto yy233; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy255; + case '\'': goto yy257; + case '(': goto yy259; + default: goto yy222; } -yy217: +yy235: ++c; -yy218: +yy236: { return (size_t)( c - start ); } -yy219: +yy237: yyaccept = 1; yych = *(marker = ++c); switch (yych) { - case '"': goto yy237; - case '\'': goto yy239; - case '(': goto yy241; - default: goto yy218; + case '"': goto yy255; + case '\'': goto yy257; + case '(': goto yy259; + default: goto yy236; } -yy220: +yy238: yyaccept = 1; yych = *(marker = ++c); switch (yych) { - case '\n': goto yy219; - case '"': goto yy237; - case '\'': goto yy239; - case '(': goto yy241; - default: goto yy218; + case '\n': goto yy237; + case '"': goto yy255; + case '\'': goto yy257; + case '(': goto yy259; + default: goto yy236; } -yy221: +yy239: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy306; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy294; - case '\'': goto yy284; - case '(': goto yy229; - default: goto yy221; + case ' ': goto yy324; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy312; + case '\'': goto yy302; + case '(': goto yy247; + default: goto yy239; } -yy223: +yy241: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy304; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy284; - case '\'': goto yy246; - case '(': goto yy231; - default: goto yy223; + case ' ': goto yy322; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy302; + case '\'': goto yy264; + case '(': goto yy249; + default: goto yy241; } -yy225: +yy243: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy227; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy229; - case '\'': goto yy231; - case ')': goto yy233; - default: goto yy225; + case ' ': goto yy245; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy247; + case '\'': goto yy249; + case ')': goto yy251; + default: goto yy243; } -yy227: +yy245: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy227; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy274; - case '\'': goto yy258; - case ')': goto yy243; - default: goto yy241; + case ' ': goto yy245; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy292; + case '\'': goto yy276; + case ')': goto yy261; + default: goto yy259; } -yy229: +yy247: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy296; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy298; - case '\'': goto yy250; - case ')': goto yy294; - default: goto yy229; + case ' ': goto yy314; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy316; + case '\'': goto yy268; + case ')': goto yy312; + default: goto yy247; } -yy231: +yy249: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy248; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy250; - case '\'': goto yy252; - case ')': goto yy246; - default: goto yy231; + case ' ': goto yy266; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy268; + case '\'': goto yy270; + case ')': goto yy264; + default: goto yy249; } -yy233: +yy251: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy234; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy221; - case '\'': goto yy223; - case '(': goto yy225; - default: goto yy213; + case ' ': goto yy252; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy239; + case '\'': goto yy241; + case '(': goto yy243; + default: goto yy231; } -yy234: +yy252: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy234; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy237; - case '\'': goto yy239; - case '(': goto yy241; - default: goto yy204; + case ' ': goto yy252; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy255; + case '\'': goto yy257; + case '(': goto yy259; + default: goto yy222; } -yy236: +yy254: yyaccept = 1; yych = *(marker = ++c); switch (yych) { - case '\n': goto yy219; - case '"': goto yy237; - case '\'': goto yy239; - case '(': goto yy241; - default: goto yy218; + case '\n': goto yy237; + case '"': goto yy255; + case '\'': goto yy257; + case '(': goto yy259; + default: goto yy236; } -yy237: +yy255: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '"': goto yy243; - default: goto yy237; + case '\r': goto yy222; + case '"': goto yy261; + default: goto yy255; } -yy239: +yy257: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '\'': goto yy243; - default: goto yy239; + case '\r': goto yy222; + case '\'': goto yy261; + default: goto yy257; } -yy241: +yy259: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case ')': goto yy243; - default: goto yy241; + case '\r': goto yy222; + case ')': goto yy261; + default: goto yy259; } -yy243: +yy261: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy243; - case '\r': goto yy245; - default: goto yy204; + case ' ': goto yy261; + case '\r': goto yy263; + default: goto yy222; } -yy245: +yy263: yych = *++c; switch (yych) { - case '\n': goto yy217; - default: goto yy218; + case '\n': goto yy235; + default: goto yy236; } -yy246: +yy264: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy292; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy284; - case '\'': goto yy246; - case '(': goto yy231; - default: goto yy223; + case ' ': goto yy310; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy302; + case '\'': goto yy264; + case '(': goto yy249; + default: goto yy241; } -yy248: +yy266: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy248; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy260; - case '\'': goto yy262; - case ')': goto yy256; - default: goto yy258; + case ' ': goto yy266; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy278; + case '\'': goto yy280; + case ')': goto yy274; + default: goto yy276; } -yy250: +yy268: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy278; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy296; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy276; - case ')': goto yy280; - default: goto yy250; + case '\'': goto yy294; + case ')': goto yy298; + default: goto yy268; } -yy252: +yy270: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy254; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy250; - case '\'': goto yy252; - case ')': goto yy246; - default: goto yy231; + case ' ': goto yy272; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy268; + case '\'': goto yy270; + case ')': goto yy264; + default: goto yy249; } -yy254: +yy272: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy254; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy260; - case '\'': goto yy262; - case ')': goto yy256; - default: goto yy258; + case ' ': goto yy272; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy278; + case '\'': goto yy280; + case ')': goto yy274; + default: goto yy276; } -yy256: +yy274: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy256; - case '\r': goto yy245; - case '\'': goto yy243; - default: goto yy239; + case ' ': goto yy274; + case '\r': goto yy263; + case '\'': goto yy261; + default: goto yy257; } -yy258: +yy276: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '\'': goto yy264; - case ')': goto yy256; - default: goto yy258; + case '\r': goto yy222; + case '\'': goto yy282; + case ')': goto yy274; + default: goto yy276; } -yy260: +yy278: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '"': goto yy262; - case '\'': goto yy266; - case ')': goto yy268; - default: goto yy260; + case '\r': goto yy222; + case '"': goto yy280; + case '\'': goto yy284; + case ')': goto yy286; + default: goto yy278; } -yy262: +yy280: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy262; - case '\r': goto yy245; - case '\'': goto yy264; - case ')': goto yy256; - default: goto yy258; + case ' ': goto yy280; + case '\r': goto yy263; + case '\'': goto yy282; + case ')': goto yy274; + default: goto yy276; } -yy264: +yy282: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy264; - case '\r': goto yy245; - case ')': goto yy243; - default: goto yy241; + case ' ': goto yy282; + case '\r': goto yy263; + case ')': goto yy261; + default: goto yy259; } -yy266: +yy284: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy266; - case '\r': goto yy245; - case '"': goto yy264; - case ')': goto yy270; - default: goto yy274; + case ' ': goto yy284; + case '\r': goto yy263; + case '"': goto yy282; + case ')': goto yy288; + default: goto yy292; } -yy268: +yy286: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy268; - case '\r': goto yy245; - case '"': goto yy256; - case '\'': goto yy270; - default: goto yy272; + case ' ': goto yy286; + case '\r': goto yy263; + case '"': goto yy274; + case '\'': goto yy288; + default: goto yy290; } -yy270: +yy288: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy270; - case '\r': goto yy245; - case '"': goto yy243; - default: goto yy237; + case ' ': goto yy288; + case '\r': goto yy263; + case '"': goto yy261; + default: goto yy255; } -yy272: +yy290: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '"': goto yy256; - case '\'': goto yy270; - default: goto yy272; + case '\r': goto yy222; + case '"': goto yy274; + case '\'': goto yy288; + default: goto yy290; } -yy274: +yy292: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy204; - case '"': goto yy264; - case ')': goto yy270; - default: goto yy274; + case '\r': goto yy222; + case '"': goto yy282; + case ')': goto yy288; + default: goto yy292; } -yy276: +yy294: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy290; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy308; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy276; - case ')': goto yy280; - default: goto yy250; + case '\'': goto yy294; + case ')': goto yy298; + default: goto yy268; } -yy278: +yy296: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy278; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy296; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy288; - case ')': goto yy268; - default: goto yy260; + case '\'': goto yy306; + case ')': goto yy286; + default: goto yy278; } -yy280: +yy298: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy282; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy300; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy280; - case '(': goto yy250; - default: goto yy284; + case '\'': goto yy298; + case '(': goto yy268; + default: goto yy302; } -yy282: +yy300: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy282; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy300; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy268; - case '(': goto yy260; - default: goto yy272; + case '\'': goto yy286; + case '(': goto yy278; + default: goto yy290; } -yy284: +yy302: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy286; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy304; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy280; - case '(': goto yy250; - default: goto yy284; + case '\'': goto yy298; + case '(': goto yy268; + default: goto yy302; } -yy286: +yy304: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy286; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy304; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy268; - case '(': goto yy260; - default: goto yy272; + case '\'': goto yy286; + case '(': goto yy278; + default: goto yy290; } -yy288: +yy306: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy217; + case '\n': goto yy235; case '\t': - case ' ': goto yy288; - case '\r': goto yy245; - case '"': goto yy262; - case '\'': goto yy266; - case ')': goto yy268; - default: goto yy260; + case ' ': goto yy306; + case '\r': goto yy263; + case '"': goto yy280; + case '\'': goto yy284; + case ')': goto yy286; + default: goto yy278; } -yy290: +yy308: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy290; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy308; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy288; - case ')': goto yy268; - default: goto yy260; + case '\'': goto yy306; + case ')': goto yy286; + default: goto yy278; } -yy292: +yy310: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy292; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy272; - case '\'': goto yy256; - case '(': goto yy258; - default: goto yy239; + case ' ': goto yy310; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy290; + case '\'': goto yy274; + case '(': goto yy276; + default: goto yy257; } -yy294: +yy312: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy302; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy294; - case '\'': goto yy284; - case '(': goto yy229; - default: goto yy221; + case ' ': goto yy320; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy312; + case '\'': goto yy302; + case '(': goto yy247; + default: goto yy239; } -yy296: +yy314: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy296; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy266; - case '\'': goto yy260; - case ')': goto yy270; - default: goto yy274; + case ' ': goto yy314; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy284; + case '\'': goto yy278; + case ')': goto yy288; + default: goto yy292; } -yy298: +yy316: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy300; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy298; - case '\'': goto yy250; - case ')': goto yy294; - default: goto yy229; + case ' ': goto yy318; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy316; + case '\'': goto yy268; + case ')': goto yy312; + default: goto yy247; } -yy300: +yy318: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy300; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy266; - case '\'': goto yy260; - case ')': goto yy270; - default: goto yy274; + case ' ': goto yy318; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy284; + case '\'': goto yy278; + case ')': goto yy288; + default: goto yy292; } -yy302: +yy320: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy302; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy270; - case '\'': goto yy272; - case '(': goto yy274; - default: goto yy237; + case ' ': goto yy320; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy288; + case '\'': goto yy290; + case '(': goto yy292; + default: goto yy255; } -yy304: +yy322: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy304; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy272; - case '\'': goto yy256; - case '(': goto yy258; - default: goto yy239; + case ' ': goto yy322; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy290; + case '\'': goto yy274; + case '(': goto yy276; + default: goto yy257; } -yy306: +yy324: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy306; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy270; - case '\'': goto yy272; - case '(': goto yy274; - default: goto yy237; + case ' ': goto yy324; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy288; + case '\'': goto yy290; + case '(': goto yy292; + default: goto yy255; } -yy308: +yy326: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy306; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy331; - case '\'': goto yy329; - case '(': goto yy314; - case '>': goto yy221; - default: goto yy308; + case ' ': goto yy324; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy349; + case '\'': goto yy347; + case '(': goto yy332; + case '>': goto yy239; + default: goto yy326; } -yy310: +yy328: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy304; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy329; - case '\'': goto yy319; - case '(': goto yy316; - case '>': goto yy223; - default: goto yy310; + case ' ': goto yy322; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy347; + case '\'': goto yy337; + case '(': goto yy334; + case '>': goto yy241; + default: goto yy328; } -yy312: +yy330: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy227; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy314; - case '\'': goto yy316; - case ')': goto yy318; - case '>': goto yy225; - default: goto yy312; + case ' ': goto yy245; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy332; + case '\'': goto yy334; + case ')': goto yy336; + case '>': goto yy243; + default: goto yy330; } -yy314: +yy332: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy296; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy333; - case '\'': goto yy321; - case ')': goto yy331; - case '>': goto yy229; - default: goto yy314; + case ' ': goto yy314; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy351; + case '\'': goto yy339; + case ')': goto yy349; + case '>': goto yy247; + default: goto yy332; } -yy316: +yy334: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy248; - case '\n': goto yy219; - case '\r': goto yy220; - case '"': goto yy321; - case '\'': goto yy323; - case ')': goto yy319; - case '>': goto yy231; - default: goto yy316; + case ' ': goto yy266; + case '\n': goto yy237; + case '\r': goto yy238; + case '"': goto yy339; + case '\'': goto yy341; + case ')': goto yy337; + case '>': goto yy249; + default: goto yy334; } -yy318: +yy336: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy234; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy308; - case '\'': goto yy310; - case '(': goto yy312; - case '>': goto yy213; - default: goto yy211; + case ' ': goto yy252; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy326; + case '\'': goto yy328; + case '(': goto yy330; + case '>': goto yy231; + default: goto yy229; } -yy319: +yy337: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy292; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy329; - case '\'': goto yy319; - case '(': goto yy316; - case '>': goto yy223; - default: goto yy310; + case ' ': goto yy310; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy347; + case '\'': goto yy337; + case '(': goto yy334; + case '>': goto yy241; + default: goto yy328; } -yy321: +yy339: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy278; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy296; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy325; - case ')': goto yy327; - case '>': goto yy250; - default: goto yy321; + case '\'': goto yy343; + case ')': goto yy345; + case '>': goto yy268; + default: goto yy339; } -yy323: +yy341: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy254; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy321; - case '\'': goto yy323; - case ')': goto yy319; - case '>': goto yy231; - default: goto yy316; + case ' ': goto yy272; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy339; + case '\'': goto yy341; + case ')': goto yy337; + case '>': goto yy249; + default: goto yy334; } -yy325: +yy343: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy290; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy308; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy325; - case ')': goto yy327; - case '>': goto yy250; - default: goto yy321; + case '\'': goto yy343; + case ')': goto yy345; + case '>': goto yy268; + default: goto yy339; } -yy327: +yy345: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy282; - case '\n': goto yy219; - case '\r': goto yy236; + case ' ': goto yy300; + case '\n': goto yy237; + case '\r': goto yy254; case '"': - case '\'': goto yy327; - case '(': goto yy321; - case '>': goto yy284; - default: goto yy329; + case '\'': goto yy345; + case '(': goto yy339; + case '>': goto yy302; + default: goto yy347; } -yy329: +yy347: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy286; - case '\n': goto yy219; - case '\r': goto yy220; + case ' ': goto yy304; + case '\n': goto yy237; + case '\r': goto yy238; case '"': - case '\'': goto yy327; - case '(': goto yy321; - case '>': goto yy284; - default: goto yy329; + case '\'': goto yy345; + case '(': goto yy339; + case '>': goto yy302; + default: goto yy347; } -yy331: +yy349: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy302; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy331; - case '\'': goto yy329; - case '(': goto yy314; - case '>': goto yy221; - default: goto yy308; + case ' ': goto yy320; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy349; + case '\'': goto yy347; + case '(': goto yy332; + case '>': goto yy239; + default: goto yy326; } -yy333: +yy351: ++c; yych = *c; switch (yych) { - case 0x00: goto yy217; + case 0x00: goto yy235; case '\t': - case ' ': goto yy300; - case '\n': goto yy219; - case '\r': goto yy236; - case '"': goto yy333; - case '\'': goto yy321; - case ')': goto yy331; - case '>': goto yy229; - default: goto yy314; + case ' ': goto yy318; + case '\n': goto yy237; + case '\r': goto yy254; + case '"': goto yy351; + case '\'': goto yy339; + case ')': goto yy349; + case '>': goto yy247; + default: goto yy332; } -yy335: +yy353: yych = *++c; switch (yych) { - case ' ': goto yy337; - case '[': goto yy336; - default: goto yy204; + case ' ': goto yy355; + case '[': goto yy354; + default: goto yy222; } -yy336: +yy354: yych = *++c; switch (yych) { - case ']': goto yy204; - default: goto yy203; + case ']': goto yy222; + default: goto yy221; } -yy337: +yy355: ++c; switch ((yych = *c)) { - case '[': goto yy336; - default: goto yy204; + case '[': goto yy354; + default: goto yy222; } } @@ -4731,89 +4833,89 @@ size_t scan_ref_link(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy340; - case ' ': goto yy341; - case '[': goto yy342; - default: goto yy343; + case '\n': goto yy358; + case ' ': goto yy359; + case '[': goto yy360; + default: goto yy361; } -yy340: +yy358: { return 0; } -yy341: +yy359: yych = *(marker = ++c); switch (yych) { - case ' ': goto yy352; - case '[': goto yy353; - default: goto yy340; + case ' ': goto yy370; + case '[': goto yy371; + default: goto yy358; } -yy342: +yy360: yych = *(marker = ++c); switch (yych) { case 0x00: case '\n': case '\r': - case ']': goto yy340; - default: goto yy344; + case ']': goto yy358; + default: goto yy362; } -yy343: +yy361: yych = *++c; - goto yy340; -yy344: + goto yy358; +yy362: ++c; yych = *c; -yy345: +yy363: switch (yych) { case 0x00: case '\n': - case '\r': goto yy346; - case ']': goto yy347; - default: goto yy344; + case '\r': goto yy364; + case ']': goto yy365; + default: goto yy362; } -yy346: +yy364: c = marker; - goto yy340; -yy347: + goto yy358; +yy365: yych = *++c; switch (yych) { - case ':': goto yy348; - default: goto yy346; + case ':': goto yy366; + default: goto yy364; } -yy348: +yy366: yych = *++c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy346; - default: goto yy349; + case '\r': goto yy364; + default: goto yy367; } -yy349: +yy367: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy351; - default: goto yy349; + case '\r': goto yy369; + default: goto yy367; } -yy351: +yy369: { return (size_t)( c - start ); } -yy352: +yy370: yych = *++c; switch (yych) { - case ' ': goto yy354; - case '[': goto yy353; - default: goto yy346; + case ' ': goto yy372; + case '[': goto yy371; + default: goto yy364; } -yy353: +yy371: yych = *++c; switch (yych) { - case ']': goto yy346; - default: goto yy345; + case ']': goto yy364; + default: goto yy363; } -yy354: +yy372: ++c; switch ((yych = *c)) { - case '[': goto yy353; - default: goto yy346; + case '[': goto yy371; + default: goto yy364; } } @@ -4829,17 +4931,17 @@ size_t scan_html(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy357; - case '<': goto yy358; - default: goto yy359; + case '\n': goto yy375; + case '<': goto yy376; + default: goto yy377; } -yy357: +yy375: { return 0; } -yy358: +yy376: yych = *(marker = ++c); switch (yych) { - case '!': goto yy360; - case '/': goto yy362; + case '!': goto yy378; + case '/': goto yy380; case 'A': case 'B': case 'C': @@ -4891,22 +4993,22 @@ yy358: case 'w': case 'x': case 'y': - case 'z': goto yy363; - default: goto yy357; + case 'z': goto yy381; + default: goto yy375; } -yy359: +yy377: yych = *++c; - goto yy357; -yy360: + goto yy375; +yy378: yych = *++c; switch (yych) { - case '-': goto yy391; - default: goto yy361; + case '-': goto yy409; + default: goto yy379; } -yy361: +yy379: c = marker; - goto yy357; -yy362: + goto yy375; +yy380: yych = *++c; switch (yych) { case 'A': @@ -4960,17 +5062,17 @@ yy362: case 'w': case 'x': case 'y': - case 'z': goto yy387; - default: goto yy361; + case 'z': goto yy405; + default: goto yy379; } -yy363: +yy381: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy367; - case '\n': goto yy369; - case '\r': goto yy371; + case ' ': goto yy385; + case '\n': goto yy387; + case '\r': goto yy389; case '-': case '0': case '1': @@ -4981,11 +5083,11 @@ yy363: case '6': case '7': case '8': - case '9': goto yy363; - case '/': goto yy376; + case '9': goto yy381; + case '/': goto yy394; case ':': - case '_': goto yy372; - case '>': goto yy374; + case '_': goto yy390; + case '>': goto yy392; case 'A': case 'B': case 'C': @@ -5037,17 +5139,17 @@ yy363: case 'w': case 'x': case 'y': - case 'z': goto yy365; - default: goto yy361; + case 'z': goto yy383; + default: goto yy379; } -yy365: +yy383: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy367; - case '\n': goto yy369; - case '\r': goto yy371; + case ' ': goto yy385; + case '\n': goto yy387; + case '\r': goto yy389; case '-': case '0': case '1': @@ -5110,24 +5212,24 @@ yy365: case 'w': case 'x': case 'y': - case 'z': goto yy365; + case 'z': goto yy383; case '.': case ':': - case '_': goto yy372; - case '/': goto yy376; - case '=': goto yy377; - case '>': goto yy374; - default: goto yy361; + case '_': goto yy390; + case '/': goto yy394; + case '=': goto yy395; + case '>': goto yy392; + default: goto yy379; } -yy367: +yy385: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy367; - case '\n': goto yy369; - case '\r': goto yy371; - case '/': goto yy376; + case ' ': goto yy385; + case '\n': goto yy387; + case '\r': goto yy389; + case '/': goto yy394; case ':': case 'A': case 'B': @@ -5181,16 +5283,16 @@ yy367: case 'w': case 'x': case 'y': - case 'z': goto yy372; - case '>': goto yy374; - default: goto yy361; + case 'z': goto yy390; + case '>': goto yy392; + default: goto yy379; } -yy369: +yy387: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy369; + case ' ': goto yy387; case ':': case 'A': case 'B': @@ -5244,16 +5346,16 @@ yy369: case 'w': case 'x': case 'y': - case 'z': goto yy372; - default: goto yy361; + case 'z': goto yy390; + default: goto yy379; } -yy371: +yy389: ++c; yych = *c; switch (yych) { case '\t': case '\n': - case ' ': goto yy369; + case ' ': goto yy387; case ':': case 'A': case 'B': @@ -5307,10 +5409,10 @@ yy371: case 'w': case 'x': case 'y': - case 'z': goto yy372; - default: goto yy361; + case 'z': goto yy390; + default: goto yy379; } -yy372: +yy390: ++c; yych = *c; switch (yych) { @@ -5379,27 +5481,27 @@ yy372: case 'w': case 'x': case 'y': - case 'z': goto yy372; - case '=': goto yy377; - default: goto yy361; + case 'z': goto yy390; + case '=': goto yy395; + default: goto yy379; } -yy374: +yy392: ++c; { return (size_t)( c - start ); } -yy376: +yy394: yych = *++c; switch (yych) { - case '>': goto yy374; - default: goto yy361; + case '>': goto yy392; + default: goto yy379; } -yy377: +yy395: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy377; - case '"': goto yy379; - case '\'': goto yy381; + case ' ': goto yy395; + case '"': goto yy397; + case '\'': goto yy399; case '.': case '0': case '1': @@ -5462,37 +5564,37 @@ yy377: case 'w': case 'x': case 'y': - case 'z': goto yy383; - default: goto yy361; + case 'z': goto yy401; + default: goto yy379; } -yy379: +yy397: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy361; - case '"': goto yy367; - default: goto yy379; + case '\r': goto yy379; + case '"': goto yy385; + default: goto yy397; } -yy381: +yy399: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy361; - case '\'': goto yy367; - default: goto yy381; + case '\r': goto yy379; + case '\'': goto yy385; + default: goto yy399; } -yy383: +yy401: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy367; - case '\n': goto yy369; - case '\r': goto yy371; + case ' ': goto yy385; + case '\n': goto yy387; + case '\r': goto yy389; case '.': case '0': case '1': @@ -5503,11 +5605,11 @@ yy383: case '6': case '7': case '8': - case '9': goto yy383; - case '/': goto yy376; + case '9': goto yy401; + case '/': goto yy394; case ':': - case '_': goto yy372; - case '>': goto yy374; + case '_': goto yy390; + case '>': goto yy392; case 'A': case 'B': case 'C': @@ -5559,20 +5661,20 @@ yy383: case 'w': case 'x': case 'y': - case 'z': goto yy385; - default: goto yy361; + case 'z': goto yy403; + default: goto yy379; } -yy385: +yy403: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy367; - case '\n': goto yy369; - case '\r': goto yy371; + case ' ': goto yy385; + case '\n': goto yy387; + case '\r': goto yy389; case '-': case ':': - case '_': goto yy372; + case '_': goto yy390; case '.': case '0': case '1': @@ -5635,18 +5737,18 @@ yy385: case 'w': case 'x': case 'y': - case 'z': goto yy385; - case '/': goto yy376; - case '=': goto yy377; - case '>': goto yy374; - default: goto yy361; + case 'z': goto yy403; + case '/': goto yy394; + case '=': goto yy395; + case '>': goto yy392; + default: goto yy379; } -yy387: +yy405: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy389; + case ' ': goto yy407; case '-': case '0': case '1': @@ -5709,58 +5811,58 @@ yy387: case 'w': case 'x': case 'y': - case 'z': goto yy387; - case '>': goto yy374; - default: goto yy361; + case 'z': goto yy405; + case '>': goto yy392; + default: goto yy379; } -yy389: +yy407: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy389; - case '>': goto yy374; - default: goto yy361; + case ' ': goto yy407; + case '>': goto yy392; + default: goto yy379; } -yy391: +yy409: yych = *++c; switch (yych) { - case '-': goto yy392; - default: goto yy361; + case '-': goto yy410; + default: goto yy379; } -yy392: +yy410: yych = *++c; switch (yych) { - case '-': goto yy361; - default: goto yy394; + case '-': goto yy379; + default: goto yy412; } -yy393: +yy411: ++c; yych = *c; -yy394: +yy412: switch (yych) { case 0x00: - case '>': goto yy361; - case '-': goto yy395; - default: goto yy393; + case '>': goto yy379; + case '-': goto yy413; + default: goto yy411; } -yy395: +yy413: ++c; yych = *c; switch (yych) { case 0x00: - case '>': goto yy361; - case '-': goto yy396; - default: goto yy393; + case '>': goto yy379; + case '-': goto yy414; + default: goto yy411; } -yy396: +yy414: ++c; yych = *c; switch (yych) { - case 0x00: goto yy361; - case '-': goto yy396; - case '>': goto yy374; - default: goto yy393; + case 0x00: goto yy379; + case '-': goto yy414; + case '>': goto yy392; + default: goto yy411; } } @@ -5776,71 +5878,71 @@ size_t scan_html_comment(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy400; - case '<': goto yy401; - default: goto yy402; + case '\n': goto yy418; + case '<': goto yy419; + default: goto yy420; } -yy400: +yy418: { return 0; } -yy401: +yy419: yych = *(marker = ++c); switch (yych) { - case '!': goto yy403; - default: goto yy400; + case '!': goto yy421; + default: goto yy418; } -yy402: +yy420: yych = *++c; - goto yy400; -yy403: + goto yy418; +yy421: yych = *++c; switch (yych) { - case '-': goto yy405; - default: goto yy404; + case '-': goto yy423; + default: goto yy422; } -yy404: +yy422: c = marker; - goto yy400; -yy405: + goto yy418; +yy423: yych = *++c; switch (yych) { - case '-': goto yy406; - default: goto yy404; + case '-': goto yy424; + default: goto yy422; } -yy406: +yy424: yych = *++c; switch (yych) { - case '-': goto yy404; - default: goto yy408; + case '-': goto yy422; + default: goto yy426; } -yy407: +yy425: ++c; yych = *c; -yy408: +yy426: switch (yych) { case 0x00: - case '>': goto yy404; - case '-': goto yy409; - default: goto yy407; + case '>': goto yy422; + case '-': goto yy427; + default: goto yy425; } -yy409: +yy427: ++c; yych = *c; switch (yych) { case 0x00: - case '>': goto yy404; - case '-': goto yy410; - default: goto yy407; + case '>': goto yy422; + case '-': goto yy428; + default: goto yy425; } -yy410: +yy428: ++c; yych = *c; switch (yych) { - case 0x00: goto yy404; - case '-': goto yy410; - case '>': goto yy412; - default: goto yy407; + case 0x00: goto yy422; + case '-': goto yy428; + case '>': goto yy430; + default: goto yy425; } -yy412: +yy430: ++c; { return (size_t)( c - start ); } } @@ -5857,130 +5959,130 @@ size_t scan_html_block(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy416; - case '<': goto yy417; - default: goto yy418; + case '\n': goto yy434; + case '<': goto yy435; + default: goto yy436; } -yy416: +yy434: { return 0; } -yy417: +yy435: yych = *(marker = ++c); switch (yych) { - case '/': goto yy419; + case '/': goto yy437; case 'A': - case 'a': goto yy422; + case 'a': goto yy440; case 'B': - case 'b': goto yy423; + case 'b': goto yy441; case 'C': - case 'c': goto yy424; + case 'c': goto yy442; case 'D': - case 'd': goto yy425; + case 'd': goto yy443; case 'F': - case 'f': goto yy426; + case 'f': goto yy444; case 'H': - case 'h': goto yy427; + case 'h': goto yy445; case 'I': - case 'i': goto yy428; + case 'i': goto yy446; case 'L': - case 'l': goto yy429; + case 'l': goto yy447; case 'M': - case 'm': goto yy430; + case 'm': goto yy448; case 'N': - case 'n': goto yy431; + case 'n': goto yy449; case 'O': - case 'o': goto yy432; + case 'o': goto yy450; case 'P': - case 'p': goto yy421; + case 'p': goto yy439; case 'S': - case 's': goto yy433; + case 's': goto yy451; case 'T': - case 't': goto yy434; + case 't': goto yy452; case 'U': - case 'u': goto yy435; + case 'u': goto yy453; case 'V': - case 'v': goto yy436; - default: goto yy416; + case 'v': goto yy454; + default: goto yy434; } -yy418: +yy436: yych = *++c; - goto yy416; -yy419: + goto yy434; +yy437: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy422; + case 'a': goto yy440; case 'B': - case 'b': goto yy423; + case 'b': goto yy441; case 'C': - case 'c': goto yy424; + case 'c': goto yy442; case 'D': - case 'd': goto yy425; + case 'd': goto yy443; case 'F': - case 'f': goto yy426; + case 'f': goto yy444; case 'H': - case 'h': goto yy427; + case 'h': goto yy445; case 'I': - case 'i': goto yy428; + case 'i': goto yy446; case 'L': - case 'l': goto yy429; + case 'l': goto yy447; case 'M': - case 'm': goto yy430; + case 'm': goto yy448; case 'N': - case 'n': goto yy431; + case 'n': goto yy449; case 'O': - case 'o': goto yy432; + case 'o': goto yy450; case 'P': - case 'p': goto yy421; + case 'p': goto yy439; case 'S': - case 's': goto yy433; + case 's': goto yy451; case 'T': - case 't': goto yy434; + case 't': goto yy452; case 'U': - case 'u': goto yy435; + case 'u': goto yy453; case 'V': - case 'v': goto yy436; - default: goto yy420; + case 'v': goto yy454; + default: goto yy438; } -yy420: +yy438: c = marker; - goto yy416; -yy421: + goto yy434; +yy439: yych = *++c; switch (yych) { - case '/': goto yy448; - case '>': goto yy449; + case '/': goto yy466; + case '>': goto yy467; case 'R': - case 'r': goto yy568; - default: goto yy442; + case 'r': goto yy586; + default: goto yy460; } -yy422: +yy440: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy557; + case 'd': goto yy575; case 'R': - case 'r': goto yy556; + case 'r': goto yy574; case 'S': - case 's': goto yy555; - default: goto yy420; + case 's': goto yy573; + default: goto yy438; } -yy423: +yy441: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy547; - default: goto yy420; + case 'l': goto yy565; + default: goto yy438; } -yy424: +yy442: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy540; + case 'a': goto yy558; case 'E': - case 'e': goto yy539; - default: goto yy420; + case 'e': goto yy557; + default: goto yy438; } -yy425: +yy443: yych = *++c; switch (yych) { case 'D': @@ -5988,23 +6090,23 @@ yy425: case 'T': case 'd': case 'l': - case 't': goto yy440; + case 't': goto yy458; case 'I': - case 'i': goto yy538; - default: goto yy420; + case 'i': goto yy556; + default: goto yy438; } -yy426: +yy444: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy514; + case 'i': goto yy532; case 'O': - case 'o': goto yy513; + case 'o': goto yy531; case 'R': - case 'r': goto yy512; - default: goto yy420; + case 'r': goto yy530; + default: goto yy438; } -yy427: +yy445: yych = *++c; switch (yych) { case '1': @@ -6014,122 +6116,122 @@ yy427: case '5': case '6': case 'R': - case 'r': goto yy440; + case 'r': goto yy458; case 'E': - case 'e': goto yy505; + case 'e': goto yy523; case 'G': - case 'g': goto yy504; - default: goto yy420; + case 'g': goto yy522; + default: goto yy438; } -yy428: +yy446: yych = *++c; switch (yych) { case 'S': - case 's': goto yy499; - default: goto yy420; + case 's': goto yy517; + default: goto yy438; } -yy429: +yy447: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy440; - default: goto yy420; + case 'i': goto yy458; + default: goto yy438; } -yy430: +yy448: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy496; + case 'a': goto yy514; case 'E': - case 'e': goto yy495; - default: goto yy420; + case 'e': goto yy513; + default: goto yy438; } -yy431: +yy449: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy484; + case 'a': goto yy502; case 'O': - case 'o': goto yy483; - default: goto yy420; + case 'o': goto yy501; + default: goto yy438; } -yy432: +yy450: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy440; + case 'l': goto yy458; case 'U': - case 'u': goto yy479; - default: goto yy420; + case 'u': goto yy497; + default: goto yy438; } -yy433: +yy451: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy474; - default: goto yy420; + case 'e': goto yy492; + default: goto yy438; } -yy434: +yy452: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy464; + case 'a': goto yy482; case 'B': - case 'b': goto yy463; + case 'b': goto yy481; case 'D': case 'R': case 'd': - case 'r': goto yy440; + case 'r': goto yy458; case 'F': - case 'f': goto yy462; + case 'f': goto yy480; case 'H': - case 'h': goto yy461; - default: goto yy420; + case 'h': goto yy479; + default: goto yy438; } -yy435: +yy453: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy440; - default: goto yy420; + case 'l': goto yy458; + default: goto yy438; } -yy436: +yy454: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy437; - default: goto yy420; + case 'i': goto yy455; + default: goto yy438; } -yy437: +yy455: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy438; - default: goto yy420; + case 'd': goto yy456; + default: goto yy438; } -yy438: +yy456: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy439; - default: goto yy420; + case 'e': goto yy457; + default: goto yy438; } -yy439: +yy457: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy440; - default: goto yy420; + case 'o': goto yy458; + default: goto yy438; } -yy440: +yy458: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy441; - case '\n': goto yy443; - case '\r': goto yy445; - case '/': goto yy448; + case ' ': goto yy459; + case '\n': goto yy461; + case '\r': goto yy463; + case '/': goto yy466; case ':': case 'A': case 'B': @@ -6183,19 +6285,19 @@ yy440: case 'w': case 'x': case 'y': - case 'z': goto yy446; - case '>': goto yy449; - default: goto yy420; + case 'z': goto yy464; + case '>': goto yy467; + default: goto yy438; } -yy441: +yy459: ++c; yych = *c; -yy442: +yy460: switch (yych) { case '\t': - case ' ': goto yy441; - case '\n': goto yy443; - case '\r': goto yy445; + case ' ': goto yy459; + case '\n': goto yy461; + case '\r': goto yy463; case ':': case 'A': case 'B': @@ -6249,15 +6351,15 @@ yy442: case 'w': case 'x': case 'y': - case 'z': goto yy446; - default: goto yy420; + case 'z': goto yy464; + default: goto yy438; } -yy443: +yy461: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy443; + case ' ': goto yy461; case ':': case 'A': case 'B': @@ -6311,16 +6413,16 @@ yy443: case 'w': case 'x': case 'y': - case 'z': goto yy446; - default: goto yy420; + case 'z': goto yy464; + default: goto yy438; } -yy445: +yy463: ++c; yych = *c; switch (yych) { case '\t': case '\n': - case ' ': goto yy443; + case ' ': goto yy461; case ':': case 'A': case 'B': @@ -6374,13 +6476,13 @@ yy445: case 'w': case 'x': case 'y': - case 'z': goto yy446; - default: goto yy420; + case 'z': goto yy464; + default: goto yy438; } -yy446: +yy464: ++c; yych = *c; -yy447: +yy465: switch (yych) { case '-': case '.': @@ -6447,27 +6549,27 @@ yy447: case 'w': case 'x': case 'y': - case 'z': goto yy446; - case '=': goto yy451; - default: goto yy420; + case 'z': goto yy464; + case '=': goto yy469; + default: goto yy438; } -yy448: +yy466: yych = *++c; switch (yych) { - case '>': goto yy449; - default: goto yy420; + case '>': goto yy467; + default: goto yy438; } -yy449: +yy467: ++c; { return (size_t)( c - start ); } -yy451: +yy469: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy451; - case '"': goto yy453; - case '\'': goto yy455; + case ' ': goto yy469; + case '"': goto yy471; + case '\'': goto yy473; case '.': case '0': case '1': @@ -6530,37 +6632,37 @@ yy451: case 'w': case 'x': case 'y': - case 'z': goto yy457; - default: goto yy420; + case 'z': goto yy475; + default: goto yy438; } -yy453: +yy471: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy420; - case '"': goto yy440; - default: goto yy453; + case '\r': goto yy438; + case '"': goto yy458; + default: goto yy471; } -yy455: +yy473: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy420; - case '\'': goto yy440; - default: goto yy455; + case '\r': goto yy438; + case '\'': goto yy458; + default: goto yy473; } -yy457: +yy475: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy441; - case '\n': goto yy443; - case '\r': goto yy445; + case ' ': goto yy459; + case '\n': goto yy461; + case '\r': goto yy463; case '.': case '0': case '1': @@ -6571,11 +6673,11 @@ yy457: case '6': case '7': case '8': - case '9': goto yy457; - case '/': goto yy448; + case '9': goto yy475; + case '/': goto yy466; case ':': - case '_': goto yy446; - case '>': goto yy449; + case '_': goto yy464; + case '>': goto yy467; case 'A': case 'B': case 'C': @@ -6627,20 +6729,20 @@ yy457: case 'w': case 'x': case 'y': - case 'z': goto yy459; - default: goto yy420; + case 'z': goto yy477; + default: goto yy438; } -yy459: +yy477: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy441; - case '\n': goto yy443; - case '\r': goto yy445; + case ' ': goto yy459; + case '\n': goto yy461; + case '\r': goto yy463; case '-': case ':': - case '_': goto yy446; + case '_': goto yy464; case '.': case '0': case '1': @@ -6703,99 +6805,99 @@ yy459: case 'w': case 'x': case 'y': - case 'z': goto yy459; - case '/': goto yy448; - case '=': goto yy451; - case '>': goto yy449; - default: goto yy420; + case 'z': goto yy477; + case '/': goto yy466; + case '=': goto yy469; + case '>': goto yy467; + default: goto yy438; } -yy461: +yy479: yych = *++c; switch (yych) { - case '/': goto yy448; - case '>': goto yy449; + case '/': goto yy466; + case '>': goto yy467; case 'E': - case 'e': goto yy471; - default: goto yy442; + case 'e': goto yy489; + default: goto yy460; } -yy462: +yy480: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy469; - default: goto yy420; + case 'o': goto yy487; + default: goto yy438; } -yy463: +yy481: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy467; - default: goto yy420; + case 'o': goto yy485; + default: goto yy438; } -yy464: +yy482: yych = *++c; switch (yych) { case 'B': - case 'b': goto yy465; - default: goto yy420; + case 'b': goto yy483; + default: goto yy438; } -yy465: +yy483: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy466; - default: goto yy420; + case 'l': goto yy484; + default: goto yy438; } -yy466: +yy484: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy440; - default: goto yy420; + case 'e': goto yy458; + default: goto yy438; } -yy467: +yy485: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy468; - default: goto yy420; + case 'd': goto yy486; + default: goto yy438; } -yy468: +yy486: yych = *++c; switch (yych) { case 'Y': - case 'y': goto yy440; - default: goto yy420; + case 'y': goto yy458; + default: goto yy438; } -yy469: +yy487: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy470; - default: goto yy420; + case 'o': goto yy488; + default: goto yy438; } -yy470: +yy488: yych = *++c; switch (yych) { case 'T': - case 't': goto yy440; - default: goto yy420; + case 't': goto yy458; + default: goto yy438; } -yy471: +yy489: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy472; - default: goto yy447; + case 'a': goto yy490; + default: goto yy465; } -yy472: +yy490: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy473; - default: goto yy447; + case 'd': goto yy491; + default: goto yy465; } -yy473: +yy491: yych = *++c; switch (yych) { case '-': @@ -6809,686 +6911,686 @@ yy473: case '6': case '7': case '8': - case '9': goto yy446; - case '/': goto yy448; - case '=': goto yy451; - case '>': goto yy449; - default: goto yy442; + case '9': goto yy464; + case '/': goto yy466; + case '=': goto yy469; + case '>': goto yy467; + default: goto yy460; } -yy474: +yy492: yych = *++c; switch (yych) { case 'C': - case 'c': goto yy475; - default: goto yy420; + case 'c': goto yy493; + default: goto yy438; } -yy475: +yy493: yych = *++c; switch (yych) { case 'T': - case 't': goto yy476; - default: goto yy420; + case 't': goto yy494; + default: goto yy438; } -yy476: +yy494: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy477; - default: goto yy420; + case 'i': goto yy495; + default: goto yy438; } -yy477: +yy495: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy478; - default: goto yy420; + case 'o': goto yy496; + default: goto yy438; } -yy478: +yy496: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy440; - default: goto yy420; + case 'n': goto yy458; + default: goto yy438; } -yy479: +yy497: yych = *++c; switch (yych) { case 'T': - case 't': goto yy480; - default: goto yy420; + case 't': goto yy498; + default: goto yy438; } -yy480: +yy498: yych = *++c; switch (yych) { case 'P': - case 'p': goto yy481; - default: goto yy420; + case 'p': goto yy499; + default: goto yy438; } -yy481: +yy499: yych = *++c; switch (yych) { case 'U': - case 'u': goto yy482; - default: goto yy420; + case 'u': goto yy500; + default: goto yy438; } -yy482: +yy500: yych = *++c; switch (yych) { case 'T': - case 't': goto yy440; - default: goto yy420; + case 't': goto yy458; + default: goto yy438; } -yy483: +yy501: yych = *++c; switch (yych) { case 'F': - case 'f': goto yy485; + case 'f': goto yy503; case 'S': - case 's': goto yy486; - default: goto yy420; + case 's': goto yy504; + default: goto yy438; } -yy484: +yy502: yych = *++c; switch (yych) { case 'V': - case 'v': goto yy440; - default: goto yy420; + case 'v': goto yy458; + default: goto yy438; } -yy485: +yy503: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy491; - default: goto yy420; + case 'r': goto yy509; + default: goto yy438; } -yy486: +yy504: yych = *++c; switch (yych) { case 'C': - case 'c': goto yy487; - default: goto yy420; + case 'c': goto yy505; + default: goto yy438; } -yy487: +yy505: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy488; - default: goto yy420; + case 'r': goto yy506; + default: goto yy438; } -yy488: +yy506: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy489; - default: goto yy420; + case 'i': goto yy507; + default: goto yy438; } -yy489: +yy507: yych = *++c; switch (yych) { case 'P': - case 'p': goto yy490; - default: goto yy420; + case 'p': goto yy508; + default: goto yy438; } -yy490: +yy508: yych = *++c; switch (yych) { case 'T': - case 't': goto yy440; - default: goto yy420; + case 't': goto yy458; + default: goto yy438; } -yy491: +yy509: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy492; - default: goto yy420; + case 'a': goto yy510; + default: goto yy438; } -yy492: +yy510: yych = *++c; switch (yych) { case 'M': - case 'm': goto yy493; - default: goto yy420; + case 'm': goto yy511; + default: goto yy438; } -yy493: +yy511: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy494; - default: goto yy420; + case 'e': goto yy512; + default: goto yy438; } -yy494: +yy512: yych = *++c; switch (yych) { case 'S': - case 's': goto yy440; - default: goto yy420; + case 's': goto yy458; + default: goto yy438; } -yy495: +yy513: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy498; - default: goto yy420; + case 'n': goto yy516; + default: goto yy438; } -yy496: +yy514: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy497; - default: goto yy420; + case 'i': goto yy515; + default: goto yy438; } -yy497: +yy515: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy440; - default: goto yy420; + case 'n': goto yy458; + default: goto yy438; } -yy498: +yy516: yych = *++c; switch (yych) { case 'U': - case 'u': goto yy440; - default: goto yy420; + case 'u': goto yy458; + default: goto yy438; } -yy499: +yy517: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy500; - default: goto yy420; + case 'i': goto yy518; + default: goto yy438; } -yy500: +yy518: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy501; - default: goto yy420; + case 'n': goto yy519; + default: goto yy438; } -yy501: +yy519: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy502; - default: goto yy420; + case 'd': goto yy520; + default: goto yy438; } -yy502: +yy520: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy503; - default: goto yy420; + case 'e': goto yy521; + default: goto yy438; } -yy503: +yy521: yych = *++c; switch (yych) { case 'X': - case 'x': goto yy440; - default: goto yy420; + case 'x': goto yy458; + default: goto yy438; } -yy504: +yy522: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy509; - default: goto yy420; + case 'r': goto yy527; + default: goto yy438; } -yy505: +yy523: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy506; - default: goto yy420; + case 'a': goto yy524; + default: goto yy438; } -yy506: +yy524: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy507; - default: goto yy420; + case 'd': goto yy525; + default: goto yy438; } -yy507: +yy525: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy508; - default: goto yy420; + case 'e': goto yy526; + default: goto yy438; } -yy508: +yy526: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy440; - default: goto yy420; + case 'r': goto yy458; + default: goto yy438; } -yy509: +yy527: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy510; - default: goto yy420; + case 'o': goto yy528; + default: goto yy438; } -yy510: +yy528: yych = *++c; switch (yych) { case 'U': - case 'u': goto yy511; - default: goto yy420; + case 'u': goto yy529; + default: goto yy438; } -yy511: +yy529: yych = *++c; switch (yych) { case 'P': - case 'p': goto yy440; - default: goto yy420; + case 'p': goto yy458; + default: goto yy438; } -yy512: +yy530: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy533; - default: goto yy420; + case 'a': goto yy551; + default: goto yy438; } -yy513: +yy531: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy529; + case 'o': goto yy547; case 'R': - case 'r': goto yy530; - default: goto yy420; + case 'r': goto yy548; + default: goto yy438; } -yy514: +yy532: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy515; + case 'e': goto yy533; case 'G': - case 'g': goto yy516; - default: goto yy420; + case 'g': goto yy534; + default: goto yy438; } -yy515: +yy533: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy525; - default: goto yy420; + case 'l': goto yy543; + default: goto yy438; } -yy516: +yy534: yych = *++c; switch (yych) { case 'C': - case 'c': goto yy518; + case 'c': goto yy536; case 'U': - case 'u': goto yy517; - default: goto yy420; + case 'u': goto yy535; + default: goto yy438; } -yy517: +yy535: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy524; - default: goto yy420; + case 'r': goto yy542; + default: goto yy438; } -yy518: +yy536: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy519; - default: goto yy420; + case 'a': goto yy537; + default: goto yy438; } -yy519: +yy537: yych = *++c; switch (yych) { case 'P': - case 'p': goto yy520; - default: goto yy420; + case 'p': goto yy538; + default: goto yy438; } -yy520: +yy538: yych = *++c; switch (yych) { case 'T': - case 't': goto yy521; - default: goto yy420; + case 't': goto yy539; + default: goto yy438; } -yy521: +yy539: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy522; - default: goto yy420; + case 'i': goto yy540; + default: goto yy438; } -yy522: +yy540: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy523; - default: goto yy420; + case 'o': goto yy541; + default: goto yy438; } -yy523: +yy541: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy440; - default: goto yy420; + case 'n': goto yy458; + default: goto yy438; } -yy524: +yy542: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy440; - default: goto yy420; + case 'e': goto yy458; + default: goto yy438; } -yy525: +yy543: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy526; - default: goto yy420; + case 'd': goto yy544; + default: goto yy438; } -yy526: +yy544: yych = *++c; switch (yych) { case 'S': - case 's': goto yy527; - default: goto yy420; + case 's': goto yy545; + default: goto yy438; } -yy527: +yy545: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy528; - default: goto yy420; + case 'e': goto yy546; + default: goto yy438; } -yy528: +yy546: yych = *++c; switch (yych) { case 'T': - case 't': goto yy440; - default: goto yy420; + case 't': goto yy458; + default: goto yy438; } -yy529: +yy547: yych = *++c; switch (yych) { case 'T': - case 't': goto yy531; - default: goto yy420; + case 't': goto yy549; + default: goto yy438; } -yy530: +yy548: yych = *++c; switch (yych) { case 'M': - case 'm': goto yy440; - default: goto yy420; + case 'm': goto yy458; + default: goto yy438; } -yy531: +yy549: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy532; - default: goto yy420; + case 'e': goto yy550; + default: goto yy438; } -yy532: +yy550: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy440; - default: goto yy420; + case 'r': goto yy458; + default: goto yy438; } -yy533: +yy551: yych = *++c; switch (yych) { case 'M': - case 'm': goto yy534; - default: goto yy420; + case 'm': goto yy552; + default: goto yy438; } -yy534: +yy552: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy535; - default: goto yy420; + case 'e': goto yy553; + default: goto yy438; } -yy535: +yy553: yych = *++c; switch (yych) { case 'S': - case 's': goto yy536; - default: goto yy420; + case 's': goto yy554; + default: goto yy438; } -yy536: +yy554: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy537; - default: goto yy420; + case 'e': goto yy555; + default: goto yy438; } -yy537: +yy555: yych = *++c; switch (yych) { case 'T': - case 't': goto yy440; - default: goto yy420; + case 't': goto yy458; + default: goto yy438; } -yy538: +yy556: yych = *++c; switch (yych) { case 'R': case 'V': case 'r': - case 'v': goto yy440; - default: goto yy420; + case 'v': goto yy458; + default: goto yy438; } -yy539: +yy557: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy544; - default: goto yy420; + case 'n': goto yy562; + default: goto yy438; } -yy540: +yy558: yych = *++c; switch (yych) { case 'N': - case 'n': goto yy541; - default: goto yy420; + case 'n': goto yy559; + default: goto yy438; } -yy541: +yy559: yych = *++c; switch (yych) { case 'V': - case 'v': goto yy542; - default: goto yy420; + case 'v': goto yy560; + default: goto yy438; } -yy542: +yy560: yych = *++c; switch (yych) { case 'A': - case 'a': goto yy543; - default: goto yy420; + case 'a': goto yy561; + default: goto yy438; } -yy543: +yy561: yych = *++c; switch (yych) { case 'S': - case 's': goto yy440; - default: goto yy420; + case 's': goto yy458; + default: goto yy438; } -yy544: +yy562: yych = *++c; switch (yych) { case 'T': - case 't': goto yy545; - default: goto yy420; + case 't': goto yy563; + default: goto yy438; } -yy545: +yy563: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy546; - default: goto yy420; + case 'e': goto yy564; + default: goto yy438; } -yy546: +yy564: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy440; - default: goto yy420; + case 'r': goto yy458; + default: goto yy438; } -yy547: +yy565: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy548; - default: goto yy420; + case 'o': goto yy566; + default: goto yy438; } -yy548: +yy566: yych = *++c; switch (yych) { case 'C': - case 'c': goto yy549; - default: goto yy420; + case 'c': goto yy567; + default: goto yy438; } -yy549: +yy567: yych = *++c; switch (yych) { case 'K': - case 'k': goto yy550; - default: goto yy420; + case 'k': goto yy568; + default: goto yy438; } -yy550: +yy568: yych = *++c; switch (yych) { case 'Q': - case 'q': goto yy551; - default: goto yy420; + case 'q': goto yy569; + default: goto yy438; } -yy551: +yy569: yych = *++c; switch (yych) { case 'U': - case 'u': goto yy552; - default: goto yy420; + case 'u': goto yy570; + default: goto yy438; } -yy552: +yy570: yych = *++c; switch (yych) { case 'O': - case 'o': goto yy553; - default: goto yy420; + case 'o': goto yy571; + default: goto yy438; } -yy553: +yy571: yych = *++c; switch (yych) { case 'T': - case 't': goto yy554; - default: goto yy420; + case 't': goto yy572; + default: goto yy438; } -yy554: +yy572: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy440; - default: goto yy420; + case 'e': goto yy458; + default: goto yy438; } -yy555: +yy573: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy566; - default: goto yy420; + case 'i': goto yy584; + default: goto yy438; } -yy556: +yy574: yych = *++c; switch (yych) { case 'T': - case 't': goto yy562; - default: goto yy420; + case 't': goto yy580; + default: goto yy438; } -yy557: +yy575: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy558; - default: goto yy420; + case 'd': goto yy576; + default: goto yy438; } -yy558: +yy576: yych = *++c; switch (yych) { case 'R': - case 'r': goto yy559; - default: goto yy420; + case 'r': goto yy577; + default: goto yy438; } -yy559: +yy577: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy560; - default: goto yy420; + case 'e': goto yy578; + default: goto yy438; } -yy560: +yy578: yych = *++c; switch (yych) { case 'S': - case 's': goto yy561; - default: goto yy420; + case 's': goto yy579; + default: goto yy438; } -yy561: +yy579: yych = *++c; switch (yych) { case 'S': - case 's': goto yy440; - default: goto yy420; + case 's': goto yy458; + default: goto yy438; } -yy562: +yy580: yych = *++c; switch (yych) { case 'I': - case 'i': goto yy563; - default: goto yy420; + case 'i': goto yy581; + default: goto yy438; } -yy563: +yy581: yych = *++c; switch (yych) { case 'C': - case 'c': goto yy564; - default: goto yy420; + case 'c': goto yy582; + default: goto yy438; } -yy564: +yy582: yych = *++c; switch (yych) { case 'L': - case 'l': goto yy565; - default: goto yy420; + case 'l': goto yy583; + default: goto yy438; } -yy565: +yy583: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy440; - default: goto yy420; + case 'e': goto yy458; + default: goto yy438; } -yy566: +yy584: yych = *++c; switch (yych) { case 'D': - case 'd': goto yy567; - default: goto yy420; + case 'd': goto yy585; + default: goto yy438; } -yy567: +yy585: yych = *++c; switch (yych) { case 'E': - case 'e': goto yy440; - default: goto yy420; + case 'e': goto yy458; + default: goto yy438; } -yy568: +yy586: ++c; switch ((yych = *c)) { case 'E': - case 'e': goto yy473; - default: goto yy447; + case 'e': goto yy491; + default: goto yy465; } } @@ -7504,17 +7606,17 @@ size_t scan_html_line(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy571; - case '<': goto yy572; - default: goto yy573; + case '\n': goto yy589; + case '<': goto yy590; + default: goto yy591; } -yy571: +yy589: { return 0; } -yy572: +yy590: yych = *(marker = ++c); switch (yych) { - case '!': goto yy574; - case '/': goto yy576; + case '!': goto yy592; + case '/': goto yy594; case 'A': case 'B': case 'C': @@ -7566,22 +7668,22 @@ yy572: case 'w': case 'x': case 'y': - case 'z': goto yy577; - default: goto yy571; + case 'z': goto yy595; + default: goto yy589; } -yy573: +yy591: yych = *++c; - goto yy571; -yy574: + goto yy589; +yy592: yych = *++c; switch (yych) { - case '-': goto yy608; - default: goto yy575; + case '-': goto yy626; + default: goto yy593; } -yy575: +yy593: c = marker; - goto yy571; -yy576: + goto yy589; +yy594: yych = *++c; switch (yych) { case 'A': @@ -7635,17 +7737,17 @@ yy576: case 'w': case 'x': case 'y': - case 'z': goto yy604; - default: goto yy575; + case 'z': goto yy622; + default: goto yy593; } -yy577: +yy595: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy581; - case '\n': goto yy583; - case '\r': goto yy585; + case ' ': goto yy599; + case '\n': goto yy601; + case '\r': goto yy603; case '-': case '0': case '1': @@ -7656,11 +7758,11 @@ yy577: case '6': case '7': case '8': - case '9': goto yy577; - case '/': goto yy590; + case '9': goto yy595; + case '/': goto yy608; case ':': - case '_': goto yy586; - case '>': goto yy588; + case '_': goto yy604; + case '>': goto yy606; case 'A': case 'B': case 'C': @@ -7712,17 +7814,17 @@ yy577: case 'w': case 'x': case 'y': - case 'z': goto yy579; - default: goto yy575; + case 'z': goto yy597; + default: goto yy593; } -yy579: +yy597: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy581; - case '\n': goto yy583; - case '\r': goto yy585; + case ' ': goto yy599; + case '\n': goto yy601; + case '\r': goto yy603; case '-': case '0': case '1': @@ -7785,24 +7887,24 @@ yy579: case 'w': case 'x': case 'y': - case 'z': goto yy579; + case 'z': goto yy597; case '.': case ':': - case '_': goto yy586; - case '/': goto yy590; - case '=': goto yy594; - case '>': goto yy588; - default: goto yy575; + case '_': goto yy604; + case '/': goto yy608; + case '=': goto yy612; + case '>': goto yy606; + default: goto yy593; } -yy581: +yy599: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy581; - case '\n': goto yy583; - case '\r': goto yy585; - case '/': goto yy590; + case ' ': goto yy599; + case '\n': goto yy601; + case '\r': goto yy603; + case '/': goto yy608; case ':': case 'A': case 'B': @@ -7856,16 +7958,16 @@ yy581: case 'w': case 'x': case 'y': - case 'z': goto yy586; - case '>': goto yy588; - default: goto yy575; + case 'z': goto yy604; + case '>': goto yy606; + default: goto yy593; } -yy583: +yy601: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy583; + case ' ': goto yy601; case ':': case 'A': case 'B': @@ -7919,16 +8021,16 @@ yy583: case 'w': case 'x': case 'y': - case 'z': goto yy586; - default: goto yy575; + case 'z': goto yy604; + default: goto yy593; } -yy585: +yy603: ++c; yych = *c; switch (yych) { case '\t': case '\n': - case ' ': goto yy583; + case ' ': goto yy601; case ':': case 'A': case 'B': @@ -7982,10 +8084,10 @@ yy585: case 'w': case 'x': case 'y': - case 'z': goto yy586; - default: goto yy575; + case 'z': goto yy604; + default: goto yy593; } -yy586: +yy604: ++c; yych = *c; switch (yych) { @@ -8054,44 +8156,44 @@ yy586: case 'w': case 'x': case 'y': - case 'z': goto yy586; - case '=': goto yy594; - default: goto yy575; + case 'z': goto yy604; + case '=': goto yy612; + default: goto yy593; } -yy588: +yy606: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy588; - case '\n': goto yy591; - case '\r': goto yy593; - default: goto yy575; + case ' ': goto yy606; + case '\n': goto yy609; + case '\r': goto yy611; + default: goto yy593; } -yy590: +yy608: yych = *++c; switch (yych) { - case '>': goto yy588; - default: goto yy575; + case '>': goto yy606; + default: goto yy593; } -yy591: +yy609: ++c; -yy592: +yy610: { return (size_t)( c - start ); } -yy593: +yy611: yych = *++c; switch (yych) { - case '\n': goto yy591; - default: goto yy592; + case '\n': goto yy609; + default: goto yy610; } -yy594: +yy612: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy594; - case '"': goto yy596; - case '\'': goto yy598; + case ' ': goto yy612; + case '"': goto yy614; + case '\'': goto yy616; case '.': case '0': case '1': @@ -8154,37 +8256,37 @@ yy594: case 'w': case 'x': case 'y': - case 'z': goto yy600; - default: goto yy575; + case 'z': goto yy618; + default: goto yy593; } -yy596: +yy614: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy575; - case '"': goto yy581; - default: goto yy596; + case '\r': goto yy593; + case '"': goto yy599; + default: goto yy614; } -yy598: +yy616: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy575; - case '\'': goto yy581; - default: goto yy598; + case '\r': goto yy593; + case '\'': goto yy599; + default: goto yy616; } -yy600: +yy618: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy581; - case '\n': goto yy583; - case '\r': goto yy585; + case ' ': goto yy599; + case '\n': goto yy601; + case '\r': goto yy603; case '.': case '0': case '1': @@ -8195,11 +8297,11 @@ yy600: case '6': case '7': case '8': - case '9': goto yy600; - case '/': goto yy590; + case '9': goto yy618; + case '/': goto yy608; case ':': - case '_': goto yy586; - case '>': goto yy588; + case '_': goto yy604; + case '>': goto yy606; case 'A': case 'B': case 'C': @@ -8251,20 +8353,20 @@ yy600: case 'w': case 'x': case 'y': - case 'z': goto yy602; - default: goto yy575; + case 'z': goto yy620; + default: goto yy593; } -yy602: +yy620: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy581; - case '\n': goto yy583; - case '\r': goto yy585; + case ' ': goto yy599; + case '\n': goto yy601; + case '\r': goto yy603; case '-': case ':': - case '_': goto yy586; + case '_': goto yy604; case '.': case '0': case '1': @@ -8327,18 +8429,18 @@ yy602: case 'w': case 'x': case 'y': - case 'z': goto yy602; - case '/': goto yy590; - case '=': goto yy594; - case '>': goto yy588; - default: goto yy575; + case 'z': goto yy620; + case '/': goto yy608; + case '=': goto yy612; + case '>': goto yy606; + default: goto yy593; } -yy604: +yy622: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy606; + case ' ': goto yy624; case '-': case '0': case '1': @@ -8401,58 +8503,58 @@ yy604: case 'w': case 'x': case 'y': - case 'z': goto yy604; - case '>': goto yy588; - default: goto yy575; + case 'z': goto yy622; + case '>': goto yy606; + default: goto yy593; } -yy606: +yy624: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy606; - case '>': goto yy588; - default: goto yy575; + case ' ': goto yy624; + case '>': goto yy606; + default: goto yy593; } -yy608: +yy626: yych = *++c; switch (yych) { - case '-': goto yy609; - default: goto yy575; + case '-': goto yy627; + default: goto yy593; } -yy609: +yy627: yych = *++c; switch (yych) { - case '-': goto yy575; - default: goto yy611; + case '-': goto yy593; + default: goto yy629; } -yy610: +yy628: ++c; yych = *c; -yy611: +yy629: switch (yych) { case 0x00: - case '>': goto yy575; - case '-': goto yy612; - default: goto yy610; + case '>': goto yy593; + case '-': goto yy630; + default: goto yy628; } -yy612: +yy630: ++c; yych = *c; switch (yych) { case 0x00: - case '>': goto yy575; - case '-': goto yy613; - default: goto yy610; + case '>': goto yy593; + case '-': goto yy631; + default: goto yy628; } -yy613: +yy631: ++c; yych = *c; switch (yych) { - case 0x00: goto yy575; - case '-': goto yy613; - case '>': goto yy588; - default: goto yy610; + case 0x00: goto yy593; + case '-': goto yy631; + case '>': goto yy606; + default: goto yy628; } } @@ -8468,108 +8570,108 @@ size_t scan_fence_start(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy617; - case ' ': goto yy618; + case '\n': goto yy635; + case ' ': goto yy636; case '`': - case '~': goto yy619; - default: goto yy620; + case '~': goto yy637; + default: goto yy638; } -yy617: +yy635: { return 0; } -yy618: +yy636: yych = *(marker = ++c); switch (yych) { - case ' ': goto yy632; + case ' ': goto yy650; case '`': - case '~': goto yy633; - default: goto yy617; + case '~': goto yy651; + default: goto yy635; } -yy619: +yy637: yych = *(marker = ++c); switch (yych) { case '`': - case '~': goto yy621; - default: goto yy617; + case '~': goto yy639; + default: goto yy635; } -yy620: +yy638: yych = *++c; - goto yy617; -yy621: + goto yy635; +yy639: yych = *++c; switch (yych) { case '`': - case '~': goto yy623; - default: goto yy622; + case '~': goto yy641; + default: goto yy640; } -yy622: +yy640: c = marker; - goto yy617; -yy623: + goto yy635; +yy641: ++c; yych = *c; switch (yych) { case 0x00: case '\n': case '\r': - case '\'': goto yy622; - case '`': goto yy623; - case '~': goto yy627; - default: goto yy625; + case '\'': goto yy640; + case '`': goto yy641; + case '~': goto yy645; + default: goto yy643; } -yy625: +yy643: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy629; - case '\r': goto yy631; + case '\n': goto yy647; + case '\r': goto yy649; case '\'': - case '`': goto yy622; - default: goto yy625; + case '`': goto yy640; + default: goto yy643; } -yy627: +yy645: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy629; - case '\r': goto yy631; - case '\'': goto yy622; - case '`': goto yy623; - case '~': goto yy627; - default: goto yy625; + case '\n': goto yy647; + case '\r': goto yy649; + case '\'': goto yy640; + case '`': goto yy641; + case '~': goto yy645; + default: goto yy643; } -yy629: +yy647: ++c; -yy630: +yy648: { return (size_t)( c - start ); } -yy631: +yy649: yych = *++c; switch (yych) { - case '\n': goto yy629; - default: goto yy630; + case '\n': goto yy647; + default: goto yy648; } -yy632: +yy650: yych = *++c; switch (yych) { - case ' ': goto yy634; + case ' ': goto yy652; case '`': - case '~': goto yy633; - default: goto yy622; + case '~': goto yy651; + default: goto yy640; } -yy633: +yy651: yych = *++c; switch (yych) { case '`': - case '~': goto yy621; - default: goto yy622; + case '~': goto yy639; + default: goto yy640; } -yy634: +yy652: ++c; switch ((yych = *c)) { case '`': - case '~': goto yy633; - default: goto yy622; + case '~': goto yy651; + default: goto yy640; } } @@ -8585,97 +8687,97 @@ size_t scan_fence_end(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy637; - case ' ': goto yy638; + case '\n': goto yy655; + case ' ': goto yy656; case '`': - case '~': goto yy639; - default: goto yy640; + case '~': goto yy657; + default: goto yy658; } -yy637: +yy655: { return 0; } -yy638: +yy656: yych = *(marker = ++c); switch (yych) { - case ' ': goto yy650; + case ' ': goto yy668; case '`': - case '~': goto yy651; - default: goto yy637; + case '~': goto yy669; + default: goto yy655; } -yy639: +yy657: yych = *(marker = ++c); switch (yych) { case '`': - case '~': goto yy641; - default: goto yy637; + case '~': goto yy659; + default: goto yy655; } -yy640: +yy658: yych = *++c; - goto yy637; -yy641: + goto yy655; +yy659: yych = *++c; switch (yych) { case '`': - case '~': goto yy643; - default: goto yy642; + case '~': goto yy661; + default: goto yy660; } -yy642: +yy660: c = marker; - goto yy637; -yy643: + goto yy655; +yy661: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy647; + case '\n': goto yy665; case '\t': - case ' ': goto yy645; - case '\r': goto yy649; + case ' ': goto yy663; + case '\r': goto yy667; case '`': - case '~': goto yy643; - default: goto yy642; + case '~': goto yy661; + default: goto yy660; } -yy645: +yy663: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy647; + case '\n': goto yy665; case '\t': - case ' ': goto yy645; - case '\r': goto yy649; - default: goto yy642; + case ' ': goto yy663; + case '\r': goto yy667; + default: goto yy660; } -yy647: +yy665: ++c; -yy648: +yy666: { return (size_t)( c - start ); } -yy649: +yy667: yych = *++c; switch (yych) { - case '\n': goto yy647; - default: goto yy648; + case '\n': goto yy665; + default: goto yy666; } -yy650: +yy668: yych = *++c; switch (yych) { - case ' ': goto yy652; + case ' ': goto yy670; case '`': - case '~': goto yy651; - default: goto yy642; + case '~': goto yy669; + default: goto yy660; } -yy651: +yy669: yych = *++c; switch (yych) { case '`': - case '~': goto yy641; - default: goto yy642; + case '~': goto yy659; + default: goto yy660; } -yy652: +yy670: ++c; switch ((yych = *c)) { case '`': - case '~': goto yy651; - default: goto yy642; + case '~': goto yy669; + default: goto yy660; } } @@ -8691,7 +8793,7 @@ size_t scan_meta_line(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy655; + case '\n': goto yy673; case '0': case '1': case '2': @@ -8753,15 +8855,15 @@ size_t scan_meta_line(const char * c) { case 'w': case 'x': case 'y': - case 'z': goto yy656; - default: goto yy657; + case 'z': goto yy674; + default: goto yy675; } -yy655: +yy673: { return 0; } -yy656: +yy674: yych = *(marker = ++c); switch (yych) { - case '\t': goto yy661; + case '\t': goto yy679; case ' ': case '!': case '"': @@ -8839,18 +8941,18 @@ yy656: case 'w': case 'x': case 'y': - case 'z': goto yy658; - case ':': goto yy663; - default: goto yy655; + case 'z': goto yy676; + case ':': goto yy681; + default: goto yy673; } -yy657: +yy675: yych = *++c; - goto yy655; -yy658: + goto yy673; +yy676: ++c; yych = *c; switch (yych) { - case '\t': goto yy661; + case '\t': goto yy679; case ' ': case '!': case '"': @@ -8928,48 +9030,48 @@ yy658: case 'w': case 'x': case 'y': - case 'z': goto yy658; - case ':': goto yy663; - default: goto yy660; + case 'z': goto yy676; + case ':': goto yy681; + default: goto yy678; } -yy660: +yy678: c = marker; - goto yy655; -yy661: + goto yy673; +yy679: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy661; - case ':': goto yy663; - default: goto yy660; + case ' ': goto yy679; + case ':': goto yy681; + default: goto yy678; } -yy663: +yy681: yych = *++c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy660; - default: goto yy664; + case '\r': goto yy678; + default: goto yy682; } -yy664: +yy682: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy666; - case '\r': goto yy668; - default: goto yy664; + case '\n': goto yy684; + case '\r': goto yy686; + default: goto yy682; } -yy666: +yy684: ++c; -yy667: +yy685: { return (size_t)( c - start ); } -yy668: +yy686: ++c; switch ((yych = *c)) { - case '\n': goto yy666; - default: goto yy667; + case '\n': goto yy684; + default: goto yy685; } } @@ -8984,7 +9086,7 @@ size_t scan_meta_key(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy671; + case '\n': goto yy689; case '0': case '1': case '2': @@ -9046,24 +9148,24 @@ size_t scan_meta_key(const char * c) { case 'w': case 'x': case 'y': - case 'z': goto yy672; - default: goto yy674; + case 'z': goto yy690; + default: goto yy692; } -yy671: +yy689: { return 0; } -yy672: +yy690: ++c; yych = *c; - goto yy676; -yy673: + goto yy694; +yy691: { return (size_t)( c - start ); } -yy674: +yy692: yych = *++c; - goto yy671; -yy675: + goto yy689; +yy693: ++c; yych = *c; -yy676: +yy694: switch (yych) { case ' ': case '!': @@ -9142,8 +9244,8 @@ yy676: case 'w': case 'x': case 'y': - case 'z': goto yy675; - default: goto yy673; + case 'z': goto yy693; + default: goto yy691; } } @@ -9159,71 +9261,71 @@ size_t scan_definition(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy679; - case ' ': goto yy680; - case ':': goto yy681; - default: goto yy682; + case '\n': goto yy697; + case ' ': goto yy698; + case ':': goto yy699; + default: goto yy700; } -yy679: +yy697: { return 0; } -yy680: +yy698: yych = *(marker = ++c); switch (yych) { - case ' ': goto yy687; - case ':': goto yy689; - default: goto yy679; + case ' ': goto yy705; + case ':': goto yy707; + default: goto yy697; } -yy681: +yy699: yych = *++c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy679; - default: goto yy684; + case '\r': goto yy697; + default: goto yy702; } -yy682: +yy700: yych = *++c; - goto yy679; -yy683: + goto yy697; +yy701: ++c; yych = *c; -yy684: +yy702: switch (yych) { case 0x00: case '\n': - case '\r': goto yy685; + case '\r': goto yy703; case '\t': - case ' ': goto yy683; - default: goto yy686; + case ' ': goto yy701; + default: goto yy704; } -yy685: +yy703: { return (size_t)( c - start ); } -yy686: +yy704: yych = *++c; - goto yy685; -yy687: + goto yy703; +yy705: yych = *++c; switch (yych) { - case ' ': goto yy690; - case ':': goto yy689; - default: goto yy688; + case ' ': goto yy708; + case ':': goto yy707; + default: goto yy706; } -yy688: +yy706: c = marker; - goto yy679; -yy689: + goto yy697; +yy707: yych = *++c; switch (yych) { case 0x00: case '\n': - case '\r': goto yy688; - default: goto yy684; + case '\r': goto yy706; + default: goto yy702; } -yy690: +yy708: ++c; switch ((yych = *c)) { - case ':': goto yy689; - default: goto yy688; + case ':': goto yy707; + default: goto yy706; } } @@ -9244,14 +9346,14 @@ size_t scan_table_separator(const char * c) { case '+': case '-': case ':': - case '=': goto yy695; - case '\n': goto yy693; - case '|': goto yy694; - default: goto yy696; + case '=': goto yy713; + case '\n': goto yy711; + case '|': goto yy712; + default: goto yy714; } -yy693: +yy711: { return 0; } -yy694: +yy712: yych = *(marker = ++c); switch (yych) { case 0x00: @@ -9263,10 +9365,10 @@ yy694: case '-': case ':': case '=': - case '|': goto yy706; - default: goto yy693; + case '|': goto yy724; + default: goto yy711; } -yy695: +yy713: yych = *(marker = ++c); switch (yych) { case '\t': @@ -9274,33 +9376,33 @@ yy695: case '+': case '-': case ':': - case '=': goto yy700; - case '|': goto yy697; - default: goto yy693; + case '=': goto yy718; + case '|': goto yy715; + default: goto yy711; } -yy696: +yy714: yych = *++c; - goto yy693; -yy697: + goto yy711; +yy715: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy702; + case '\n': goto yy720; case '\t': case ' ': case '+': case '-': case ':': case '=': - case '|': goto yy697; - case '\r': goto yy704; - default: goto yy699; + case '|': goto yy715; + case '\r': goto yy722; + default: goto yy717; } -yy699: +yy717: c = marker; - goto yy693; -yy700: + goto yy711; +yy718: ++c; yych = *c; switch (yych) { @@ -9309,36 +9411,36 @@ yy700: case '+': case '-': case ':': - case '=': goto yy700; - case '|': goto yy697; - default: goto yy699; + case '=': goto yy718; + case '|': goto yy715; + default: goto yy717; } -yy702: +yy720: ++c; -yy703: +yy721: { return (size_t)( c - start ); } -yy704: +yy722: yych = *++c; switch (yych) { - case '\n': goto yy702; - default: goto yy703; + case '\n': goto yy720; + default: goto yy721; } -yy705: +yy723: ++c; yych = *c; -yy706: +yy724: switch (yych) { case 0x00: - case '\n': goto yy702; + case '\n': goto yy720; case '\t': case ' ': case '+': case '-': case ':': case '=': - case '|': goto yy705; - case '\r': goto yy704; - default: goto yy699; + case '|': goto yy723; + case '\r': goto yy722; + default: goto yy717; } } @@ -9354,234 +9456,234 @@ size_t scan_alignment_string(const char * c) { yych = *c; switch (yych) { case '\t': - case ' ': goto yy710; - case '\n': goto yy709; + case ' ': goto yy728; + case '\n': goto yy727; case '-': - case '=': goto yy712; - case ':': goto yy711; - default: goto yy713; + case '=': goto yy730; + case ':': goto yy729; + default: goto yy731; } -yy709: +yy727: { return 0; } -yy710: +yy728: yych = *(marker = ++c); switch (yych) { case '\t': - case ' ': goto yy752; + case ' ': goto yy770; case '-': - case '=': goto yy716; - case ':': goto yy751; - default: goto yy709; + case '=': goto yy734; + case ':': goto yy769; + default: goto yy727; } -yy711: +yy729: yych = *(marker = ++c); switch (yych) { case '-': - case '=': goto yy728; - default: goto yy709; + case '=': goto yy746; + default: goto yy727; } -yy712: +yy730: yych = *(marker = ++c); switch (yych) { case '-': - case '=': goto yy716; - case ':': goto yy714; - default: goto yy709; + case '=': goto yy734; + case ':': goto yy732; + default: goto yy727; } -yy713: +yy731: yych = *++c; - goto yy709; -yy714: + goto yy727; +yy732: yych = *++c; switch (yych) { - case '+': goto yy723; - default: goto yy719; + case '+': goto yy741; + default: goto yy737; } -yy715: +yy733: c = marker; - goto yy709; -yy716: + goto yy727; +yy734: ++c; yych = *c; switch (yych) { case '-': - case '=': goto yy716; - case ':': goto yy714; - default: goto yy715; + case '=': goto yy734; + case ':': goto yy732; + default: goto yy733; } -yy718: +yy736: ++c; yych = *c; -yy719: +yy737: switch (yych) { case 0x00: case '\n': - case '|': goto yy720; + case '|': goto yy738; case '\t': - case ' ': goto yy718; - case '\r': goto yy722; - default: goto yy715; + case ' ': goto yy736; + case '\r': goto yy740; + default: goto yy733; } -yy720: +yy738: ++c; -yy721: +yy739: { return ALIGN_RIGHT; } -yy722: +yy740: yych = *++c; switch (yych) { - case '\n': goto yy720; - default: goto yy721; + case '\n': goto yy738; + default: goto yy739; } -yy723: +yy741: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '|': goto yy725; + case '|': goto yy743; case '\t': - case ' ': goto yy723; - case '\r': goto yy727; - default: goto yy715; + case ' ': goto yy741; + case '\r': goto yy745; + default: goto yy733; } -yy725: +yy743: ++c; -yy726: +yy744: { return ALIGN_WRAP | ALIGN_RIGHT; } -yy727: +yy745: yych = *++c; switch (yych) { - case '\n': goto yy725; - default: goto yy726; + case '\n': goto yy743; + default: goto yy744; } -yy728: +yy746: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '|': goto yy732; + case '|': goto yy750; case '\t': - case ' ': goto yy730; - case '\r': goto yy734; - case '+': goto yy736; + case ' ': goto yy748; + case '\r': goto yy752; + case '+': goto yy754; case '-': - case '=': goto yy728; - case ':': goto yy735; - default: goto yy715; + case '=': goto yy746; + case ':': goto yy753; + default: goto yy733; } -yy730: +yy748: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '|': goto yy732; + case '|': goto yy750; case '\t': - case ' ': goto yy730; - case '\r': goto yy734; - default: goto yy715; + case ' ': goto yy748; + case '\r': goto yy752; + default: goto yy733; } -yy732: +yy750: ++c; -yy733: +yy751: { return ALIGN_LEFT; } -yy734: +yy752: yych = *++c; switch (yych) { - case '\n': goto yy732; - default: goto yy733; + case '\n': goto yy750; + default: goto yy751; } -yy735: +yy753: yych = *++c; switch (yych) { - case '+': goto yy741; - default: goto yy744; + case '+': goto yy759; + default: goto yy762; } -yy736: +yy754: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '|': goto yy738; + case '|': goto yy756; case '\t': - case ' ': goto yy736; - case '\r': goto yy740; - default: goto yy715; + case ' ': goto yy754; + case '\r': goto yy758; + default: goto yy733; } -yy738: +yy756: ++c; -yy739: +yy757: { return ALIGN_WRAP | ALIGN_LEFT; } -yy740: +yy758: yych = *++c; switch (yych) { - case '\n': goto yy738; - default: goto yy739; + case '\n': goto yy756; + default: goto yy757; } -yy741: +yy759: ++c; yych = *c; switch (yych) { case 0x00: case '\n': - case '|': goto yy748; + case '|': goto yy766; case '\t': - case ' ': goto yy741; - case '\r': goto yy750; - default: goto yy715; + case ' ': goto yy759; + case '\r': goto yy768; + default: goto yy733; } -yy743: +yy761: ++c; yych = *c; -yy744: +yy762: switch (yych) { case 0x00: case '\n': - case '|': goto yy745; + case '|': goto yy763; case '\t': - case ' ': goto yy743; - case '\r': goto yy747; - default: goto yy715; + case ' ': goto yy761; + case '\r': goto yy765; + default: goto yy733; } -yy745: +yy763: ++c; -yy746: +yy764: { return ALIGN_CENTER; } -yy747: +yy765: yych = *++c; switch (yych) { - case '\n': goto yy745; - default: goto yy746; + case '\n': goto yy763; + default: goto yy764; } -yy748: +yy766: ++c; -yy749: +yy767: { return ALIGN_WRAP | ALIGN_CENTER; } -yy750: +yy768: yych = *++c; switch (yych) { - case '\n': goto yy748; - default: goto yy749; + case '\n': goto yy766; + default: goto yy767; } -yy751: +yy769: yych = *++c; switch (yych) { case '-': - case '=': goto yy728; - default: goto yy715; + case '=': goto yy746; + default: goto yy733; } -yy752: +yy770: ++c; yych = *c; switch (yych) { case '\t': - case ' ': goto yy752; + case ' ': goto yy770; case '-': - case '=': goto yy716; - case ':': goto yy751; - default: goto yy715; + case '=': goto yy734; + case ':': goto yy769; + default: goto yy733; } } @@ -9599,49 +9701,49 @@ size_t scan_destination(const char * c) { case 0x00: case '\t': case '\r': - case ' ': goto yy760; - case '\n': goto yy756; - case '<': goto yy757; - default: goto yy759; + case ' ': goto yy778; + case '\n': goto yy774; + case '<': goto yy775; + default: goto yy777; } -yy756: +yy774: { return 0; } -yy757: +yy775: ++c; yych = *c; - goto yy764; -yy758: + goto yy782; +yy776: { return (size_t)( c - start ); } -yy759: +yy777: yych = *++c; - goto yy762; -yy760: + goto yy780; +yy778: yych = *++c; - goto yy756; -yy761: + goto yy774; +yy779: ++c; yych = *c; -yy762: +yy780: switch (yych) { case 0x00: case '\t': case '\n': case '\r': - case ' ': goto yy758; - default: goto yy761; + case ' ': goto yy776; + default: goto yy779; } -yy763: +yy781: ++c; yych = *c; -yy764: +yy782: switch (yych) { case 0x00: case '\t': case '\n': case '\r': - case ' ': goto yy758; - case '>': goto yy761; - default: goto yy763; + case ' ': goto yy776; + case '>': goto yy779; + default: goto yy781; } } @@ -9657,79 +9759,79 @@ size_t scan_title(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy767; - case '"': goto yy768; - case '\'': goto yy769; - case '(': goto yy770; - default: goto yy771; + case '\n': goto yy785; + case '"': goto yy786; + case '\'': goto yy787; + case '(': goto yy788; + default: goto yy789; } -yy767: +yy785: { return 0; } -yy768: +yy786: yych = *(marker = ++c); switch (yych) { case 0x00: case '\n': - case '\r': goto yy767; - default: goto yy780; + case '\r': goto yy785; + default: goto yy798; } -yy769: +yy787: yych = *(marker = ++c); switch (yych) { case 0x00: case '\n': - case '\r': goto yy767; - default: goto yy778; + case '\r': goto yy785; + default: goto yy796; } -yy770: +yy788: yych = *(marker = ++c); switch (yych) { case 0x00: case '\n': - case '\r': goto yy767; - default: goto yy773; + case '\r': goto yy785; + default: goto yy791; } -yy771: +yy789: yych = *++c; - goto yy767; -yy772: + goto yy785; +yy790: ++c; yych = *c; -yy773: +yy791: switch (yych) { case 0x00: case '\n': - case '\r': goto yy774; - case ')': goto yy775; - default: goto yy772; + case '\r': goto yy792; + case ')': goto yy793; + default: goto yy790; } -yy774: +yy792: c = marker; - goto yy767; -yy775: + goto yy785; +yy793: ++c; { return (size_t)( c - start ); } -yy777: +yy795: ++c; yych = *c; -yy778: +yy796: switch (yych) { case 0x00: case '\n': - case '\r': goto yy774; - case '\'': goto yy775; - default: goto yy777; + case '\r': goto yy792; + case '\'': goto yy793; + default: goto yy795; } -yy779: +yy797: ++c; yych = *c; -yy780: +yy798: switch (yych) { case 0x00: case '\n': - case '\r': goto yy774; - case '"': goto yy775; - default: goto yy779; + case '\r': goto yy792; + case '"': goto yy793; + default: goto yy797; } } @@ -9744,106 +9846,106 @@ size_t scan_setext(const char * c) { char yych; yych = *c; switch (yych) { - case '\n': goto yy783; - case ' ': goto yy784; - case '-': goto yy786; - case '=': goto yy785; - default: goto yy787; + case '\n': goto yy801; + case ' ': goto yy802; + case '-': goto yy804; + case '=': goto yy803; + default: goto yy805; } -yy783: +yy801: { return 0; } -yy784: +yy802: yych = *(marker = ++c); switch (yych) { - case ' ': goto yy799; - case '-': goto yy800; - case '=': goto yy801; - default: goto yy783; + case ' ': goto yy817; + case '-': goto yy818; + case '=': goto yy819; + default: goto yy801; } -yy785: +yy803: yych = *(marker = ++c); switch (yych) { - case '=': goto yy794; - default: goto yy783; + case '=': goto yy812; + default: goto yy801; } -yy786: +yy804: yych = *(marker = ++c); switch (yych) { - case '-': goto yy788; - default: goto yy783; + case '-': goto yy806; + default: goto yy801; } -yy787: +yy805: yych = *++c; - goto yy783; -yy788: + goto yy801; +yy806: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy791; - case '\r': goto yy793; - case '-': goto yy788; - default: goto yy790; + case '\n': goto yy809; + case '\r': goto yy811; + case '-': goto yy806; + default: goto yy808; } -yy790: +yy808: c = marker; - goto yy783; -yy791: + goto yy801; +yy809: ++c; -yy792: +yy810: { return (size_t)( c - start ); } -yy793: +yy811: yych = *++c; switch (yych) { - case '\n': goto yy791; - default: goto yy792; + case '\n': goto yy809; + default: goto yy810; } -yy794: +yy812: ++c; yych = *c; switch (yych) { case 0x00: - case '\n': goto yy796; - case '\r': goto yy798; - case '=': goto yy794; - default: goto yy790; + case '\n': goto yy814; + case '\r': goto yy816; + case '=': goto yy812; + default: goto yy808; } -yy796: +yy814: ++c; -yy797: +yy815: { return (size_t)( c - start ); } -yy798: +yy816: yych = *++c; switch (yych) { - case '\n': goto yy796; - default: goto yy797; + case '\n': goto yy814; + default: goto yy815; } -yy799: +yy817: yych = *++c; switch (yych) { - case ' ': goto yy802; - case '-': goto yy800; - case '=': goto yy801; - default: goto yy790; + case ' ': goto yy820; + case '-': goto yy818; + case '=': goto yy819; + default: goto yy808; } -yy800: +yy818: yych = *++c; switch (yych) { - case '-': goto yy788; - default: goto yy790; + case '-': goto yy806; + default: goto yy808; } -yy801: +yy819: yych = *++c; switch (yych) { - case '=': goto yy794; - default: goto yy790; + case '=': goto yy812; + default: goto yy808; } -yy802: +yy820: ++c; switch ((yych = *c)) { - case '-': goto yy800; - case '=': goto yy801; - default: goto yy790; + case '-': goto yy818; + case '=': goto yy819; + default: goto yy808; } } diff --git a/Sources/libMultiMarkdown/scanners.h b/Sources/libMultiMarkdown/scanners.h index f06b676..c046085 100644 --- a/Sources/libMultiMarkdown/scanners.h +++ b/Sources/libMultiMarkdown/scanners.h @@ -87,6 +87,7 @@ size_t scan_meta_line(const char * c); size_t scan_ref_abbreviation(const char * c); size_t scan_ref_citation(const char * c); size_t scan_ref_foot(const char * c); +size_t scan_ref_glossary(const char * c); size_t scan_ref_link(const char * c); size_t scan_ref_link_no_attributes(const char * c); size_t scan_setext(const char * c); diff --git a/Sources/libMultiMarkdown/scanners.re b/Sources/libMultiMarkdown/scanners.re index 03559e5..7d0e3f9 100644 --- a/Sources/libMultiMarkdown/scanners.re +++ b/Sources/libMultiMarkdown/scanners.re @@ -95,6 +95,8 @@ ref_foot = non_indent '[^' label ']' ':' finish_line; + ref_glossary = non_indent '[?' label ']' ':' finish_line; + ref_link = non_indent '[' label ']' ':' finish_line; destination = ('<' [^ \t\n\r\x00>]* '>') | [^ \t\n\r\x00]+; @@ -256,6 +258,7 @@ size_t scan_ref_citation(const char * c) { */ } + size_t scan_ref_foot(const char * c) { const char * marker = NULL; const char * start = c; @@ -267,6 +270,17 @@ size_t scan_ref_foot(const char * c) { } +size_t scan_ref_glossary(const char * c) { + const char * marker = NULL; + const char * start = c; + +/*!re2c + ref_glossary { return (size_t)( c - start ); } + .? { return 0; } +*/ +} + + size_t scan_ref_link_no_attributes(const char * c) { const char * marker = NULL; const char * start = c; diff --git a/Sources/libMultiMarkdown/writer.c b/Sources/libMultiMarkdown/writer.c index fa394a7..a573d2d 100644 --- a/Sources/libMultiMarkdown/writer.c +++ b/Sources/libMultiMarkdown/writer.c @@ -76,6 +76,8 @@ void store_citation(scratch_pad * scratch, footnote * f); void store_footnote(scratch_pad * scratch, footnote * f); +void store_glossary(scratch_pad * scratch, footnote * f); + void store_link(scratch_pad * scratch, link * l); void store_metadata(scratch_pad * scratch, meta * m); @@ -143,6 +145,22 @@ scratch_pad * scratch_pad_new(mmd_engine * e, short format) { store_link(p, l); } + // Store citations in a hash for rapid retrieval when exporting + footnote * f; + + p->used_citations = stack_new(0); + p->inline_citations_to_free = stack_new(0); + p->citation_being_printed = 0; + + p->citation_hash = NULL; + + for (int i = 0; i < e->citation_stack->size; ++i) + { + f = stack_peek_index(e->citation_stack, i); + + store_citation(p, f); + } + // Store footnotes in a hash for rapid retrieval when exporting p->used_footnotes = stack_new(0); // Store footnotes as we use them p->inline_footnotes_to_free = stack_new(0); // Inline footnotes need to be freed @@ -151,8 +169,6 @@ scratch_pad * scratch_pad_new(mmd_engine * e, short format) { p->footnote_hash = NULL; // Store defined footnotes in a hash - footnote * f; - for (int i = 0; i < e->footnote_stack->size; ++i) { f = stack_peek_index(e->footnote_stack, i); @@ -160,18 +176,18 @@ scratch_pad * scratch_pad_new(mmd_engine * e, short format) { store_footnote(p, f); } - // Store citations in a hash for rapid retrieval when exporting - p->used_citations = stack_new(0); - p->inline_citations_to_free = stack_new(0); - p->citation_being_printed = 0; + // Store glossaries in a hash for rapid retrieval when exporting + p->used_glossaries = stack_new(0); + p->inline_glossaries_to_free = stack_new(0); + p->glossary_being_printed = 0; - p->citation_hash = NULL; + p->glossary_hash = NULL; - for (int i = 0; i < e->citation_stack->size; ++i) + for (int i = 0; i < e->glossary_stack->size; ++i) { - f = stack_peek_index(e->citation_stack, i); + f = stack_peek_index(e->glossary_stack, i); - store_citation(p, f); + store_glossary(p, f); } // Store metadata in a hash for rapid retrieval when exporting @@ -245,6 +261,21 @@ void scratch_pad_free(scratch_pad * scratch) { } stack_free(scratch->inline_citations_to_free); + + // Free glossary hash + HASH_ITER(hh, scratch->glossary_hash, f, f_tmp) { + HASH_DEL(scratch->glossary_hash, f); // Remove item from hash + free(f); // Free the fn_holder + } + + stack_free(scratch->used_glossaries); + + while (scratch->inline_glossaries_to_free->size) { + footnote_free(stack_pop(scratch->inline_glossaries_to_free)); + } + stack_free(scratch->inline_glossaries_to_free); + + // Free metadata hash meta * m, * m_tmp; @@ -663,6 +694,19 @@ void store_citation(scratch_pad * scratch, footnote * f) { } +void store_glossary(scratch_pad * scratch, footnote * f) { + fn_holder * temp_holder; + + // Store by `label_text`? + HASH_FIND_STR(scratch->glossary_hash, f->label_text, temp_holder); + + if (!temp_holder) { + temp_holder = fn_holder_new(f); + HASH_ADD_KEYPTR(hh, scratch->glossary_hash, f->label_text, strlen(f->label_text), temp_holder); + } +} + + void store_metadata(scratch_pad * scratch, meta * m) { meta * temp; @@ -1057,28 +1101,29 @@ bool definition_extract(mmd_engine * e, token ** remainder) { switch (label->type) { case PAIR_BRACKET_CITATION: - if (e->extensions & EXT_NOTES) { - if (!token_chain_accept(remainder, COLON)) - return false; - - title = *remainder; // Track first token of content in 'title' - f = footnote_new(e->dstr->str, label, title); - - // Store citation for later use - stack_push(e->citation_stack, f); - - break; - } case PAIR_BRACKET_FOOTNOTE: + case PAIR_BRACKET_GLOSSARY: if (e->extensions & EXT_NOTES) { if (!token_chain_accept(remainder, COLON)) return false; title = *remainder; // Track first token of content in 'title' - f = footnote_new(e->dstr->str, label, title); - // Store footnote for later use - stack_push(e->footnote_stack, f); + // Store for later use + switch (label->type) { + case PAIR_BRACKET_CITATION: + f = footnote_new(e->dstr->str, label, title); + stack_push(e->citation_stack, f); + break; + case PAIR_BRACKET_GLOSSARY: + f = footnote_new(e->dstr->str, label, title); + stack_push(e->glossary_stack, f); + break; + case PAIR_BRACKET_FOOTNOTE: + f = footnote_new(e->dstr->str, label, title); + stack_push(e->footnote_stack, f); + break; + } break; } @@ -1175,16 +1220,24 @@ void process_definition_block(mmd_engine * e, token * block) { label = label->child; switch (block->type) { - case BLOCK_DEF_FOOTNOTE: - f = footnote_new(e->dstr->str, label, block->child); - stack_push(e->footnote_stack, f); - label->type = TEXT_EMPTY; - label->next->type = TEXT_EMPTY; - strip_leading_whitespace(label, e->dstr->str); - break; case BLOCK_DEF_CITATION: + case BLOCK_DEF_FOOTNOTE: + case BLOCK_DEF_GLOSSARY: f = footnote_new(e->dstr->str, label, block->child); - stack_push(e->citation_stack, f); + switch (block->type) { + case BLOCK_DEF_CITATION: + stack_push(e->citation_stack, f); + break; + case BLOCK_DEF_FOOTNOTE: + stack_push(e->footnote_stack, f); + break; + case BLOCK_DEF_GLOSSARY: + // Strip leading '?' from term + memmove(f->clean_text, &(f->clean_text)[1],strlen(f->clean_text)); + + stack_push(e->glossary_stack, f); + break; + } label->type = TEXT_EMPTY; label->next->type = TEXT_EMPTY; strip_leading_whitespace(label, e->dstr->str); @@ -1580,6 +1633,7 @@ void mmd_export_token_tree(DString * out, mmd_engine * e, short format) { mmd_export_token_tree_html(out, e->dstr->str, e->root, 0, scratch); mmd_export_footnote_list_html(out, e->dstr->str, scratch); + mmd_export_glossary_list_html(out, e->dstr->str, scratch); mmd_export_citation_list_html(out, e->dstr->str, scratch); if (scratch->extensions & EXT_COMPLETE) @@ -1670,6 +1724,7 @@ void parse_brackets(const char * source, scratch_pad * scratch, token * bracket, case PAIR_BRACKET: case PAIR_BRACKET_CITATION: case PAIR_BRACKET_FOOTNOTE: + case PAIR_BRACKET_GLOSSARY: case PAIR_BRACKET_VARIABLE: case PAIR_BRACKET_ABBREVIATION: *final_link = NULL; @@ -1732,6 +1787,17 @@ void mark_footnote_as_used(scratch_pad * scratch, footnote * f) { } +void mark_glossary_as_used(scratch_pad * scratch, footnote * c) { + if (c->count == -1) { + // Add glossary to used stack + stack_push(scratch->used_glossaries, c); + + // Update counter + c->count = scratch->used_glossaries->size; + } +} + + size_t extract_citation_from_stack(scratch_pad * scratch, const char * target) { char * key = clean_string(target, true); @@ -1792,6 +1858,36 @@ size_t extract_footnote_from_stack(scratch_pad * scratch, const char * target) { } +size_t extract_glossary_from_stack(scratch_pad * scratch, const char * target) { + char * key = clean_string(target, true); + + fn_holder * h; + + HASH_FIND_STR(scratch->glossary_hash, key, h); + + free(key); + + if (h) { + mark_glossary_as_used(scratch, h->note); + return h->note->count; + } + + key = label_from_string(target); + + HASH_FIND_STR(scratch->glossary_hash, key, h); + + free(key); + + if (h) { + mark_glossary_as_used(scratch, h->note); + return h->note->count; + } + + // None found + return -1; +} + + void footnote_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num) { // Get text inside bracket char * text = text_inside_pair(source, t); @@ -1852,6 +1948,45 @@ void citation_from_bracket(const char * source, scratch_pad * scratch, token * t } +void glossary_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num) { + // Get text inside bracket + char * text = text_inside_pair(source, t); + short glossary_id = extract_glossary_from_stack(scratch, text); + + free(text); + + if (glossary_id == -1) { + // No match, this is an inline glossary -- create a new glossary entry + t->child->type = TEXT_EMPTY; + t->child->mate->type = TEXT_EMPTY; + + // Create glossary + token * label = t->child; + while (label && label->type != PAIR_PAREN) + label = label->next; + + if (label) { + footnote * temp = footnote_new(source, label, label->next); + + // Store as used + stack_push(scratch->used_glossaries, temp); + *num = scratch->used_glossaries->size; + temp->count = *num; + + // We need to free this one later since it doesn't exist + // in the engine's stack, on the scratch_pad stack + stack_push(scratch->inline_glossaries_to_free, temp); + } else { + // Improperly formatted glossary + *num = -1; + } + } else { + // Glossary in stack + *num = glossary_id; + } +} + + void read_table_column_alignments(const char * source, token * table, scratch_pad * scratch) { token * walker = table->child->child; diff --git a/Sources/libMultiMarkdown/writer.h b/Sources/libMultiMarkdown/writer.h index 8133238..8932205 100644 --- a/Sources/libMultiMarkdown/writer.h +++ b/Sources/libMultiMarkdown/writer.h @@ -93,6 +93,11 @@ typedef struct { struct fn_holder * citation_hash; short citation_being_printed; + stack * used_glossaries; + stack * inline_glossaries_to_free; + struct fn_holder * glossary_hash; + short glossary_being_printed; + struct abbr * abbreviation_hash; short language; @@ -207,8 +212,9 @@ void print_token_tree_raw(DString * out, const char * source, token * t); char * url_accept(const char * source, size_t start, size_t max_len, size_t * end_pos, bool validate); -void footnote_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num); void citation_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num); +void footnote_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num); +void glossary_from_bracket(const char * source, scratch_pad * scratch, token * t, short * num); meta * meta_new(const char * source, size_t start, size_t len); void meta_set_value(meta * m, const char * value); diff --git a/tests/MMD6Tests/Glossaries.html b/tests/MMD6Tests/Glossaries.html new file mode 100644 index 0000000..d8298b3 --- /dev/null +++ b/tests/MMD6Tests/Glossaries.html @@ -0,0 +1,44 @@ + + + + + Glossary + + + +

foo

+ +

bar

+ +

foo bar

+ +

foo

+ +

[?bar]

+ +

5

+ +
+
+
    + +
  1. +foo:

    Reference  ↩

    +
  2. + +
  3. +bar:

    Inline  ↩

    +
  4. + +
  5. +foo bar:

    Reference

    + +

    With second para.  ↩

    +
  6. + +
+
+ + + + diff --git a/tests/MMD6Tests/Glossaries.htmlc b/tests/MMD6Tests/Glossaries.htmlc new file mode 100644 index 0000000..880ea80 --- /dev/null +++ b/tests/MMD6Tests/Glossaries.htmlc @@ -0,0 +1,17 @@ +

latexconfig: article +Title: Glossary

+ +

?foo

+ +

[?(bar) Inline]

+ +

?foo bar

+ +

?foo

+ +

[?bar]

+ +

5

+ +
With second para.
+
diff --git a/tests/MMD6Tests/Glossaries.tex b/tests/MMD6Tests/Glossaries.tex new file mode 100644 index 0000000..e53cd02 --- /dev/null +++ b/tests/MMD6Tests/Glossaries.tex @@ -0,0 +1,26 @@ +\input{mmd6-article-leader} +\def\mytitle{Glossary} +\longnewglossaryentry{foo}{name=foo}{Reference} + +\longnewglossaryentry{foobar}{name=foo bar}{ + +Reference + +With second para.} + +\input{mmd6-article-begin} + +\gls{foo} + +\newglossaryentry{bar}{name=bar, description={Inline}}\gls{bar} + +\gls{foobar} + +\gls{foo} + +[?bar] + +5 + +\input{mmd6-article-footer} +\end{document} diff --git a/tests/MMD6Tests/Glossaries.text b/tests/MMD6Tests/Glossaries.text new file mode 100644 index 0000000..64b3fb0 --- /dev/null +++ b/tests/MMD6Tests/Glossaries.text @@ -0,0 +1,20 @@ +latexconfig: article +Title: Glossary + +[?foo] + +[?(bar) Inline] + +[?foo bar] + +[?foo] + +[?bar] + +5 + +[?foo]: Reference + +[?foo bar]: Reference + + With second para.