From: Fletcher T. Penney Date: Tue, 7 Feb 2017 14:19:22 +0000 (-0500) Subject: ADDED: Modify table parsing to be more consistent with PHP Markdown Extra in regards... X-Git-Tag: 0.1.2a^2~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=561eef99c43c64028778c79bb6aba2bf40407d76;p=multimarkdown ADDED: Modify table parsing to be more consistent with PHP Markdown Extra in regards to extra 'separator' lines in the body --- diff --git a/src/mmd.c b/src/mmd.c index 3a2ff4c..cd1c361 100644 --- a/src/mmd.c +++ b/src/mmd.c @@ -1597,10 +1597,12 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) { break; case LINE_TABLE_SEPARATOR: case LINE_TABLE: - if ((block->type == BLOCK_TABLE_SECTION) || - (block->type == BLOCK_TABLE_HEADER)) { + if (block->type == BLOCK_TABLE_HEADER) { l->type = (l->type == LINE_TABLE) ? TABLE_ROW : LINE_TABLE_SEPARATOR; parse_table_row_into_cells(l); + } else if (block->type == BLOCK_TABLE_SECTION) { + l->type = TABLE_ROW; + parse_table_row_into_cells(l); } else { goto handle_line; } diff --git a/src/parser.c b/src/parser.c index 3c72a7b..eef46be 100644 --- a/src/parser.c +++ b/src/parser.c @@ -92,7 +92,7 @@ #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char -#define YYNOCODE 69 +#define YYNOCODE 71 #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 48 -#define YYNRULE 110 -#define YY_MAX_SHIFT 47 -#define YY_MIN_SHIFTREDUCE 112 -#define YY_MAX_SHIFTREDUCE 221 -#define YY_MIN_REDUCE 222 -#define YY_MAX_REDUCE 331 -#define YY_ERROR_ACTION 332 -#define YY_ACCEPT_ACTION 333 -#define YY_NO_ACTION 334 +#define YYNSTATE 50 +#define YYNRULE 114 +#define YY_MAX_SHIFT 49 +#define YY_MIN_SHIFTREDUCE 117 +#define YY_MAX_SHIFTREDUCE 230 +#define YY_MIN_REDUCE 231 +#define YY_MAX_REDUCE 344 +#define YY_ERROR_ACTION 345 +#define YY_ACCEPT_ACTION 346 +#define YY_NO_ACTION 347 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -188,81 +188,83 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (203) +#define YY_ACTTAB_COUNT (220) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 222, 23, 139, 139, 190, 191, 203, 15, 117, 118, - /* 10 */ 119, 120, 121, 122, 128, 16, 5, 4, 3, 2, - /* 20 */ 17, 14, 13, 135, 192, 12, 42, 23, 33, 33, - /* 30 */ 190, 191, 203, 15, 117, 118, 119, 120, 121, 122, - /* 40 */ 128, 16, 5, 4, 3, 2, 17, 14, 13, 135, - /* 50 */ 192, 12, 42, 333, 1, 114, 29, 11, 46, 41, - /* 60 */ 39, 126, 127, 129, 130, 131, 132, 133, 134, 136, - /* 70 */ 44, 22, 22, 11, 30, 30, 41, 196, 39, 203, - /* 80 */ 10, 45, 31, 31, 209, 218, 34, 34, 210, 195, - /* 90 */ 36, 36, 113, 29, 11, 46, 41, 39, 126, 127, - /* 100 */ 129, 130, 131, 132, 133, 134, 136, 217, 35, 35, - /* 110 */ 11, 213, 32, 41, 192, 39, 186, 10, 45, 175, - /* 120 */ 37, 37, 44, 160, 6, 6, 32, 36, 36, 32, - /* 130 */ 32, 18, 214, 18, 190, 191, 190, 191, 7, 7, - /* 140 */ 32, 8, 8, 138, 32, 20, 213, 20, 24, 19, - /* 150 */ 24, 19, 9, 9, 189, 213, 140, 138, 32, 26, - /* 160 */ 161, 26, 32, 21, 173, 21, 186, 214, 32, 38, - /* 170 */ 38, 138, 42, 171, 177, 138, 214, 25, 157, 25, - /* 180 */ 170, 27, 156, 27, 40, 40, 161, 192, 28, 153, - /* 190 */ 4, 43, 43, 179, 142, 138, 220, 5, 148, 143, - /* 200 */ 47, 140, 182, + /* 0 */ 346, 1, 119, 31, 13, 48, 43, 41, 131, 132, + /* 10 */ 134, 135, 136, 137, 138, 139, 141, 196, 197, 47, + /* 20 */ 13, 192, 164, 43, 198, 41, 202, 4, 46, 44, + /* 30 */ 18, 18, 47, 9, 12, 12, 9, 195, 201, 38, + /* 40 */ 38, 231, 25, 209, 181, 196, 197, 212, 17, 122, + /* 50 */ 123, 124, 125, 126, 127, 133, 19, 6, 5, 3, + /* 60 */ 2, 20, 16, 15, 140, 198, 14, 44, 25, 209, + /* 70 */ 30, 196, 197, 212, 17, 122, 123, 124, 125, 126, + /* 80 */ 127, 133, 19, 6, 5, 3, 2, 20, 16, 15, + /* 90 */ 140, 198, 14, 44, 118, 31, 13, 48, 43, 41, + /* 100 */ 131, 132, 134, 135, 136, 137, 138, 139, 141, 209, + /* 110 */ 144, 144, 13, 212, 34, 43, 183, 41, 176, 4, + /* 120 */ 46, 218, 18, 18, 34, 219, 7, 7, 34, 32, + /* 130 */ 32, 38, 38, 21, 147, 21, 8, 8, 34, 34, + /* 140 */ 10, 10, 34, 23, 161, 23, 185, 26, 167, 26, + /* 150 */ 11, 11, 143, 222, 153, 143, 34, 28, 22, 28, + /* 160 */ 22, 24, 227, 24, 47, 166, 12, 12, 209, 143, + /* 170 */ 34, 179, 212, 143, 223, 27, 222, 27, 5, 196, + /* 180 */ 197, 192, 148, 143, 226, 35, 35, 222, 6, 29, + /* 190 */ 162, 29, 33, 33, 177, 36, 36, 223, 34, 145, + /* 200 */ 37, 37, 198, 39, 39, 40, 40, 229, 223, 42, + /* 210 */ 42, 45, 45, 167, 49, 145, 188, 233, 233, 158, }; static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 0, 1, 47, 48, 4, 5, 6, 7, 8, 9, - /* 10 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - /* 20 */ 20, 21, 22, 23, 24, 25, 26, 1, 63, 64, - /* 30 */ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - /* 40 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 50 */ 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, - /* 60 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 70 */ 56, 57, 58, 48, 61, 62, 51, 3, 53, 6, - /* 80 */ 55, 56, 61, 62, 3, 3, 59, 60, 7, 15, - /* 90 */ 65, 66, 30, 31, 32, 33, 34, 35, 36, 37, - /* 100 */ 38, 39, 40, 41, 42, 43, 44, 25, 49, 50, - /* 110 */ 48, 3, 33, 51, 24, 53, 3, 55, 56, 62, - /* 120 */ 45, 46, 56, 57, 45, 46, 33, 65, 66, 33, - /* 130 */ 33, 52, 24, 54, 4, 5, 4, 5, 45, 46, - /* 140 */ 33, 45, 46, 46, 33, 52, 3, 54, 52, 52, - /* 150 */ 54, 54, 45, 46, 24, 3, 24, 46, 33, 52, - /* 160 */ 6, 54, 33, 52, 21, 54, 3, 24, 33, 45, - /* 170 */ 46, 46, 26, 21, 64, 46, 24, 52, 24, 54, - /* 180 */ 60, 52, 2, 54, 45, 46, 6, 24, 48, 54, - /* 190 */ 17, 65, 66, 66, 50, 46, 3, 16, 53, 51, - /* 200 */ 67, 24, 3, + /* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + /* 10 */ 38, 39, 40, 41, 42, 43, 44, 4, 5, 56, + /* 20 */ 48, 3, 59, 51, 24, 53, 3, 55, 56, 26, + /* 30 */ 58, 59, 56, 57, 58, 59, 60, 24, 15, 67, + /* 40 */ 68, 0, 1, 2, 64, 4, 5, 6, 7, 8, + /* 50 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + /* 60 */ 19, 20, 21, 22, 23, 24, 25, 26, 1, 2, + /* 70 */ 48, 4, 5, 6, 7, 8, 9, 10, 11, 12, + /* 80 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + /* 90 */ 23, 24, 25, 26, 30, 31, 32, 33, 34, 35, + /* 100 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 2, + /* 110 */ 47, 48, 48, 6, 33, 51, 66, 53, 62, 55, + /* 120 */ 56, 3, 58, 59, 33, 7, 45, 46, 33, 63, + /* 130 */ 64, 67, 68, 52, 50, 54, 45, 46, 33, 33, + /* 140 */ 45, 46, 33, 52, 2, 54, 68, 52, 6, 54, + /* 150 */ 45, 46, 46, 3, 53, 46, 33, 52, 52, 54, + /* 160 */ 54, 52, 3, 54, 56, 57, 58, 59, 2, 46, + /* 170 */ 33, 21, 6, 46, 24, 52, 3, 54, 17, 4, + /* 180 */ 5, 3, 51, 46, 25, 65, 66, 3, 16, 52, + /* 190 */ 24, 54, 63, 64, 21, 61, 62, 24, 33, 24, + /* 200 */ 49, 50, 24, 45, 46, 45, 46, 3, 24, 45, + /* 210 */ 46, 67, 68, 6, 69, 24, 3, 70, 70, 54, }; -#define YY_SHIFT_USE_DFLT (203) -#define YY_SHIFT_COUNT (47) +#define YY_SHIFT_USE_DFLT (220) +#define YY_SHIFT_COUNT (49) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (199) +#define YY_SHIFT_MAX (213) static const unsigned char yy_shift_ofst[] = { - /* 0 */ 26, 0, 163, 163, 163, 163, 163, 163, 163, 163, - /* 10 */ 73, 130, 82, 108, 108, 81, 74, 113, 90, 90, - /* 20 */ 90, 90, 73, 113, 90, 90, 90, 90, 113, 146, - /* 30 */ 143, 152, 132, 82, 81, 74, 146, 113, 113, 173, - /* 40 */ 113, 181, 193, 146, 154, 180, 177, 199, + /* 0 */ 67, 41, 178, 178, 107, 178, 178, 178, 178, 107, + /* 10 */ 178, 178, 166, 13, 159, 184, 184, 118, 107, 23, + /* 20 */ 18, 0, 0, 0, 0, 18, 0, 0, 0, 0, + /* 30 */ 18, 3, 150, 173, 175, 159, 118, 23, 3, 18, + /* 40 */ 18, 161, 18, 172, 204, 3, 142, 207, 191, 213, }; -#define YY_REDUCE_USE_DFLT (-46) -#define YY_REDUCE_COUNT (43) -#define YY_REDUCE_MIN (-45) -#define YY_REDUCE_MAX (149) +#define YY_REDUCE_USE_DFLT (-38) +#define YY_REDUCE_COUNT (45) +#define YY_REDUCE_MIN (-37) +#define YY_REDUCE_MAX (165) static const short yy_reduce_ofst[] = { - /* 0 */ 25, 62, 79, 93, 96, 107, 97, 111, 125, 129, - /* 10 */ 14, -45, -35, 13, 21, 27, 59, 75, 135, 135, - /* 20 */ 135, 135, 66, 124, 135, 135, 135, 135, 139, 126, - /* 30 */ 57, 57, 140, 110, 120, 144, 127, 149, 149, 145, - /* 40 */ 149, 148, 133, 127, + /* 0 */ -28, 64, 81, 91, -24, 95, 105, 106, 109, 108, + /* 10 */ 123, 137, -37, 63, 120, 66, 129, 134, -37, 151, + /* 20 */ 158, 165, 165, 165, 165, 160, 165, 165, 165, 165, + /* 30 */ 164, 144, -20, -20, 22, 50, 56, 84, 78, 127, + /* 40 */ 127, 101, 127, 131, 145, 78, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 332, 332, 315, 314, 262, 257, 276, 273, 260, 255, - /* 10 */ 311, 226, 325, 322, 322, 317, 303, 316, 277, 275, - /* 20 */ 274, 272, 269, 294, 261, 259, 256, 254, 265, 225, - /* 30 */ 284, 282, 310, 286, 279, 251, 331, 278, 247, 235, - /* 40 */ 264, 234, 291, 288, 268, 293, 233, 290, + /* 0 */ 345, 345, 328, 327, 324, 271, 266, 286, 283, 279, + /* 10 */ 269, 264, 277, 235, 338, 335, 335, 330, 303, 313, + /* 20 */ 329, 287, 285, 284, 282, 304, 270, 268, 265, 263, + /* 30 */ 274, 234, 294, 292, 320, 296, 289, 260, 344, 288, + /* 40 */ 256, 244, 273, 243, 301, 298, 322, 322, 242, 300, }; /********** End of lemon-generated parsing tables *****************************/ @@ -404,9 +406,10 @@ static const char *const yyTokenName[] = { "definition_block", "para_lines", "para_line", "code_line", "indented_line", "quote_lines", "quote_line", "item_bulleted", "cont_blocks", "item_enumerated", "cont_block", "table_header", - "table_rows", "table_section", "table_body", "html_block_lines", - "html_block_line", "fenced_lines", "fenced_line", "meta_lines", - "meta_line", "defs", "def", "def_lines", + "header_rows", "table_section", "all_rows", "row", + "table_body", "html_block_lines", "html_block_line", "fenced_lines", + "fenced_line", "meta_lines", "meta_line", "defs", + "def", "def_lines", }; #endif /* NDEBUG */ @@ -458,72 +461,76 @@ static const char *const yyRuleName[] = { /* 41 */ "cont_blocks ::= cont_blocks cont_block", /* 42 */ "cont_block ::= empty indented_line para_lines", /* 43 */ "cont_block ::= empty indented_line", - /* 44 */ "table_header ::= table_rows LINE_TABLE_SEPARATOR", - /* 45 */ "table_section ::= table_rows LINE_EMPTY", - /* 46 */ "table_section ::= table_rows", - /* 47 */ "table ::= table_header table_body", - /* 48 */ "table_body ::= table_body table_section", - /* 49 */ "table_rows ::= table_rows LINE_TABLE", - /* 50 */ "def_citation ::= LINE_DEF_CITATION para_lines cont_blocks", - /* 51 */ "def_citation ::= LINE_DEF_CITATION para_lines", - /* 52 */ "def_citation ::= LINE_DEF_CITATION cont_blocks", - /* 53 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks", - /* 54 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines", - /* 55 */ "def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks", - /* 56 */ "def_link ::= LINE_DEF_LINK para_lines", - /* 57 */ "html_block ::= LINE_HTML html_block_lines", - /* 58 */ "html_block_lines ::= html_block_lines html_block_line", - /* 59 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK", - /* 60 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines", - /* 61 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK", - /* 62 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines", - /* 63 */ "fenced_lines ::= fenced_lines fenced_line", - /* 64 */ "meta_block ::= LINE_META meta_lines", - /* 65 */ "meta_lines ::= meta_lines meta_line", - /* 66 */ "definition_block ::= para defs", - /* 67 */ "defs ::= defs def", - /* 68 */ "def ::= LINE_DEFINITION def_lines", - /* 69 */ "def ::= LINE_DEFINITION", - /* 70 */ "def_lines ::= def_lines LINE_CONTINUATION", - /* 71 */ "para ::= table_rows", - /* 72 */ "para ::= LINE_PLAIN", - /* 73 */ "para_lines ::= para_line", - /* 74 */ "para_line ::= LINE_CONTINUATION", - /* 75 */ "indented_code ::= indented_line", - /* 76 */ "code_line ::= indented_line", - /* 77 */ "code_line ::= LINE_EMPTY", - /* 78 */ "indented_line ::= LINE_INDENTED_TAB", - /* 79 */ "indented_line ::= LINE_INDENTED_SPACE", - /* 80 */ "empty ::= LINE_EMPTY", - /* 81 */ "blockquote ::= LINE_BLOCKQUOTE", - /* 82 */ "quote_lines ::= quote_line", - /* 83 */ "quote_line ::= LINE_BLOCKQUOTE", - /* 84 */ "quote_line ::= LINE_CONTINUATION", - /* 85 */ "list_bulleted ::= item_bulleted", - /* 86 */ "list_enumerated ::= item_enumerated", - /* 87 */ "cont_blocks ::= cont_block", - /* 88 */ "cont_block ::= empty", - /* 89 */ "table ::= table_header", - /* 90 */ "table_body ::= table_section", - /* 91 */ "table_rows ::= LINE_TABLE", - /* 92 */ "def_citation ::= LINE_DEF_CITATION", - /* 93 */ "def_footnote ::= LINE_DEF_FOOTNOTE", - /* 94 */ "def_link ::= LINE_DEF_LINK", - /* 95 */ "html_block ::= LINE_HTML", - /* 96 */ "html_block_lines ::= html_block_line", - /* 97 */ "html_block_line ::= LINE_CONTINUATION", - /* 98 */ "html_block_line ::= LINE_HTML", - /* 99 */ "fenced_lines ::= fenced_line", - /* 100 */ "fenced_lines ::=", - /* 101 */ "fenced_line ::= LINE_CONTINUATION", - /* 102 */ "fenced_line ::= LINE_EMPTY", - /* 103 */ "meta_block ::= LINE_META", - /* 104 */ "meta_lines ::= meta_line", - /* 105 */ "meta_line ::= LINE_META", - /* 106 */ "meta_line ::= LINE_CONTINUATION", - /* 107 */ "defs ::= def", - /* 108 */ "def_lines ::= LINE_CONTINUATION", - /* 109 */ "para ::= defs", + /* 44 */ "table_header ::= header_rows LINE_TABLE_SEPARATOR", + /* 45 */ "table_section ::= all_rows LINE_EMPTY", + /* 46 */ "table_section ::= all_rows", + /* 47 */ "all_rows ::= all_rows row", + /* 48 */ "table ::= table_header table_body", + /* 49 */ "table_body ::= table_body table_section", + /* 50 */ "header_rows ::= header_rows LINE_TABLE", + /* 51 */ "def_citation ::= LINE_DEF_CITATION para_lines cont_blocks", + /* 52 */ "def_citation ::= LINE_DEF_CITATION para_lines", + /* 53 */ "def_citation ::= LINE_DEF_CITATION cont_blocks", + /* 54 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks", + /* 55 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines", + /* 56 */ "def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks", + /* 57 */ "def_link ::= LINE_DEF_LINK para_lines", + /* 58 */ "html_block ::= LINE_HTML html_block_lines", + /* 59 */ "html_block_lines ::= html_block_lines html_block_line", + /* 60 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK", + /* 61 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines", + /* 62 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK", + /* 63 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines", + /* 64 */ "fenced_lines ::= fenced_lines fenced_line", + /* 65 */ "meta_block ::= LINE_META meta_lines", + /* 66 */ "meta_lines ::= meta_lines meta_line", + /* 67 */ "definition_block ::= para defs", + /* 68 */ "defs ::= defs def", + /* 69 */ "def ::= LINE_DEFINITION def_lines", + /* 70 */ "def ::= LINE_DEFINITION", + /* 71 */ "def_lines ::= def_lines LINE_CONTINUATION", + /* 72 */ "para ::= all_rows", + /* 73 */ "para ::= LINE_PLAIN", + /* 74 */ "para_lines ::= para_line", + /* 75 */ "para_line ::= LINE_CONTINUATION", + /* 76 */ "indented_code ::= indented_line", + /* 77 */ "code_line ::= indented_line", + /* 78 */ "code_line ::= LINE_EMPTY", + /* 79 */ "indented_line ::= LINE_INDENTED_TAB", + /* 80 */ "indented_line ::= LINE_INDENTED_SPACE", + /* 81 */ "empty ::= LINE_EMPTY", + /* 82 */ "blockquote ::= LINE_BLOCKQUOTE", + /* 83 */ "quote_lines ::= quote_line", + /* 84 */ "quote_line ::= LINE_BLOCKQUOTE", + /* 85 */ "quote_line ::= LINE_CONTINUATION", + /* 86 */ "list_bulleted ::= item_bulleted", + /* 87 */ "list_enumerated ::= item_enumerated", + /* 88 */ "cont_blocks ::= cont_block", + /* 89 */ "cont_block ::= empty", + /* 90 */ "all_rows ::= row", + /* 91 */ "row ::= header_rows", + /* 92 */ "row ::= LINE_TABLE_SEPARATOR", + /* 93 */ "table ::= table_header", + /* 94 */ "table_body ::= table_section", + /* 95 */ "header_rows ::= LINE_TABLE", + /* 96 */ "def_citation ::= LINE_DEF_CITATION", + /* 97 */ "def_footnote ::= LINE_DEF_FOOTNOTE", + /* 98 */ "def_link ::= LINE_DEF_LINK", + /* 99 */ "html_block ::= LINE_HTML", + /* 100 */ "html_block_lines ::= html_block_line", + /* 101 */ "html_block_line ::= LINE_CONTINUATION", + /* 102 */ "html_block_line ::= LINE_HTML", + /* 103 */ "fenced_lines ::= fenced_line", + /* 104 */ "fenced_lines ::=", + /* 105 */ "fenced_line ::= LINE_CONTINUATION", + /* 106 */ "fenced_line ::= LINE_EMPTY", + /* 107 */ "meta_block ::= LINE_META", + /* 108 */ "meta_lines ::= meta_line", + /* 109 */ "meta_line ::= LINE_META", + /* 110 */ "meta_line ::= LINE_CONTINUATION", + /* 111 */ "defs ::= def", + /* 112 */ "def_lines ::= LINE_CONTINUATION", + /* 113 */ "para ::= defs", }; #endif /* NDEBUG */ @@ -919,8 +926,9 @@ static const struct { { 55, 2 }, { 57, 2 }, { 57, 1 }, - { 37, 2 }, { 58, 2 }, + { 37, 2 }, + { 60, 2 }, { 56, 2 }, { 38, 3 }, { 38, 2 }, @@ -930,19 +938,19 @@ static const struct { { 39, 2 }, { 40, 2 }, { 41, 2 }, - { 59, 2 }, + { 61, 2 }, { 42, 3 }, { 42, 2 }, { 42, 3 }, { 42, 2 }, - { 61, 2 }, - { 43, 2 }, { 63, 2 }, - { 44, 2 }, + { 43, 2 }, { 65, 2 }, - { 66, 2 }, - { 66, 1 }, + { 44, 2 }, { 67, 2 }, + { 68, 2 }, + { 68, 1 }, + { 69, 2 }, { 31, 1 }, { 31, 1 }, { 45, 1 }, @@ -961,26 +969,29 @@ static const struct { { 35, 1 }, { 52, 1 }, { 54, 1 }, - { 37, 1 }, { 58, 1 }, + { 59, 1 }, + { 59, 1 }, + { 37, 1 }, + { 60, 1 }, { 56, 1 }, { 38, 1 }, { 39, 1 }, { 40, 1 }, { 41, 1 }, - { 59, 1 }, - { 60, 1 }, - { 60, 1 }, { 61, 1 }, - { 61, 0 }, { 62, 1 }, { 62, 1 }, - { 43, 1 }, { 63, 1 }, + { 63, 0 }, { 64, 1 }, { 64, 1 }, + { 43, 1 }, { 65, 1 }, + { 66, 1 }, + { 66, 1 }, { 67, 1 }, + { 69, 1 }, { 31, 1 }, }; @@ -1167,23 +1178,24 @@ static void yy_reduce( case 31: /* list_bulleted ::= list_bulleted item_bulleted */ yytestcase(yyruleno==31); case 36: /* list_enumerated ::= list_enumerated item_enumerated */ yytestcase(yyruleno==36); case 41: /* cont_blocks ::= cont_blocks cont_block */ yytestcase(yyruleno==41); - case 47: /* table ::= table_header table_body */ yytestcase(yyruleno==47); - case 48: /* table_body ::= table_body table_section */ yytestcase(yyruleno==48); - case 49: /* table_rows ::= table_rows LINE_TABLE */ yytestcase(yyruleno==49); - case 51: /* def_citation ::= LINE_DEF_CITATION para_lines */ yytestcase(yyruleno==51); - case 52: /* def_citation ::= LINE_DEF_CITATION cont_blocks */ yytestcase(yyruleno==52); - case 54: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines */ yytestcase(yyruleno==54); - case 55: /* def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks */ yytestcase(yyruleno==55); - case 56: /* def_link ::= LINE_DEF_LINK para_lines */ yytestcase(yyruleno==56); - case 57: /* html_block ::= LINE_HTML html_block_lines */ yytestcase(yyruleno==57); - case 58: /* html_block_lines ::= html_block_lines html_block_line */ yytestcase(yyruleno==58); - case 60: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines */ yytestcase(yyruleno==60); - case 62: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines */ yytestcase(yyruleno==62); - case 63: /* fenced_lines ::= fenced_lines fenced_line */ yytestcase(yyruleno==63); - case 64: /* meta_block ::= LINE_META meta_lines */ yytestcase(yyruleno==64); - case 65: /* meta_lines ::= meta_lines meta_line */ yytestcase(yyruleno==65); - case 67: /* defs ::= defs def */ yytestcase(yyruleno==67); - case 70: /* def_lines ::= def_lines LINE_CONTINUATION */ yytestcase(yyruleno==70); + case 47: /* all_rows ::= all_rows row */ yytestcase(yyruleno==47); + case 48: /* table ::= table_header table_body */ yytestcase(yyruleno==48); + case 49: /* table_body ::= table_body table_section */ yytestcase(yyruleno==49); + case 50: /* header_rows ::= header_rows LINE_TABLE */ yytestcase(yyruleno==50); + case 52: /* def_citation ::= LINE_DEF_CITATION para_lines */ yytestcase(yyruleno==52); + case 53: /* def_citation ::= LINE_DEF_CITATION cont_blocks */ yytestcase(yyruleno==53); + case 55: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines */ yytestcase(yyruleno==55); + case 56: /* def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks */ yytestcase(yyruleno==56); + case 57: /* def_link ::= LINE_DEF_LINK para_lines */ yytestcase(yyruleno==57); + case 58: /* html_block ::= LINE_HTML html_block_lines */ yytestcase(yyruleno==58); + case 59: /* html_block_lines ::= html_block_lines html_block_line */ yytestcase(yyruleno==59); + case 61: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines */ yytestcase(yyruleno==61); + case 63: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines */ yytestcase(yyruleno==63); + case 64: /* fenced_lines ::= fenced_lines fenced_line */ yytestcase(yyruleno==64); + case 65: /* meta_block ::= LINE_META meta_lines */ yytestcase(yyruleno==65); + case 66: /* meta_lines ::= meta_lines meta_line */ yytestcase(yyruleno==66); + case 68: /* defs ::= defs def */ yytestcase(yyruleno==68); + case 71: /* def_lines ::= def_lines LINE_CONTINUATION */ yytestcase(yyruleno==71); { yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; @@ -1218,83 +1230,86 @@ static void yy_reduce( { 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 44: /* table_header ::= table_rows LINE_TABLE_SEPARATOR */ + case 44: /* 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 45: /* table_section ::= table_rows LINE_EMPTY */ + case 45: /* 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 46: /* table_section ::= table_rows */ + case 46: /* table_section ::= all_rows */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE_SECTION); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 50: /* def_citation ::= LINE_DEF_CITATION para_lines cont_blocks */ - case 53: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks */ yytestcase(yyruleno==53); + case 51: /* def_citation ::= LINE_DEF_CITATION para_lines cont_blocks */ + case 54: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks */ yytestcase(yyruleno==54); { 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[-2].minor.yy0 = yylhsminor.yy0; break; - case 59: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK */ - case 61: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK */ yytestcase(yyruleno==61); + case 60: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK */ + case 62: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK */ yytestcase(yyruleno==62); { 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[0].minor.yy0->child->type = CODE_FENCE; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; - case 66: /* definition_block ::= para defs */ + case 67: /* 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 68: /* def ::= LINE_DEFINITION def_lines */ + case 69: /* def ::= LINE_DEFINITION def_lines */ { yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_DEFINITION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; - case 69: /* def ::= LINE_DEFINITION */ + case 70: /* def ::= LINE_DEFINITION */ { yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFINITION); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; - case 71: /* para ::= table_rows */ + case 72: /* para ::= all_rows */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; default: - /* (72) para ::= LINE_PLAIN */ yytestcase(yyruleno==72); - /* (73) para_lines ::= para_line (OPTIMIZED OUT) */ assert(yyruleno!=73); - /* (74) para_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==74); - /* (75) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=75); - /* (76) code_line ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=76); - /* (77) code_line ::= LINE_EMPTY */ yytestcase(yyruleno==77); - /* (78) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==78); - /* (79) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==79); - /* (80) empty ::= LINE_EMPTY */ yytestcase(yyruleno==80); - /* (81) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==81); - /* (82) quote_lines ::= quote_line (OPTIMIZED OUT) */ assert(yyruleno!=82); - /* (83) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==83); - /* (84) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==84); - /* (85) list_bulleted ::= item_bulleted (OPTIMIZED OUT) */ assert(yyruleno!=85); - /* (86) list_enumerated ::= item_enumerated (OPTIMIZED OUT) */ assert(yyruleno!=86); - /* (87) cont_blocks ::= cont_block (OPTIMIZED OUT) */ assert(yyruleno!=87); - /* (88) cont_block ::= empty */ yytestcase(yyruleno==88); - /* (89) table ::= table_header */ yytestcase(yyruleno==89); - /* (90) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=90); - /* (91) table_rows ::= LINE_TABLE */ yytestcase(yyruleno==91); - /* (92) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==92); - /* (93) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==93); - /* (94) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==94); - /* (95) html_block ::= LINE_HTML */ yytestcase(yyruleno==95); - /* (96) html_block_lines ::= html_block_line (OPTIMIZED OUT) */ assert(yyruleno!=96); - /* (97) html_block_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==97); - /* (98) html_block_line ::= LINE_HTML */ yytestcase(yyruleno==98); - /* (99) fenced_lines ::= fenced_line (OPTIMIZED OUT) */ assert(yyruleno!=99); - /* (100) fenced_lines ::= */ yytestcase(yyruleno==100); - /* (101) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==101); - /* (102) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==102); - /* (103) meta_block ::= LINE_META */ yytestcase(yyruleno==103); - /* (104) meta_lines ::= meta_line (OPTIMIZED OUT) */ assert(yyruleno!=104); - /* (105) meta_line ::= LINE_META */ yytestcase(yyruleno==105); - /* (106) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==106); - /* (107) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=107); - /* (108) def_lines ::= LINE_CONTINUATION */ yytestcase(yyruleno==108); - /* (109) para ::= defs */ yytestcase(yyruleno==109); + /* (73) para ::= LINE_PLAIN */ yytestcase(yyruleno==73); + /* (74) para_lines ::= para_line (OPTIMIZED OUT) */ assert(yyruleno!=74); + /* (75) para_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==75); + /* (76) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=76); + /* (77) code_line ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=77); + /* (78) code_line ::= LINE_EMPTY */ yytestcase(yyruleno==78); + /* (79) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==79); + /* (80) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==80); + /* (81) empty ::= LINE_EMPTY */ yytestcase(yyruleno==81); + /* (82) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==82); + /* (83) quote_lines ::= quote_line (OPTIMIZED OUT) */ assert(yyruleno!=83); + /* (84) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==84); + /* (85) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==85); + /* (86) list_bulleted ::= item_bulleted (OPTIMIZED OUT) */ assert(yyruleno!=86); + /* (87) list_enumerated ::= item_enumerated (OPTIMIZED OUT) */ assert(yyruleno!=87); + /* (88) cont_blocks ::= cont_block (OPTIMIZED OUT) */ assert(yyruleno!=88); + /* (89) cont_block ::= empty */ yytestcase(yyruleno==89); + /* (90) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=90); + /* (91) row ::= header_rows */ yytestcase(yyruleno==91); + /* (92) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==92); + /* (93) table ::= table_header */ yytestcase(yyruleno==93); + /* (94) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=94); + /* (95) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==95); + /* (96) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==96); + /* (97) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==97); + /* (98) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==98); + /* (99) html_block ::= LINE_HTML */ yytestcase(yyruleno==99); + /* (100) html_block_lines ::= html_block_line (OPTIMIZED OUT) */ assert(yyruleno!=100); + /* (101) html_block_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==101); + /* (102) html_block_line ::= LINE_HTML */ yytestcase(yyruleno==102); + /* (103) fenced_lines ::= fenced_line (OPTIMIZED OUT) */ assert(yyruleno!=103); + /* (104) fenced_lines ::= */ yytestcase(yyruleno==104); + /* (105) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==105); + /* (106) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==106); + /* (107) meta_block ::= LINE_META */ yytestcase(yyruleno==107); + /* (108) meta_lines ::= meta_line (OPTIMIZED OUT) */ assert(yyruleno!=108); + /* (109) meta_line ::= LINE_META */ yytestcase(yyruleno==109); + /* (110) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==110); + /* (111) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=111); + /* (112) def_lines ::= LINE_CONTINUATION */ yytestcase(yyruleno==112); + /* (113) para ::= defs */ yytestcase(yyruleno==113); break; /********** End reduce actions ************************************************/ }; diff --git a/src/parser.out b/src/parser.out index d352b90..970616d 100644 --- a/src/parser.out +++ b/src/parser.out @@ -46,11 +46,15 @@ State 0: item_enumerated ::= * LINE_LIST_ENUMERATED para_lines item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks item_enumerated ::= * LINE_LIST_ENUMERATED - table_header ::= * table_rows LINE_TABLE_SEPARATOR + table_header ::= * header_rows LINE_TABLE_SEPARATOR + all_rows ::= * all_rows row + all_rows ::= * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR table ::= * table_header table_body table ::= * table_header - table_rows ::= * table_rows LINE_TABLE - table_rows ::= * LINE_TABLE + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE def_citation ::= * LINE_DEF_CITATION para_lines cont_blocks def_citation ::= * LINE_DEF_CITATION para_lines def_citation ::= * LINE_DEF_CITATION cont_blocks @@ -74,14 +78,15 @@ State 0: defs ::= * def def ::= * LINE_DEFINITION def_lines def ::= * LINE_DEFINITION - para ::= * table_rows + para ::= * all_rows para ::= * defs - LINE_PLAIN shift 23 - LINE_INDENTED_TAB shift-reduce 78 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_SPACE shift-reduce 79 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 91 table_rows ::= LINE_TABLE - LINE_HTML shift 15 + LINE_PLAIN shift 25 + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_HTML shift 17 LINE_ATX_1 shift-reduce 5 block ::= LINE_ATX_1 LINE_ATX_2 shift-reduce 6 block ::= LINE_ATX_2 LINE_ATX_3 shift-reduce 7 block ::= LINE_ATX_3 @@ -89,26 +94,26 @@ State 0: LINE_ATX_5 shift-reduce 9 block ::= LINE_ATX_5 LINE_ATX_6 shift-reduce 10 block ::= LINE_ATX_6 LINE_HR shift-reduce 16 block ::= LINE_HR - LINE_BLOCKQUOTE shift 16 - LINE_LIST_BULLETED shift 5 - LINE_LIST_ENUMERATED shift 4 + LINE_BLOCKQUOTE shift 19 + LINE_LIST_BULLETED shift 6 + LINE_LIST_ENUMERATED shift 5 LINE_DEF_CITATION shift 3 LINE_DEF_FOOTNOTE shift 2 - LINE_DEF_LINK shift 17 - LINE_FENCE_BACKTICK shift 14 - LINE_FENCE_BACKTICK_START shift 13 + LINE_DEF_LINK shift 20 + LINE_FENCE_BACKTICK shift 16 + LINE_FENCE_BACKTICK_START shift 15 LINE_TOC shift-reduce 23 block ::= LINE_TOC - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_META shift 12 - LINE_DEFINITION shift 42 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_META shift 14 + LINE_DEFINITION shift 44 doc accept blocks shift 1 block shift-reduce 2 blocks ::= block - para shift 29 - indented_code shift 11 - empty shift 46 - list_bulleted shift 41 - list_enumerated shift 39 + para shift 31 + indented_code shift 13 + empty shift 48 + list_bulleted shift 43 + list_enumerated shift 41 blockquote shift-reduce 14 block ::= blockquote table shift-reduce 15 block ::= table def_citation shift-reduce 17 block ::= def_citation @@ -118,13 +123,15 @@ State 0: fenced_block shift-reduce 21 block ::= fenced_block meta_block shift-reduce 22 block ::= meta_block definition_block shift-reduce 24 block ::= definition_block - indented_line shift 11 /* because indented_line==indented_code */ - item_bulleted shift 41 /* because item_bulleted==list_bulleted */ - item_enumerated shift 39 /* because item_enumerated==list_enumerated */ - table_header shift 10 - table_rows shift 45 - defs shift 36 - def shift 36 /* because def==defs */ + indented_line shift 13 /* because indented_line==indented_code */ + item_bulleted shift 43 /* because item_bulleted==list_bulleted */ + item_enumerated shift 41 /* because item_enumerated==list_enumerated */ + table_header shift 4 + header_rows shift 46 + all_rows shift 18 + row shift 18 /* because row==all_rows */ + defs shift 38 + def shift 38 /* because def==defs */ State 1: (0) doc ::= blocks * @@ -173,11 +180,15 @@ State 1: item_enumerated ::= * LINE_LIST_ENUMERATED para_lines item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks item_enumerated ::= * LINE_LIST_ENUMERATED - table_header ::= * table_rows LINE_TABLE_SEPARATOR + table_header ::= * header_rows LINE_TABLE_SEPARATOR + all_rows ::= * all_rows row + all_rows ::= * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR table ::= * table_header table_body table ::= * table_header - table_rows ::= * table_rows LINE_TABLE - table_rows ::= * LINE_TABLE + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE def_citation ::= * LINE_DEF_CITATION para_lines cont_blocks def_citation ::= * LINE_DEF_CITATION para_lines def_citation ::= * LINE_DEF_CITATION cont_blocks @@ -201,15 +212,16 @@ State 1: defs ::= * def def ::= * LINE_DEFINITION def_lines def ::= * LINE_DEFINITION - para ::= * table_rows + para ::= * all_rows para ::= * defs $ reduce 0 doc ::= blocks - LINE_PLAIN shift 23 - LINE_INDENTED_TAB shift-reduce 78 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_SPACE shift-reduce 79 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 91 table_rows ::= LINE_TABLE - LINE_HTML shift 15 + LINE_PLAIN shift 25 + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_HTML shift 17 LINE_ATX_1 shift-reduce 5 block ::= LINE_ATX_1 LINE_ATX_2 shift-reduce 6 block ::= LINE_ATX_2 LINE_ATX_3 shift-reduce 7 block ::= LINE_ATX_3 @@ -217,24 +229,24 @@ State 1: LINE_ATX_5 shift-reduce 9 block ::= LINE_ATX_5 LINE_ATX_6 shift-reduce 10 block ::= LINE_ATX_6 LINE_HR shift-reduce 16 block ::= LINE_HR - LINE_BLOCKQUOTE shift 16 - LINE_LIST_BULLETED shift 5 - LINE_LIST_ENUMERATED shift 4 + LINE_BLOCKQUOTE shift 19 + LINE_LIST_BULLETED shift 6 + LINE_LIST_ENUMERATED shift 5 LINE_DEF_CITATION shift 3 LINE_DEF_FOOTNOTE shift 2 - LINE_DEF_LINK shift 17 - LINE_FENCE_BACKTICK shift 14 - LINE_FENCE_BACKTICK_START shift 13 + LINE_DEF_LINK shift 20 + LINE_FENCE_BACKTICK shift 16 + LINE_FENCE_BACKTICK_START shift 15 LINE_TOC shift-reduce 23 block ::= LINE_TOC - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_META shift 12 - LINE_DEFINITION shift 42 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_META shift 14 + LINE_DEFINITION shift 44 block shift-reduce 1 blocks ::= blocks block - para shift 29 - indented_code shift 11 - empty shift 46 - list_bulleted shift 41 - list_enumerated shift 39 + para shift 31 + indented_code shift 13 + empty shift 48 + list_bulleted shift 43 + list_enumerated shift 41 blockquote shift-reduce 14 block ::= blockquote table shift-reduce 15 block ::= table def_citation shift-reduce 17 block ::= def_citation @@ -244,13 +256,15 @@ State 1: fenced_block shift-reduce 21 block ::= fenced_block meta_block shift-reduce 22 block ::= meta_block definition_block shift-reduce 24 block ::= definition_block - indented_line shift 11 /* because indented_line==indented_code */ - item_bulleted shift 41 /* because item_bulleted==list_bulleted */ - item_enumerated shift 39 /* because item_enumerated==list_enumerated */ - table_header shift 10 - table_rows shift 45 - defs shift 36 - def shift 36 /* because def==defs */ + indented_line shift 13 /* because indented_line==indented_code */ + item_bulleted shift 43 /* because item_bulleted==list_bulleted */ + item_enumerated shift 41 /* because item_enumerated==list_enumerated */ + table_header shift 4 + header_rows shift 46 + all_rows shift 18 + row shift 18 /* because row==all_rows */ + defs shift 38 + def shift 38 /* because def==defs */ State 2: para_lines ::= * para_lines para_line @@ -266,17 +280,17 @@ State 2: def_footnote ::= LINE_DEF_FOOTNOTE * para_lines cont_blocks def_footnote ::= LINE_DEF_FOOTNOTE * para_lines def_footnote ::= LINE_DEF_FOOTNOTE * cont_blocks - (93) def_footnote ::= LINE_DEF_FOOTNOTE * - - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 93 ** Parsing conflict ** - empty shift 32 - para_lines shift 6 - para_line shift 6 /* because para_line==para_lines */ - cont_blocks shift 18 - cont_block shift 18 /* because cont_block==cont_blocks */ - {default} reduce 93 def_footnote ::= LINE_DEF_FOOTNOTE + (97) def_footnote ::= LINE_DEF_FOOTNOTE * + + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 97 ** Parsing conflict ** + empty shift 34 + para_lines shift 7 + para_line shift 7 /* because para_line==para_lines */ + cont_blocks shift 21 + cont_block shift 21 /* because cont_block==cont_blocks */ + {default} reduce 97 def_footnote ::= LINE_DEF_FOOTNOTE State 3: para_lines ::= * para_lines para_line @@ -292,19 +306,44 @@ State 3: def_citation ::= LINE_DEF_CITATION * para_lines cont_blocks def_citation ::= LINE_DEF_CITATION * para_lines def_citation ::= LINE_DEF_CITATION * cont_blocks - (92) def_citation ::= LINE_DEF_CITATION * + (96) def_citation ::= LINE_DEF_CITATION * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 92 ** Parsing conflict ** - empty shift 32 - para_lines shift 7 - para_line shift 7 /* because para_line==para_lines */ - cont_blocks shift 20 - cont_block shift 20 /* because cont_block==cont_blocks */ - {default} reduce 92 def_citation ::= LINE_DEF_CITATION + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 96 ** Parsing conflict ** + empty shift 34 + para_lines shift 8 + para_line shift 8 /* because para_line==para_lines */ + cont_blocks shift 23 + cont_block shift 23 /* because cont_block==cont_blocks */ + {default} reduce 96 def_citation ::= LINE_DEF_CITATION State 4: + table_section ::= * all_rows LINE_EMPTY + table_section ::= * all_rows + all_rows ::= * all_rows row + all_rows ::= * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR + table ::= table_header * table_body + (93) table ::= table_header * + table_body ::= * table_body table_section + table_body ::= * table_section + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE + + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 93 ** Parsing conflict ** + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_TABLE reduce 93 ** Parsing conflict ** + header_rows shift 47 + table_section shift 9 /* because table_section==table_body */ + all_rows shift 12 + row shift 12 /* because row==all_rows */ + table_body shift 9 + {default} reduce 93 table ::= table_header + +State 5: para_lines ::= * para_lines para_line para_lines ::= * para_line para_line ::= * LINE_CONTINUATION @@ -320,17 +359,17 @@ State 4: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 40 ** Parsing conflict ** - empty shift 32 - para_lines shift 8 - para_line shift 8 /* because para_line==para_lines */ - cont_blocks shift 24 - cont_block shift 24 /* because cont_block==cont_blocks */ + empty shift 34 + para_lines shift 10 + para_line shift 10 /* because para_line==para_lines */ + cont_blocks shift 26 + cont_block shift 26 /* because cont_block==cont_blocks */ {default} reduce 40 item_enumerated ::= LINE_LIST_ENUMERATED -State 5: +State 6: para_lines ::= * para_lines para_line para_lines ::= * para_line para_line ::= * LINE_CONTINUATION @@ -346,17 +385,17 @@ State 5: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 35 ** Parsing conflict ** - empty shift 32 - para_lines shift 9 - para_line shift 9 /* because para_line==para_lines */ - cont_blocks shift 26 - cont_block shift 26 /* because cont_block==cont_blocks */ + empty shift 34 + para_lines shift 11 + para_line shift 11 /* because para_line==para_lines */ + cont_blocks shift 28 + cont_block shift 28 /* because cont_block==cont_blocks */ {default} reduce 35 item_bulleted ::= LINE_LIST_BULLETED -State 6: +State 7: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION empty ::= * empty LINE_EMPTY @@ -367,18 +406,18 @@ State 6: cont_block ::= * empty indented_line cont_block ::= * empty def_footnote ::= LINE_DEF_FOOTNOTE para_lines * cont_blocks - (54) def_footnote ::= LINE_DEF_FOOTNOTE para_lines * + (55) def_footnote ::= LINE_DEF_FOOTNOTE para_lines * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 54 ** Parsing conflict ** - empty shift 32 + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 55 ** Parsing conflict ** + empty shift 34 para_line shift-reduce 26 para_lines ::= para_lines para_line - cont_blocks shift 19 - cont_block shift 19 /* because cont_block==cont_blocks */ - {default} reduce 54 def_footnote ::= LINE_DEF_FOOTNOTE para_lines + cont_blocks shift 22 + cont_block shift 22 /* because cont_block==cont_blocks */ + {default} reduce 55 def_footnote ::= LINE_DEF_FOOTNOTE para_lines -State 7: +State 8: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION empty ::= * empty LINE_EMPTY @@ -389,18 +428,40 @@ State 7: cont_block ::= * empty indented_line cont_block ::= * empty def_citation ::= LINE_DEF_CITATION para_lines * cont_blocks - (51) def_citation ::= LINE_DEF_CITATION para_lines * + (52) def_citation ::= LINE_DEF_CITATION para_lines * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 51 ** Parsing conflict ** - empty shift 32 + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 52 ** Parsing conflict ** + empty shift 34 para_line shift-reduce 26 para_lines ::= para_lines para_line - cont_blocks shift 21 - cont_block shift 21 /* because cont_block==cont_blocks */ - {default} reduce 51 def_citation ::= LINE_DEF_CITATION para_lines + cont_blocks shift 24 + cont_block shift 24 /* because cont_block==cont_blocks */ + {default} reduce 52 def_citation ::= LINE_DEF_CITATION para_lines -State 8: +State 9: + table_section ::= * all_rows LINE_EMPTY + table_section ::= * all_rows + all_rows ::= * all_rows row + all_rows ::= * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR + (48) table ::= table_header table_body * + table_body ::= table_body * table_section + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE + + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 48 ** Parsing conflict ** + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_TABLE reduce 48 ** Parsing conflict ** + header_rows shift 47 + table_section shift-reduce 49 table_body ::= table_body table_section + all_rows shift 12 + row shift 12 /* because row==all_rows */ + {default} reduce 48 table ::= table_header table_body + +State 10: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION empty ::= * empty LINE_EMPTY @@ -413,16 +474,16 @@ State 8: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 38 ** Parsing conflict ** - empty shift 32 + empty shift 34 para_line shift-reduce 26 para_lines ::= para_lines para_line - cont_blocks shift 25 - cont_block shift 25 /* because cont_block==cont_blocks */ + cont_blocks shift 27 + cont_block shift 27 /* because cont_block==cont_blocks */ {default} reduce 38 item_enumerated ::= LINE_LIST_ENUMERATED para_lines -State 9: +State 11: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION empty ::= * empty LINE_EMPTY @@ -435,33 +496,35 @@ State 9: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 33 ** Parsing conflict ** - empty shift 32 + empty shift 34 para_line shift-reduce 26 para_lines ::= para_lines para_line - cont_blocks shift 27 - cont_block shift 27 /* because cont_block==cont_blocks */ + cont_blocks shift 29 + cont_block shift 29 /* because cont_block==cont_blocks */ {default} reduce 33 item_bulleted ::= LINE_LIST_BULLETED para_lines -State 10: - table_section ::= * table_rows LINE_EMPTY - table_section ::= * table_rows - table ::= table_header * table_body - (89) table ::= table_header * - table_body ::= * table_body table_section - table_body ::= * table_section - table_rows ::= * table_rows LINE_TABLE - table_rows ::= * LINE_TABLE - - LINE_TABLE shift-reduce 91 table_rows ::= LINE_TABLE - LINE_TABLE reduce 89 ** Parsing conflict ** - table_rows shift 44 - table_section shift 22 /* because table_section==table_body */ - table_body shift 22 - {default} reduce 89 table ::= table_header +State 12: + table_section ::= all_rows * LINE_EMPTY + (46) table_section ::= all_rows * + all_rows ::= all_rows * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE + + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 46 ** Parsing conflict ** + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_TABLE reduce 46 ** Parsing conflict ** + LINE_EMPTY shift-reduce 45 table_section ::= all_rows LINE_EMPTY + LINE_EMPTY reduce 46 ** Parsing conflict ** + header_rows shift 47 + row shift-reduce 47 all_rows ::= all_rows row + {default} reduce 46 table_section ::= all_rows -State 11: +State 13: (4) block ::= indented_code * indented_code ::= indented_code * code_line code_line ::= * indented_line @@ -469,194 +532,196 @@ State 11: indented_line ::= * LINE_INDENTED_TAB indented_line ::= * LINE_INDENTED_SPACE - LINE_INDENTED_TAB shift-reduce 78 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB LINE_INDENTED_TAB reduce 4 ** Parsing conflict ** - LINE_INDENTED_SPACE shift-reduce 79 indented_line ::= LINE_INDENTED_SPACE + LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE LINE_INDENTED_SPACE reduce 4 ** Parsing conflict ** - LINE_EMPTY shift-reduce 77 code_line ::= LINE_EMPTY + LINE_EMPTY shift-reduce 78 code_line ::= LINE_EMPTY LINE_EMPTY reduce 4 ** Parsing conflict ** code_line shift-reduce 27 indented_code ::= indented_code code_line indented_line shift-reduce 27 indented_code ::= indented_code code_line /* because indented_line==code_line */ {default} reduce 4 block ::= indented_code -State 12: +State 14: meta_block ::= LINE_META * meta_lines - (103) meta_block ::= LINE_META * + (107) meta_block ::= LINE_META * meta_lines ::= * meta_lines meta_line meta_lines ::= * meta_line meta_line ::= * LINE_META meta_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 106 meta_line ::= LINE_CONTINUATION - LINE_META shift-reduce 105 meta_line ::= LINE_META - LINE_META reduce 103 ** Parsing conflict ** - meta_lines shift 33 - meta_line shift 33 /* because meta_line==meta_lines */ - {default} reduce 103 meta_block ::= LINE_META + LINE_CONTINUATION shift-reduce 110 meta_line ::= LINE_CONTINUATION + LINE_META shift-reduce 109 meta_line ::= LINE_META + LINE_META reduce 107 ** Parsing conflict ** + meta_lines shift 35 + meta_line shift 35 /* because meta_line==meta_lines */ + {default} reduce 107 meta_block ::= LINE_META -State 13: +State 15: fenced_block ::= LINE_FENCE_BACKTICK_START * fenced_lines LINE_FENCE_BACKTICK fenced_block ::= LINE_FENCE_BACKTICK_START * fenced_lines fenced_lines ::= * fenced_lines fenced_line fenced_lines ::= * fenced_line - (100) fenced_lines ::= * + (104) fenced_lines ::= * fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 101 fenced_line ::= LINE_CONTINUATION - LINE_CONTINUATION reduce 100 ** Parsing conflict ** - LINE_EMPTY shift-reduce 102 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 100 ** Parsing conflict ** - fenced_lines shift 30 - fenced_line shift 30 /* because fenced_line==fenced_lines */ - {default} reduce 100 fenced_lines ::= + LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION + LINE_CONTINUATION reduce 104 ** Parsing conflict ** + LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 104 ** Parsing conflict ** + fenced_lines shift 32 + fenced_line shift 32 /* because fenced_line==fenced_lines */ + {default} reduce 104 fenced_lines ::= -State 14: +State 16: fenced_block ::= LINE_FENCE_BACKTICK * fenced_lines LINE_FENCE_BACKTICK fenced_block ::= LINE_FENCE_BACKTICK * fenced_lines fenced_lines ::= * fenced_lines fenced_line fenced_lines ::= * fenced_line - (100) fenced_lines ::= * + (104) fenced_lines ::= * fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 101 fenced_line ::= LINE_CONTINUATION - LINE_CONTINUATION reduce 100 ** Parsing conflict ** - LINE_EMPTY shift-reduce 102 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 100 ** Parsing conflict ** - fenced_lines shift 31 - fenced_line shift 31 /* because fenced_line==fenced_lines */ - {default} reduce 100 fenced_lines ::= + LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION + LINE_CONTINUATION reduce 104 ** Parsing conflict ** + LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 104 ** Parsing conflict ** + fenced_lines shift 33 + fenced_line shift 33 /* because fenced_line==fenced_lines */ + {default} reduce 104 fenced_lines ::= -State 15: +State 17: html_block ::= LINE_HTML * html_block_lines - (95) html_block ::= LINE_HTML * + (99) html_block ::= LINE_HTML * html_block_lines ::= * html_block_lines html_block_line html_block_lines ::= * html_block_line html_block_line ::= * LINE_CONTINUATION html_block_line ::= * LINE_HTML - LINE_CONTINUATION shift-reduce 97 html_block_line ::= LINE_CONTINUATION - LINE_HTML shift-reduce 98 html_block_line ::= LINE_HTML - LINE_HTML reduce 95 ** Parsing conflict ** - html_block_lines shift 34 - html_block_line shift 34 /* because html_block_line==html_block_lines */ - {default} reduce 95 html_block ::= LINE_HTML + LINE_CONTINUATION shift-reduce 101 html_block_line ::= LINE_CONTINUATION + LINE_HTML shift-reduce 102 html_block_line ::= LINE_HTML + LINE_HTML reduce 99 ** Parsing conflict ** + html_block_lines shift 36 + html_block_line shift 36 /* because html_block_line==html_block_lines */ + {default} reduce 99 html_block ::= LINE_HTML -State 16: +State 18: + all_rows ::= all_rows * row + row ::= * header_rows + row ::= * LINE_TABLE_SEPARATOR + header_rows ::= * header_rows LINE_TABLE + header_rows ::= * LINE_TABLE + (72) para ::= all_rows * + + LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 72 ** Parsing conflict ** + LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE + LINE_TABLE reduce 72 ** Parsing conflict ** + header_rows shift 47 + row shift-reduce 47 all_rows ::= all_rows row + {default} reduce 72 para ::= all_rows + +State 19: blockquote ::= LINE_BLOCKQUOTE * quote_lines - (81) blockquote ::= LINE_BLOCKQUOTE * + (82) blockquote ::= LINE_BLOCKQUOTE * quote_lines ::= * quote_lines quote_line quote_lines ::= * quote_line quote_line ::= * LINE_BLOCKQUOTE quote_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 84 quote_line ::= LINE_CONTINUATION - LINE_BLOCKQUOTE shift-reduce 83 quote_line ::= LINE_BLOCKQUOTE - LINE_BLOCKQUOTE reduce 81 ** Parsing conflict ** - quote_lines shift 35 - quote_line shift 35 /* because quote_line==quote_lines */ - {default} reduce 81 blockquote ::= LINE_BLOCKQUOTE + LINE_CONTINUATION shift-reduce 85 quote_line ::= LINE_CONTINUATION + LINE_BLOCKQUOTE shift-reduce 84 quote_line ::= LINE_BLOCKQUOTE + LINE_BLOCKQUOTE reduce 82 ** Parsing conflict ** + quote_lines shift 37 + quote_line shift 37 /* because quote_line==quote_lines */ + {default} reduce 82 blockquote ::= LINE_BLOCKQUOTE -State 17: +State 20: para_lines ::= * para_lines para_line para_lines ::= * para_line para_line ::= * LINE_CONTINUATION def_link ::= LINE_DEF_LINK * para_lines - (94) def_link ::= LINE_DEF_LINK * + (98) def_link ::= LINE_DEF_LINK * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - para_lines shift 37 - para_line shift 37 /* because para_line==para_lines */ - {default} reduce 94 def_link ::= LINE_DEF_LINK + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + para_lines shift 39 + para_line shift 39 /* because para_line==para_lines */ + {default} reduce 98 def_link ::= LINE_DEF_LINK -State 18: +State 21: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY cont_blocks ::= cont_blocks * cont_block cont_block ::= * empty indented_line para_lines cont_block ::= * empty indented_line cont_block ::= * empty - (55) def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks * + (56) def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks * - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 55 ** Parsing conflict ** - empty shift 32 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 56 ** Parsing conflict ** + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block - {default} reduce 55 def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks + {default} reduce 56 def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks -State 19: +State 22: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY cont_blocks ::= cont_blocks * cont_block cont_block ::= * empty indented_line para_lines cont_block ::= * empty indented_line cont_block ::= * empty - (53) def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks * + (54) def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks * - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 53 ** Parsing conflict ** - empty shift 32 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 54 ** Parsing conflict ** + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block - {default} reduce 53 def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks + {default} reduce 54 def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks -State 20: +State 23: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY cont_blocks ::= cont_blocks * cont_block cont_block ::= * empty indented_line para_lines cont_block ::= * empty indented_line cont_block ::= * empty - (52) def_citation ::= LINE_DEF_CITATION cont_blocks * + (53) def_citation ::= LINE_DEF_CITATION cont_blocks * - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 52 ** Parsing conflict ** - empty shift 32 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 53 ** Parsing conflict ** + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block - {default} reduce 52 def_citation ::= LINE_DEF_CITATION cont_blocks + {default} reduce 53 def_citation ::= LINE_DEF_CITATION cont_blocks -State 21: +State 24: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY cont_blocks ::= cont_blocks * cont_block cont_block ::= * empty indented_line para_lines cont_block ::= * empty indented_line cont_block ::= * empty - (50) def_citation ::= LINE_DEF_CITATION para_lines cont_blocks * + (51) def_citation ::= LINE_DEF_CITATION para_lines cont_blocks * - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY - LINE_EMPTY reduce 50 ** Parsing conflict ** - empty shift 32 + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY + LINE_EMPTY reduce 51 ** Parsing conflict ** + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block - {default} reduce 50 def_citation ::= LINE_DEF_CITATION para_lines cont_blocks + {default} reduce 51 def_citation ::= LINE_DEF_CITATION para_lines cont_blocks -State 22: - table_section ::= * table_rows LINE_EMPTY - table_section ::= * table_rows - (47) table ::= table_header table_body * - table_body ::= table_body * table_section - table_rows ::= * table_rows LINE_TABLE - table_rows ::= * LINE_TABLE - - LINE_TABLE shift-reduce 91 table_rows ::= LINE_TABLE - LINE_TABLE reduce 47 ** Parsing conflict ** - table_rows shift 44 - table_section shift-reduce 48 table_body ::= table_body table_section - {default} reduce 47 table ::= table_header table_body - -State 23: +State 25: para ::= LINE_PLAIN * para_lines - (72) para ::= LINE_PLAIN * + (73) para ::= LINE_PLAIN * para_lines ::= * para_lines para_line para_lines ::= * para_line para_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - para_lines shift 38 - para_line shift 38 /* because para_line==para_lines */ - {default} reduce 72 para ::= LINE_PLAIN + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + para_lines shift 40 + para_line shift 40 /* because para_line==para_lines */ + {default} reduce 73 para ::= LINE_PLAIN -State 24: +State 26: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY (39) item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks * @@ -665,13 +730,13 @@ State 24: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 39 ** Parsing conflict ** - empty shift 32 + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block {default} reduce 39 item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks -State 25: +State 27: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY (37) item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks * @@ -680,13 +745,13 @@ State 25: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 37 ** Parsing conflict ** - empty shift 32 + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block {default} reduce 37 item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks -State 26: +State 28: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY (34) item_bulleted ::= LINE_LIST_BULLETED cont_blocks * @@ -695,13 +760,13 @@ State 26: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 34 ** Parsing conflict ** - empty shift 32 + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block {default} reduce 34 item_bulleted ::= LINE_LIST_BULLETED cont_blocks -State 27: +State 29: empty ::= * empty LINE_EMPTY empty ::= * LINE_EMPTY (32) item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks * @@ -710,25 +775,25 @@ State 27: cont_block ::= * empty indented_line cont_block ::= * empty - LINE_EMPTY shift-reduce 80 empty ::= LINE_EMPTY + LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY LINE_EMPTY reduce 32 ** Parsing conflict ** - empty shift 32 + empty shift 34 cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block {default} reduce 32 item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks -State 28: +State 30: para_lines ::= * para_lines para_line para_lines ::= * para_line para_line ::= * LINE_CONTINUATION cont_block ::= empty indented_line * para_lines (43) cont_block ::= empty indented_line * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION - para_lines shift 40 - para_line shift 40 /* because para_line==para_lines */ + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION + para_lines shift 42 + para_line shift 42 /* because para_line==para_lines */ {default} reduce 43 cont_block ::= empty indented_line -State 29: +State 31: (3) block ::= para * definition_block ::= para * defs defs ::= * defs def @@ -736,125 +801,125 @@ State 29: def ::= * LINE_DEFINITION def_lines def ::= * LINE_DEFINITION - LINE_DEFINITION shift 42 + LINE_DEFINITION shift 44 LINE_DEFINITION reduce 3 ** Parsing conflict ** - defs shift 43 - def shift 43 /* because def==defs */ + defs shift 45 + def shift 45 /* because def==defs */ {default} reduce 3 block ::= para -State 30: +State 32: fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines * LINE_FENCE_BACKTICK - (62) fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines * + (63) fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines * fenced_lines ::= fenced_lines * fenced_line fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 101 fenced_line ::= LINE_CONTINUATION - LINE_FENCE_BACKTICK shift-reduce 61 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK - LINE_FENCE_BACKTICK reduce 62 ** Parsing conflict ** - LINE_EMPTY shift-reduce 102 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 62 ** Parsing conflict ** - fenced_line shift-reduce 63 fenced_lines ::= fenced_lines fenced_line - {default} reduce 62 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines + LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION + LINE_FENCE_BACKTICK shift-reduce 62 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK + LINE_FENCE_BACKTICK reduce 63 ** Parsing conflict ** + LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 63 ** Parsing conflict ** + fenced_line shift-reduce 64 fenced_lines ::= fenced_lines fenced_line + {default} reduce 63 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines -State 31: +State 33: fenced_block ::= LINE_FENCE_BACKTICK fenced_lines * LINE_FENCE_BACKTICK - (60) fenced_block ::= LINE_FENCE_BACKTICK fenced_lines * + (61) fenced_block ::= LINE_FENCE_BACKTICK fenced_lines * fenced_lines ::= fenced_lines * fenced_line fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - LINE_CONTINUATION shift-reduce 101 fenced_line ::= LINE_CONTINUATION - LINE_FENCE_BACKTICK shift-reduce 59 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK - LINE_FENCE_BACKTICK reduce 60 ** Parsing conflict ** - LINE_EMPTY shift-reduce 102 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 60 ** Parsing conflict ** - fenced_line shift-reduce 63 fenced_lines ::= fenced_lines fenced_line - {default} reduce 60 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines + LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION + LINE_FENCE_BACKTICK shift-reduce 60 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK + LINE_FENCE_BACKTICK reduce 61 ** Parsing conflict ** + LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 61 ** Parsing conflict ** + fenced_line shift-reduce 64 fenced_lines ::= fenced_lines fenced_line + {default} reduce 61 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines -State 32: +State 34: indented_line ::= * LINE_INDENTED_TAB indented_line ::= * LINE_INDENTED_SPACE empty ::= empty * LINE_EMPTY cont_block ::= empty * indented_line para_lines cont_block ::= empty * indented_line - (88) cont_block ::= empty * + (89) cont_block ::= empty * - LINE_INDENTED_TAB shift-reduce 78 indented_line ::= LINE_INDENTED_TAB - LINE_INDENTED_TAB reduce 88 ** Parsing conflict ** - LINE_INDENTED_SPACE shift-reduce 79 indented_line ::= LINE_INDENTED_SPACE - LINE_INDENTED_SPACE reduce 88 ** Parsing conflict ** + LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB + LINE_INDENTED_TAB reduce 89 ** Parsing conflict ** + LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE + LINE_INDENTED_SPACE reduce 89 ** Parsing conflict ** LINE_EMPTY shift-reduce 28 empty ::= empty LINE_EMPTY - LINE_EMPTY reduce 88 ** Parsing conflict ** - indented_line shift 28 - {default} reduce 88 cont_block ::= empty + LINE_EMPTY reduce 89 ** Parsing conflict ** + indented_line shift 30 + {default} reduce 89 cont_block ::= empty -State 33: - (64) meta_block ::= LINE_META meta_lines * +State 35: + (65) meta_block ::= LINE_META meta_lines * meta_lines ::= meta_lines * meta_line meta_line ::= * LINE_META meta_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 106 meta_line ::= LINE_CONTINUATION - LINE_META shift-reduce 105 meta_line ::= LINE_META - LINE_META reduce 64 ** Parsing conflict ** - meta_line shift-reduce 65 meta_lines ::= meta_lines meta_line - {default} reduce 64 meta_block ::= LINE_META meta_lines + LINE_CONTINUATION shift-reduce 110 meta_line ::= LINE_CONTINUATION + LINE_META shift-reduce 109 meta_line ::= LINE_META + LINE_META reduce 65 ** Parsing conflict ** + meta_line shift-reduce 66 meta_lines ::= meta_lines meta_line + {default} reduce 65 meta_block ::= LINE_META meta_lines -State 34: - (57) html_block ::= LINE_HTML html_block_lines * +State 36: + (58) html_block ::= LINE_HTML html_block_lines * html_block_lines ::= html_block_lines * html_block_line html_block_line ::= * LINE_CONTINUATION html_block_line ::= * LINE_HTML - LINE_CONTINUATION shift-reduce 97 html_block_line ::= LINE_CONTINUATION - LINE_HTML shift-reduce 98 html_block_line ::= LINE_HTML - LINE_HTML reduce 57 ** Parsing conflict ** - html_block_line shift-reduce 58 html_block_lines ::= html_block_lines html_block_line - {default} reduce 57 html_block ::= LINE_HTML html_block_lines + LINE_CONTINUATION shift-reduce 101 html_block_line ::= LINE_CONTINUATION + LINE_HTML shift-reduce 102 html_block_line ::= LINE_HTML + LINE_HTML reduce 58 ** Parsing conflict ** + html_block_line shift-reduce 59 html_block_lines ::= html_block_lines html_block_line + {default} reduce 58 html_block ::= LINE_HTML html_block_lines -State 35: +State 37: (29) blockquote ::= LINE_BLOCKQUOTE quote_lines * quote_lines ::= quote_lines * quote_line quote_line ::= * LINE_BLOCKQUOTE quote_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 84 quote_line ::= LINE_CONTINUATION - LINE_BLOCKQUOTE shift-reduce 83 quote_line ::= LINE_BLOCKQUOTE + LINE_CONTINUATION shift-reduce 85 quote_line ::= LINE_CONTINUATION + LINE_BLOCKQUOTE shift-reduce 84 quote_line ::= LINE_BLOCKQUOTE LINE_BLOCKQUOTE reduce 29 ** Parsing conflict ** quote_line shift-reduce 30 quote_lines ::= quote_lines quote_line {default} reduce 29 blockquote ::= LINE_BLOCKQUOTE quote_lines -State 36: +State 38: defs ::= defs * def def ::= * LINE_DEFINITION def_lines def ::= * LINE_DEFINITION - (109) para ::= defs * + (113) para ::= defs * - LINE_DEFINITION shift 42 - LINE_DEFINITION reduce 109 ** Parsing conflict ** - def shift-reduce 67 defs ::= defs def - {default} reduce 109 para ::= defs + LINE_DEFINITION shift 44 + LINE_DEFINITION reduce 113 ** Parsing conflict ** + def shift-reduce 68 defs ::= defs def + {default} reduce 113 para ::= defs -State 37: +State 39: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION - (56) def_link ::= LINE_DEF_LINK para_lines * + (57) def_link ::= LINE_DEF_LINK para_lines * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION para_line shift-reduce 26 para_lines ::= para_lines para_line - {default} reduce 56 def_link ::= LINE_DEF_LINK para_lines + {default} reduce 57 def_link ::= LINE_DEF_LINK para_lines -State 38: +State 40: (25) para ::= LINE_PLAIN para_lines * para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION para_line shift-reduce 26 para_lines ::= para_lines para_line {default} reduce 25 para ::= LINE_PLAIN para_lines -State 39: +State 41: (13) block ::= list_enumerated * list_enumerated ::= list_enumerated * item_enumerated item_enumerated ::= * LINE_LIST_ENUMERATED para_lines cont_blocks @@ -862,21 +927,21 @@ State 39: item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks item_enumerated ::= * LINE_LIST_ENUMERATED - LINE_LIST_ENUMERATED shift 4 + LINE_LIST_ENUMERATED shift 5 LINE_LIST_ENUMERATED reduce 13 ** Parsing conflict ** item_enumerated shift-reduce 36 list_enumerated ::= list_enumerated item_enumerated {default} reduce 13 block ::= list_enumerated -State 40: +State 42: para_lines ::= para_lines * para_line para_line ::= * LINE_CONTINUATION (42) cont_block ::= empty indented_line para_lines * - LINE_CONTINUATION shift-reduce 74 para_line ::= LINE_CONTINUATION + LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION para_line shift-reduce 26 para_lines ::= para_lines para_line {default} reduce 42 cont_block ::= empty indented_line para_lines -State 41: +State 43: (12) block ::= list_bulleted * list_bulleted ::= list_bulleted * item_bulleted item_bulleted ::= * LINE_LIST_BULLETED para_lines cont_blocks @@ -884,54 +949,52 @@ State 41: item_bulleted ::= * LINE_LIST_BULLETED cont_blocks item_bulleted ::= * LINE_LIST_BULLETED - LINE_LIST_BULLETED shift 5 + LINE_LIST_BULLETED shift 6 LINE_LIST_BULLETED reduce 12 ** Parsing conflict ** item_bulleted shift-reduce 31 list_bulleted ::= list_bulleted item_bulleted {default} reduce 12 block ::= list_bulleted -State 42: +State 44: def ::= LINE_DEFINITION * def_lines - (69) def ::= LINE_DEFINITION * + (70) def ::= LINE_DEFINITION * def_lines ::= * def_lines LINE_CONTINUATION def_lines ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 108 def_lines ::= LINE_CONTINUATION - def_lines shift 47 - {default} reduce 69 def ::= LINE_DEFINITION + LINE_CONTINUATION shift-reduce 112 def_lines ::= LINE_CONTINUATION + def_lines shift 49 + {default} reduce 70 def ::= LINE_DEFINITION -State 43: - (66) definition_block ::= para defs * +State 45: + (67) definition_block ::= para defs * defs ::= defs * def def ::= * LINE_DEFINITION def_lines def ::= * LINE_DEFINITION - LINE_DEFINITION shift 42 - LINE_DEFINITION reduce 66 ** Parsing conflict ** - def shift-reduce 67 defs ::= defs def - {default} reduce 66 definition_block ::= para defs + LINE_DEFINITION shift 44 + LINE_DEFINITION reduce 67 ** Parsing conflict ** + def shift-reduce 68 defs ::= defs def + {default} reduce 67 definition_block ::= para defs -State 44: - table_section ::= table_rows * LINE_EMPTY - (46) table_section ::= table_rows * - table_rows ::= table_rows * LINE_TABLE +State 46: + table_header ::= header_rows * LINE_TABLE_SEPARATOR + (91) row ::= header_rows * + header_rows ::= header_rows * LINE_TABLE - LINE_TABLE shift-reduce 49 table_rows ::= table_rows LINE_TABLE - LINE_TABLE reduce 46 ** Parsing conflict ** - LINE_EMPTY shift-reduce 45 table_section ::= table_rows LINE_EMPTY - LINE_EMPTY reduce 46 ** Parsing conflict ** - {default} reduce 46 table_section ::= table_rows + LINE_TABLE_SEPARATOR shift-reduce 44 table_header ::= header_rows LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 91 ** Parsing conflict ** + LINE_TABLE shift-reduce 50 header_rows ::= header_rows LINE_TABLE + LINE_TABLE reduce 91 ** Parsing conflict ** + {default} reduce 91 row ::= header_rows -State 45: - table_header ::= table_rows * LINE_TABLE_SEPARATOR - table_rows ::= table_rows * LINE_TABLE - (71) para ::= table_rows * +State 47: + (91) row ::= header_rows * + header_rows ::= header_rows * LINE_TABLE - LINE_TABLE_SEPARATOR shift-reduce 44 table_header ::= table_rows LINE_TABLE_SEPARATOR - LINE_TABLE shift-reduce 49 table_rows ::= table_rows LINE_TABLE - LINE_TABLE reduce 71 ** Parsing conflict ** - {default} reduce 71 para ::= table_rows + LINE_TABLE shift-reduce 50 header_rows ::= header_rows LINE_TABLE + LINE_TABLE reduce 91 ** Parsing conflict ** + {default} reduce 91 row ::= header_rows -State 46: +State 48: (11) block ::= empty * empty ::= empty * LINE_EMPTY @@ -939,12 +1002,12 @@ State 46: LINE_EMPTY reduce 11 ** Parsing conflict ** {default} reduce 11 block ::= empty -State 47: - (68) def ::= LINE_DEFINITION def_lines * +State 49: + (69) def ::= LINE_DEFINITION def_lines * def_lines ::= def_lines * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 70 def_lines ::= def_lines LINE_CONTINUATION - {default} reduce 68 def ::= LINE_DEFINITION def_lines + LINE_CONTINUATION shift-reduce 71 def_lines ::= def_lines LINE_CONTINUATION + {default} reduce 69 def ::= LINE_DEFINITION def_lines ---------------------------------------------------- Symbols: @@ -976,10 +1039,10 @@ Symbols: 25: LINE_META 26: LINE_DEFINITION 27: error: - 28: doc: LINE_PLAIN 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION - 29: blocks: LINE_PLAIN 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION - 30: block: LINE_PLAIN 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION - 31: para: LINE_PLAIN LINE_TABLE LINE_DEFINITION + 28: doc: 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION + 29: blocks: 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION + 30: block: 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_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 LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION + 31: para: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION 32: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE 33: empty: LINE_EMPTY 34: list_bulleted: LINE_LIST_BULLETED @@ -992,7 +1055,7 @@ Symbols: 41: html_block: LINE_HTML 42: fenced_block: LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START 43: meta_block: LINE_META - 44: definition_block: LINE_PLAIN LINE_TABLE LINE_DEFINITION + 44: definition_block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION 45: para_lines: LINE_CONTINUATION 46: para_line: LINE_CONTINUATION 47: code_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_EMPTY @@ -1004,15 +1067,17 @@ Symbols: 53: item_enumerated: LINE_LIST_ENUMERATED 54: cont_block: LINE_EMPTY 55: table_header: LINE_TABLE - 56: table_rows: LINE_TABLE - 57: table_section: LINE_TABLE - 58: table_body: LINE_TABLE - 59: html_block_lines: LINE_CONTINUATION LINE_HTML - 60: html_block_line: LINE_CONTINUATION LINE_HTML - 61: fenced_lines: LINE_CONTINUATION LINE_EMPTY - 62: fenced_line: LINE_CONTINUATION LINE_EMPTY - 63: meta_lines: LINE_CONTINUATION LINE_META - 64: meta_line: LINE_CONTINUATION LINE_META - 65: defs: LINE_DEFINITION - 66: def: LINE_DEFINITION - 67: def_lines: LINE_CONTINUATION + 56: header_rows: LINE_TABLE + 57: table_section: LINE_TABLE_SEPARATOR LINE_TABLE + 58: all_rows: LINE_TABLE_SEPARATOR LINE_TABLE + 59: row: LINE_TABLE_SEPARATOR LINE_TABLE + 60: table_body: LINE_TABLE_SEPARATOR LINE_TABLE + 61: html_block_lines: LINE_CONTINUATION LINE_HTML + 62: html_block_line: LINE_CONTINUATION LINE_HTML + 63: fenced_lines: LINE_CONTINUATION LINE_EMPTY + 64: fenced_line: LINE_CONTINUATION LINE_EMPTY + 65: meta_lines: LINE_CONTINUATION LINE_META + 66: meta_line: LINE_CONTINUATION LINE_META + 67: defs: LINE_DEFINITION + 68: def: LINE_DEFINITION + 69: def_lines: LINE_CONTINUATION diff --git a/src/parser.y b/src/parser.y index 9dc8598..1196bc6 100644 --- a/src/parser.y +++ b/src/parser.y @@ -166,20 +166,25 @@ cont_block(A) ::= empty(B) indented_line(C). { A = B; token_chain_append(B, cont_block ::= empty. -table_header(A) ::= table_rows(B) LINE_TABLE_SEPARATOR(C). { A = token_new_parent(B, BLOCK_TABLE_HEADER); token_chain_append(B, C); } -table_section(A) ::= table_rows(B) LINE_EMPTY(C). { A = token_new_parent(B, BLOCK_TABLE_SECTION); token_chain_append(B, C); } -table_section(A) ::= table_rows(B). { A = token_new_parent(B, BLOCK_TABLE_SECTION); } +table_header(A) ::= header_rows(B) LINE_TABLE_SEPARATOR(C). { A = token_new_parent(B, BLOCK_TABLE_HEADER); token_chain_append(B, C); } +table_section(A) ::= all_rows(B) LINE_EMPTY(C). { A = token_new_parent(B, BLOCK_TABLE_SECTION); token_chain_append(B, C); } +table_section(A) ::= all_rows(B). { A = token_new_parent(B, BLOCK_TABLE_SECTION); } + +all_rows(A) ::= all_rows(B) row(C). { A = B; token_chain_append(B, C); } +all_rows ::= row. + +row ::= header_rows. +row ::= LINE_TABLE_SEPARATOR. table(A) ::= table_header(B) table_body(C). { A = B; token_chain_append(B, C); } table ::= table_header. table_body(A) ::= table_body(B) table_section(C). { A = B; token_chain_append(B, C); } -//table_body(A) ::= table_body(B) error. { A = B; } table_body ::= table_section. -table_rows(A) ::= table_rows(B) LINE_TABLE(C). { A = B; token_chain_append(B, C); } -table_rows ::= LINE_TABLE. +header_rows(A) ::= header_rows(B) LINE_TABLE(C). { A = B; token_chain_append(B, C); } +header_rows ::= LINE_TABLE. def_citation(A) ::= LINE_DEF_CITATION(B) para_lines(C) cont_blocks(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); } @@ -246,7 +251,7 @@ def_lines ::= LINE_CONTINUATION. // Fallbacks for improper structures // para(A) ::= table_section(B) LINE_EMPTY(C). { A = B; token_chain_append(B, C); } // para(A) ::= table_section(B) para_lines(C). { A = B; token_chain_append(B, C); } -para(A) ::= table_rows(B). { A = B; } +para(A) ::= all_rows(B). { A = B; } para ::= defs. diff --git a/test/parser_test.y b/test/parser_test.y index 32a7c85..8684fe7 100644 --- a/test/parser_test.y +++ b/test/parser_test.y @@ -121,12 +121,13 @@ item_enumerated ::= LINE_LIST_ENUMERATED. cont_blocks ::= cont_blocks cont_block. cont_block ::= empty indented_line para_lines. cont_block ::= empty indented_line. -table_header ::= table_rows LINE_TABLE_SEPARATOR. -table_section ::= table_rows LINE_EMPTY. -table_section ::= table_rows. +table_header ::= header_rows LINE_TABLE_SEPARATOR. +table_section ::= all_rows LINE_EMPTY. +table_section ::= all_rows. +all_rows ::= all_rows row. table ::= table_header table_body. table_body ::= table_body table_section. -table_rows ::= table_rows LINE_TABLE. +header_rows ::= header_rows LINE_TABLE. def_citation ::= LINE_DEF_CITATION para_lines cont_blocks. def_citation ::= LINE_DEF_CITATION para_lines. def_citation ::= LINE_DEF_CITATION cont_blocks. @@ -148,7 +149,7 @@ defs ::= defs def. def ::= LINE_DEFINITION def_lines. def ::= LINE_DEFINITION. def_lines ::= def_lines LINE_CONTINUATION. -para ::= table_rows. +para ::= all_rows. para ::= LINE_PLAIN. para_lines ::= para_line. para_line ::= LINE_CONTINUATION. @@ -166,9 +167,12 @@ list_bulleted ::= item_bulleted. list_enumerated ::= item_enumerated. cont_blocks ::= cont_block. cont_block ::= empty. +all_rows ::= row. +row ::= header_rows. +row ::= LINE_TABLE_SEPARATOR. table ::= table_header. table_body ::= table_section. -table_rows ::= LINE_TABLE. +header_rows ::= LINE_TABLE. def_citation ::= LINE_DEF_CITATION. def_footnote ::= LINE_DEF_FOOTNOTE. def_link ::= LINE_DEF_LINK. @@ -188,6 +192,7 @@ defs ::= def. def_lines ::= LINE_CONTINUATION. para ::= defs. + // // Additional Configuration // diff --git a/tests/MMD6Tests/Tables.html b/tests/MMD6Tests/Tables.html index 7ee3ec1..32a2936 100644 --- a/tests/MMD6Tests/Tables.html +++ b/tests/MMD6Tests/Tables.html @@ -118,9 +118,16 @@ foo6 bar6 + + :—– + —–: + + + foo + bar + + + foo bar + - -

| :—- | —-: | -foo | bar | -| foo bar ||