From: Fletcher T. Penney Date: Tue, 4 Apr 2017 02:06:50 +0000 (-0400) Subject: FIXED: Improve organization of fallback lines for fenced code blocks and HTML blocks X-Git-Tag: 6.0.4^2~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f07c5821ecbb549ac152844a21777a328bc77268;p=multimarkdown FIXED: Improve organization of fallback lines for fenced code blocks and HTML blocks --- diff --git a/Sources/libMultiMarkdown/parser.c b/Sources/libMultiMarkdown/parser.c index ec10510..c60f67d 100644 --- a/Sources/libMultiMarkdown/parser.c +++ b/Sources/libMultiMarkdown/parser.c @@ -108,15 +108,15 @@ typedef union { #define ParseARG_STORE yypParser->engine = engine #define YYFALLBACK 1 #define YYNSTATE 44 -#define YYNRULE 136 +#define YYNRULE 138 #define YY_MAX_SHIFT 43 -#define YY_MIN_SHIFTREDUCE 138 -#define YY_MAX_SHIFTREDUCE 273 -#define YY_MIN_REDUCE 274 -#define YY_MAX_REDUCE 409 -#define YY_ERROR_ACTION 410 -#define YY_ACCEPT_ACTION 411 -#define YY_NO_ACTION 412 +#define YY_MIN_SHIFTREDUCE 140 +#define YY_MAX_SHIFTREDUCE 277 +#define YY_MIN_REDUCE 278 +#define YY_MAX_REDUCE 415 +#define YY_ERROR_ACTION 416 +#define YY_ACCEPT_ACTION 417 +#define YY_NO_ACTION 418 /************* End control #defines *******************************************/ /* Define the yytestcase() macro to be a no-op if is not already defined @@ -188,93 +188,99 @@ typedef union { ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ -#define YY_ACTTAB_COUNT (266) +#define YY_ACTTAB_COUNT (295) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 411, 1, 140, 32, 150, 151, 152, 153, 154, 155, - /* 10 */ 43, 157, 30, 29, 40, 38, 31, 14, 164, 165, - /* 20 */ 166, 42, 219, 13, 13, 29, 268, 272, 37, 37, - /* 30 */ 34, 34, 27, 225, 26, 25, 28, 40, 38, 265, - /* 40 */ 8, 242, 41, 194, 15, 15, 274, 147, 167, 20, - /* 50 */ 20, 16, 228, 229, 268, 272, 256, 141, 142, 143, - /* 60 */ 144, 145, 146, 233, 7, 6, 17, 4, 3, 2, - /* 70 */ 18, 264, 28, 148, 5, 242, 244, 247, 250, 245, - /* 80 */ 248, 251, 263, 147, 167, 24, 24, 16, 228, 229, - /* 90 */ 268, 272, 256, 141, 142, 143, 144, 145, 146, 233, - /* 100 */ 7, 6, 17, 4, 3, 2, 18, 33, 33, 148, - /* 110 */ 5, 242, 244, 247, 250, 245, 248, 251, 263, 139, - /* 120 */ 32, 150, 151, 152, 153, 154, 155, 43, 157, 30, - /* 130 */ 29, 40, 38, 31, 14, 164, 165, 166, 254, 255, - /* 140 */ 252, 23, 29, 268, 272, 35, 35, 34, 34, 27, - /* 150 */ 42, 26, 25, 222, 40, 38, 190, 8, 187, 41, - /* 160 */ 200, 15, 15, 28, 220, 253, 195, 197, 193, 196, - /* 170 */ 198, 254, 255, 252, 10, 10, 19, 19, 28, 199, - /* 180 */ 176, 176, 9, 42, 9, 13, 13, 214, 215, 10, - /* 190 */ 10, 19, 19, 228, 229, 175, 175, 28, 253, 191, - /* 200 */ 188, 189, 192, 254, 255, 252, 28, 173, 10, 10, - /* 210 */ 19, 19, 167, 5, 174, 174, 183, 10, 10, 19, - /* 220 */ 19, 228, 229, 181, 181, 28, 259, 36, 36, 257, - /* 230 */ 253, 184, 185, 186, 225, 258, 11, 11, 21, 21, - /* 240 */ 28, 208, 235, 28, 201, 39, 39, 218, 217, 212, - /* 250 */ 5, 12, 12, 22, 22, 234, 203, 168, 180, 242, - /* 260 */ 6, 7, 218, 183, 207, 202, + /* 0 */ 417, 1, 142, 32, 152, 153, 154, 155, 156, 157, + /* 10 */ 43, 159, 28, 30, 40, 38, 31, 14, 166, 167, + /* 20 */ 168, 42, 221, 13, 13, 30, 272, 276, 272, 276, + /* 30 */ 34, 34, 27, 227, 26, 25, 29, 40, 38, 244, + /* 40 */ 8, 196, 41, 227, 15, 15, 278, 149, 169, 20, + /* 50 */ 20, 16, 230, 231, 272, 276, 222, 259, 143, 144, + /* 60 */ 145, 146, 147, 148, 235, 7, 6, 17, 4, 3, + /* 70 */ 2, 18, 150, 5, 267, 244, 246, 249, 252, 247, + /* 80 */ 250, 253, 244, 149, 37, 37, 192, 16, 230, 231, + /* 90 */ 272, 276, 189, 259, 143, 144, 145, 146, 147, 148, + /* 100 */ 235, 7, 6, 17, 4, 3, 2, 18, 150, 5, + /* 110 */ 267, 201, 246, 249, 252, 247, 250, 253, 244, 141, + /* 120 */ 32, 152, 153, 154, 155, 156, 157, 43, 159, 28, + /* 130 */ 30, 40, 38, 31, 14, 166, 167, 168, 42, 216, + /* 140 */ 217, 224, 30, 33, 33, 35, 35, 34, 34, 27, + /* 150 */ 23, 26, 25, 29, 40, 38, 202, 8, 214, 41, + /* 160 */ 169, 15, 15, 257, 5, 175, 254, 170, 29, 5, + /* 170 */ 230, 231, 256, 258, 257, 36, 36, 254, 269, 10, + /* 180 */ 10, 19, 19, 256, 258, 178, 178, 9, 42, 9, + /* 190 */ 13, 13, 197, 199, 195, 198, 200, 182, 255, 6, + /* 200 */ 185, 29, 268, 193, 190, 191, 194, 257, 209, 255, + /* 210 */ 254, 29, 10, 10, 19, 19, 256, 258, 177, 177, + /* 220 */ 237, 7, 10, 10, 19, 19, 39, 39, 176, 176, + /* 230 */ 262, 204, 29, 260, 236, 220, 186, 187, 188, 261, + /* 240 */ 263, 29, 255, 10, 10, 19, 19, 29, 185, 183, + /* 250 */ 183, 280, 11, 11, 21, 21, 29, 210, 12, 12, + /* 260 */ 22, 22, 280, 205, 230, 231, 280, 280, 169, 24, + /* 270 */ 24, 280, 220, 219, 280, 280, 280, 280, 280, 280, + /* 280 */ 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, + /* 290 */ 280, 280, 280, 280, 203, }; static const YYCODETYPE yy_lookahead[] = { /* 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, 8, 9, 68, 69, - /* 30 */ 68, 69, 70, 4, 72, 73, 48, 75, 76, 4, - /* 40 */ 78, 29, 80, 71, 82, 83, 0, 1, 60, 61, - /* 50 */ 62, 5, 6, 7, 8, 9, 10, 11, 12, 13, + /* 20 */ 58, 80, 81, 82, 83, 63, 8, 9, 8, 9, + /* 30 */ 68, 69, 70, 4, 72, 73, 48, 75, 76, 36, + /* 40 */ 78, 71, 80, 4, 82, 83, 0, 1, 60, 61, + /* 50 */ 62, 5, 6, 7, 8, 9, 36, 11, 12, 13, /* 60 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - /* 70 */ 24, 36, 48, 27, 28, 29, 30, 31, 32, 33, - /* 80 */ 34, 35, 36, 1, 60, 61, 62, 5, 6, 7, - /* 90 */ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - /* 100 */ 18, 19, 20, 21, 22, 23, 24, 59, 60, 27, - /* 110 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 40, + /* 70 */ 24, 25, 26, 27, 28, 36, 30, 31, 32, 33, + /* 80 */ 34, 35, 36, 1, 68, 69, 71, 5, 6, 7, + /* 90 */ 8, 9, 71, 11, 12, 13, 14, 15, 16, 17, + /* 100 */ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + /* 110 */ 28, 74, 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, 2, 3, - /* 140 */ 4, 63, 63, 8, 9, 59, 60, 68, 69, 70, - /* 150 */ 80, 72, 73, 83, 75, 76, 71, 78, 71, 80, - /* 160 */ 63, 82, 83, 48, 29, 29, 30, 31, 32, 33, - /* 170 */ 34, 2, 3, 4, 59, 60, 61, 62, 48, 74, - /* 180 */ 65, 66, 79, 80, 81, 82, 83, 2, 3, 59, - /* 190 */ 60, 61, 62, 6, 7, 65, 66, 48, 29, 30, - /* 200 */ 31, 32, 33, 2, 3, 4, 48, 67, 59, 60, - /* 210 */ 61, 62, 60, 28, 65, 66, 29, 59, 60, 61, - /* 220 */ 62, 6, 7, 65, 66, 48, 1, 59, 60, 4, - /* 230 */ 29, 30, 31, 32, 4, 10, 59, 60, 61, 62, - /* 240 */ 48, 64, 4, 48, 29, 59, 60, 8, 9, 77, - /* 250 */ 28, 59, 60, 61, 62, 17, 64, 62, 69, 29, - /* 260 */ 19, 18, 8, 29, 76, 75, + /* 130 */ 51, 52, 53, 54, 55, 56, 57, 58, 80, 2, + /* 140 */ 3, 83, 63, 59, 60, 59, 60, 68, 69, 70, + /* 150 */ 63, 72, 73, 48, 75, 76, 63, 78, 77, 80, + /* 160 */ 60, 82, 83, 1, 27, 67, 4, 62, 48, 27, + /* 170 */ 6, 7, 10, 11, 1, 59, 60, 4, 4, 59, + /* 180 */ 60, 61, 62, 10, 11, 65, 66, 79, 80, 81, + /* 190 */ 82, 83, 30, 31, 32, 33, 34, 69, 36, 20, + /* 200 */ 36, 48, 28, 30, 31, 32, 33, 1, 76, 36, + /* 210 */ 4, 48, 59, 60, 61, 62, 10, 11, 65, 66, + /* 220 */ 4, 19, 59, 60, 61, 62, 59, 60, 65, 66, + /* 230 */ 1, 75, 48, 4, 18, 8, 30, 31, 32, 10, + /* 240 */ 11, 48, 36, 59, 60, 61, 62, 48, 36, 65, + /* 250 */ 66, 84, 59, 60, 61, 62, 48, 64, 59, 60, + /* 260 */ 61, 62, 84, 64, 6, 7, 84, 84, 60, 61, + /* 270 */ 62, 84, 8, 9, 84, 84, 84, 84, 84, 84, + /* 280 */ 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, + /* 290 */ 84, 84, 84, 84, 36, }; -#define YY_SHIFT_USE_DFLT (266) +#define YY_SHIFT_USE_DFLT (295) #define YY_SHIFT_COUNT (43) #define YY_SHIFT_MIN (0) -#define YY_SHIFT_MAX (254) +#define YY_SHIFT_MAX (264) static const unsigned short int yy_shift_ofst[] = { - /* 0 */ 82, 46, 230, 230, 230, 230, 230, 230, 18, 18, - /* 10 */ 230, 230, 230, 135, 185, 18, 29, 29, 29, 12, - /* 20 */ 12, 12, 12, 29, 12, 136, 169, 201, 187, 215, - /* 30 */ 225, 35, 238, 29, 222, 29, 29, 222, 241, 29, - /* 40 */ 243, 239, 254, 234, + /* 0 */ 82, 46, 39, 39, 39, 39, 39, 39, 18, 18, + /* 10 */ 39, 39, 39, 20, 137, 18, 29, 29, 29, 3, + /* 20 */ 3, 3, 3, 29, 3, 162, 173, 206, 229, 164, + /* 30 */ 258, 174, 216, 29, 142, 29, 29, 142, 179, 29, + /* 40 */ 202, 264, 227, 212, }; #define YY_REDUCE_USE_DFLT (-60) #define YY_REDUCE_COUNT (40) #define YY_REDUCE_MIN (-59) -#define YY_REDUCE_MAX (195) +#define YY_REDUCE_MAX (208) static const short yy_reduce_ofst[] = { - /* 0 */ -38, 79, 115, 130, 149, 158, 177, 192, 103, -59, - /* 10 */ -12, 24, 24, 70, -40, 70, 48, 86, 168, 195, - /* 20 */ 195, 195, 195, 186, 195, -28, 85, 87, 78, 97, - /* 30 */ 105, 172, 140, 152, 189, 152, 152, 189, 188, 152, - /* 40 */ 190, + /* 0 */ -38, 79, 120, 153, 163, 184, 193, 199, 108, -59, + /* 10 */ -12, 208, 208, 58, 16, 58, 84, 86, 116, 105, + /* 20 */ 105, 105, 105, 167, 105, -30, 15, 21, 37, 87, + /* 30 */ 93, 81, 98, 100, 128, 100, 100, 128, 132, 100, + /* 40 */ 156, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 410, 410, 374, 373, 372, 318, 347, 342, 403, 352, - /* 10 */ 366, 345, 340, 357, 299, 359, 402, 376, 375, 368, - /* 20 */ 308, 346, 341, 306, 307, 385, 382, 379, 363, 295, - /* 30 */ 294, 298, 285, 349, 409, 314, 313, 315, 297, 305, - /* 40 */ 296, 407, 407, 292, + /* 0 */ 416, 416, 378, 377, 376, 322, 351, 346, 409, 356, + /* 10 */ 370, 349, 344, 361, 303, 363, 408, 380, 379, 372, + /* 20 */ 312, 350, 345, 310, 311, 389, 386, 383, 298, 367, + /* 30 */ 299, 302, 289, 353, 415, 318, 317, 319, 301, 309, + /* 40 */ 300, 413, 413, 296, }; /********** End of lemon-generated parsing tables *****************************/ @@ -304,23 +310,32 @@ static const YYCODETYPE yyFallback[] = { 4, /* LINE_INDENTED_SPACE => LINE_CONTINUATION */ 4, /* LINE_TABLE => LINE_CONTINUATION */ 4, /* LINE_TABLE_SEPARATOR => LINE_CONTINUATION */ - 0, /* LINE_HTML => nothing */ - 10, /* LINE_ATX_1 => LINE_HTML */ - 10, /* LINE_ATX_2 => LINE_HTML */ - 10, /* LINE_ATX_3 => LINE_HTML */ - 10, /* LINE_ATX_4 => LINE_HTML */ - 10, /* LINE_ATX_5 => LINE_HTML */ - 10, /* LINE_ATX_6 => LINE_HTML */ - 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 */ + 0, /* LINE_FALLBACK => nothing */ + 10, /* LINE_HTML => LINE_FALLBACK */ + 10, /* LINE_ATX_1 => LINE_FALLBACK */ + 10, /* LINE_ATX_2 => LINE_FALLBACK */ + 10, /* LINE_ATX_3 => LINE_FALLBACK */ + 10, /* LINE_ATX_4 => LINE_FALLBACK */ + 10, /* LINE_ATX_5 => LINE_FALLBACK */ + 10, /* LINE_ATX_6 => LINE_FALLBACK */ + 10, /* LINE_BLOCKQUOTE => LINE_FALLBACK */ + 10, /* LINE_LIST_BULLETED => LINE_FALLBACK */ + 10, /* LINE_LIST_ENUMERATED => LINE_FALLBACK */ + 10, /* LINE_DEF_ABBREVIATION => LINE_FALLBACK */ + 10, /* LINE_DEF_CITATION => LINE_FALLBACK */ + 10, /* LINE_DEF_FOOTNOTE => LINE_FALLBACK */ + 10, /* LINE_DEF_GLOSSARY => LINE_FALLBACK */ + 10, /* LINE_DEF_LINK => LINE_FALLBACK */ + 10, /* LINE_TOC => LINE_FALLBACK */ + 10, /* LINE_DEFINITION => LINE_FALLBACK */ + 10, /* LINE_META => LINE_FALLBACK */ + 0, /* LINE_BACKTICK => nothing */ + 29, /* LINE_FENCE_BACKTICK_3 => LINE_BACKTICK */ + 29, /* LINE_FENCE_BACKTICK_4 => LINE_BACKTICK */ + 29, /* LINE_FENCE_BACKTICK_5 => LINE_BACKTICK */ + 29, /* LINE_FENCE_BACKTICK_START_3 => LINE_BACKTICK */ + 29, /* LINE_FENCE_BACKTICK_START_4 => LINE_BACKTICK */ + 29, /* LINE_FENCE_BACKTICK_START_5 => LINE_BACKTICK */ }; #endif /* YYFALLBACK */ @@ -408,14 +423,14 @@ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ static const char *const yyTokenName[] = { "$", "LINE_HR", "LINE_SETEXT_1", "LINE_SETEXT_2", "LINE_CONTINUATION", "LINE_PLAIN", "LINE_INDENTED_TAB", "LINE_INDENTED_SPACE", - "LINE_TABLE", "LINE_TABLE_SEPARATOR", "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_FENCE_BACKTICK", "LINE_FENCE_BACKTICK_START", "LINE_TOC", - "LINE_DEFINITION", "LINE_EMPTY", "LINE_FENCE_BACKTICK_3", "LINE_FENCE_BACKTICK_4", + "LINE_TABLE", "LINE_TABLE_SEPARATOR", "LINE_FALLBACK", "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_META", "LINE_BACKTICK", "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", + "LINE_EMPTY", "error", "doc", "blocks", "block", "blockquote", "def_abbreviation", "def_citation", "def_footnote", "def_glossary", "def_link", "definition_block", "empty", "fenced_block", "html_block", "indented_code", @@ -550,26 +565,28 @@ static const char *const yyRuleName[] = { /* 113 */ "fenced_5 ::= LINE_FENCE_BACKTICK_START_5", /* 114 */ "fenced_line ::= LINE_CONTINUATION", /* 115 */ "fenced_line ::= LINE_EMPTY", - /* 116 */ "fenced_line ::= LINE_SETEXT_1", - /* 117 */ "fenced_line ::= LINE_SETEXT_2", - /* 118 */ "html_block ::= LINE_HTML", - /* 119 */ "html_line ::= LINE_CONTINUATION", - /* 120 */ "html_line ::= LINE_HTML", - /* 121 */ "html_line ::= LINE_HR", - /* 122 */ "indented_code ::= indented_line", - /* 123 */ "list_bullet ::= item_bullet", - /* 124 */ "list_enum ::= item_enum", - /* 125 */ "meta_block ::= LINE_META", - /* 126 */ "meta_line ::= LINE_META", - /* 127 */ "meta_line ::= LINE_CONTINUATION", - /* 128 */ "para ::= LINE_PLAIN", - /* 129 */ "table ::= table_header", - /* 130 */ "header_rows ::= LINE_TABLE", - /* 131 */ "table_body ::= table_section", - /* 132 */ "all_rows ::= row", - /* 133 */ "row ::= header_rows", - /* 134 */ "row ::= LINE_TABLE_SEPARATOR", - /* 135 */ "para ::= defs", + /* 116 */ "fenced_line ::= LINE_FALLBACK", + /* 117 */ "fenced_line ::= LINE_HR", + /* 118 */ "fenced_line ::= LINE_HTML", + /* 119 */ "html_block ::= LINE_HTML", + /* 120 */ "html_line ::= LINE_CONTINUATION", + /* 121 */ "html_line ::= LINE_FALLBACK", + /* 122 */ "html_line ::= LINE_HR", + /* 123 */ "html_line ::= LINE_HTML", + /* 124 */ "indented_code ::= indented_line", + /* 125 */ "list_bullet ::= item_bullet", + /* 126 */ "list_enum ::= item_enum", + /* 127 */ "meta_block ::= LINE_META", + /* 128 */ "meta_line ::= LINE_META", + /* 129 */ "meta_line ::= LINE_CONTINUATION", + /* 130 */ "para ::= LINE_PLAIN", + /* 131 */ "table ::= table_header", + /* 132 */ "header_rows ::= LINE_TABLE", + /* 133 */ "table_body ::= table_section", + /* 134 */ "all_rows ::= row", + /* 135 */ "row ::= header_rows", + /* 136 */ "row ::= LINE_TABLE_SEPARATOR", + /* 137 */ "para ::= defs", }; #endif /* NDEBUG */ @@ -1036,10 +1053,12 @@ static const struct { { 71, 1 }, { 71, 1 }, { 71, 1 }, + { 71, 1 }, { 50, 1 }, { 74, 1 }, { 74, 1 }, { 74, 1 }, + { 74, 1 }, { 51, 1 }, { 52, 1 }, { 53, 1 }, @@ -1377,26 +1396,28 @@ static void yy_reduce( /* (113) fenced_5 ::= LINE_FENCE_BACKTICK_START_5 */ yytestcase(yyruleno==113); /* (114) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==114); /* (115) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==115); - /* (116) fenced_line ::= LINE_SETEXT_1 */ yytestcase(yyruleno==116); - /* (117) fenced_line ::= LINE_SETEXT_2 */ yytestcase(yyruleno==117); - /* (118) html_block ::= LINE_HTML */ yytestcase(yyruleno==118); - /* (119) html_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==119); - /* (120) html_line ::= LINE_HTML */ yytestcase(yyruleno==120); - /* (121) html_line ::= LINE_HR */ yytestcase(yyruleno==121); - /* (122) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=122); - /* (123) list_bullet ::= item_bullet (OPTIMIZED OUT) */ assert(yyruleno!=123); - /* (124) list_enum ::= item_enum (OPTIMIZED OUT) */ assert(yyruleno!=124); - /* (125) meta_block ::= LINE_META */ yytestcase(yyruleno==125); - /* (126) meta_line ::= LINE_META */ yytestcase(yyruleno==126); - /* (127) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==127); - /* (128) para ::= LINE_PLAIN */ yytestcase(yyruleno==128); - /* (129) table ::= table_header */ yytestcase(yyruleno==129); - /* (130) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==130); - /* (131) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=131); - /* (132) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=132); - /* (133) row ::= header_rows */ yytestcase(yyruleno==133); - /* (134) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==134); - /* (135) para ::= defs */ yytestcase(yyruleno==135); + /* (116) fenced_line ::= LINE_FALLBACK */ yytestcase(yyruleno==116); + /* (117) fenced_line ::= LINE_HR */ yytestcase(yyruleno==117); + /* (118) fenced_line ::= LINE_HTML */ yytestcase(yyruleno==118); + /* (119) html_block ::= LINE_HTML */ yytestcase(yyruleno==119); + /* (120) html_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==120); + /* (121) html_line ::= LINE_FALLBACK */ yytestcase(yyruleno==121); + /* (122) html_line ::= LINE_HR */ yytestcase(yyruleno==122); + /* (123) html_line ::= LINE_HTML */ yytestcase(yyruleno==123); + /* (124) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=124); + /* (125) list_bullet ::= item_bullet (OPTIMIZED OUT) */ assert(yyruleno!=125); + /* (126) list_enum ::= item_enum (OPTIMIZED OUT) */ assert(yyruleno!=126); + /* (127) meta_block ::= LINE_META */ yytestcase(yyruleno==127); + /* (128) meta_line ::= LINE_META */ yytestcase(yyruleno==128); + /* (129) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==129); + /* (130) para ::= LINE_PLAIN */ yytestcase(yyruleno==130); + /* (131) table ::= table_header */ yytestcase(yyruleno==131); + /* (132) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==132); + /* (133) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=133); + /* (134) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=134); + /* (135) row ::= header_rows */ yytestcase(yyruleno==135); + /* (136) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==136); + /* (137) para ::= defs */ yytestcase(yyruleno==137); break; /********** End reduce actions ************************************************/ }; diff --git a/Sources/libMultiMarkdown/parser.h b/Sources/libMultiMarkdown/parser.h index 5c1dc2c..3c8791c 100644 --- a/Sources/libMultiMarkdown/parser.h +++ b/Sources/libMultiMarkdown/parser.h @@ -7,30 +7,30 @@ #define LINE_INDENTED_SPACE 7 #define LINE_TABLE 8 #define LINE_TABLE_SEPARATOR 9 -#define LINE_HTML 10 -#define LINE_ATX_1 11 -#define LINE_ATX_2 12 -#define LINE_ATX_3 13 -#define LINE_ATX_4 14 -#define LINE_ATX_5 15 -#define LINE_ATX_6 16 -#define LINE_BLOCKQUOTE 17 -#define LINE_LIST_BULLETED 18 -#define LINE_LIST_ENUMERATED 19 -#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_FALLBACK 10 +#define LINE_HTML 11 +#define LINE_ATX_1 12 +#define LINE_ATX_2 13 +#define LINE_ATX_3 14 +#define LINE_ATX_4 15 +#define LINE_ATX_5 16 +#define LINE_ATX_6 17 +#define LINE_BLOCKQUOTE 18 +#define LINE_LIST_BULLETED 19 +#define LINE_LIST_ENUMERATED 20 +#define LINE_DEF_ABBREVIATION 21 +#define LINE_DEF_CITATION 22 +#define LINE_DEF_FOOTNOTE 23 +#define LINE_DEF_GLOSSARY 24 +#define LINE_DEF_LINK 25 +#define LINE_TOC 26 +#define LINE_DEFINITION 27 +#define LINE_META 28 +#define LINE_BACKTICK 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 +#define LINE_EMPTY 36 diff --git a/Sources/libMultiMarkdown/parser.out b/Sources/libMultiMarkdown/parser.out index ed89f4a..4644b5b 100644 --- a/Sources/libMultiMarkdown/parser.out +++ b/Sources/libMultiMarkdown/parser.out @@ -112,9 +112,9 @@ State 0: LINE_PLAIN shift 16 LINE_INDENTED_TAB shift-reduce 90 indented_line ::= LINE_INDENTED_TAB LINE_INDENTED_SPACE shift-reduce 91 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR - LINE_HTML shift-reduce 118 html_block ::= LINE_HTML + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR + LINE_HTML shift-reduce 119 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 @@ -131,14 +131,14 @@ State 0: LINE_DEF_LINK shift 18 LINE_TOC shift-reduce 10 block ::= LINE_TOC LINE_DEFINITION shift 5 - LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY + LINE_META shift-reduce 127 meta_block ::= LINE_META LINE_FENCE_BACKTICK_3 shift-reduce 106 fenced_3 ::= LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 shift-reduce 109 fenced_4 ::= LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 shift-reduce 112 fenced_5 ::= LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 shift-reduce 107 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 shift-reduce 110 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 shift-reduce 113 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 - LINE_META shift-reduce 125 meta_block ::= LINE_META + LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY doc accept blocks shift 1 block shift-reduce 2 blocks ::= block @@ -151,8 +151,8 @@ State 0: definition_block shift-reduce 17 block ::= definition_block empty shift 43 fenced_block shift-reduce 19 block ::= fenced_block - html_block shift 30 - indented_code shift 29 + html_block shift 28 + indented_code shift 30 list_bullet shift 40 list_enum shift 38 meta_block shift 31 @@ -160,7 +160,7 @@ State 0: 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 29 /* because indented_line==indented_code */ + indented_line shift 30 /* because indented_line==indented_code */ defs shift 34 def shift 34 /* because def==defs */ fenced_3 shift 27 @@ -287,9 +287,9 @@ State 1: LINE_PLAIN shift 16 LINE_INDENTED_TAB shift-reduce 90 indented_line ::= LINE_INDENTED_TAB LINE_INDENTED_SPACE shift-reduce 91 indented_line ::= LINE_INDENTED_SPACE - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR - LINE_HTML shift-reduce 118 html_block ::= LINE_HTML + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR + LINE_HTML shift-reduce 119 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 @@ -306,14 +306,14 @@ State 1: LINE_DEF_LINK shift 18 LINE_TOC shift-reduce 10 block ::= LINE_TOC LINE_DEFINITION shift 5 - LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY + LINE_META shift-reduce 127 meta_block ::= LINE_META LINE_FENCE_BACKTICK_3 shift-reduce 106 fenced_3 ::= LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_4 shift-reduce 109 fenced_4 ::= LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_5 shift-reduce 112 fenced_5 ::= LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_START_3 shift-reduce 107 fenced_3 ::= LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_4 shift-reduce 110 fenced_4 ::= LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_5 shift-reduce 113 fenced_5 ::= LINE_FENCE_BACKTICK_START_5 - LINE_META shift-reduce 125 meta_block ::= LINE_META + LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY block shift-reduce 1 blocks ::= blocks block blockquote shift 32 def_abbreviation shift-reduce 12 block ::= def_abbreviation @@ -324,8 +324,8 @@ State 1: definition_block shift-reduce 17 block ::= definition_block empty shift 43 fenced_block shift-reduce 19 block ::= fenced_block - html_block shift 30 - indented_code shift 29 + html_block shift 28 + indented_code shift 30 list_bullet shift 40 list_enum shift 38 meta_block shift 31 @@ -333,7 +333,7 @@ State 1: 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 29 /* because indented_line==indented_code */ + indented_line shift 30 /* because indented_line==indented_code */ defs shift 34 def shift 34 /* because def==defs */ fenced_3 shift 27 @@ -367,7 +367,7 @@ State 2: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 100 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 10 chunk_line shift 10 /* because chunk_line==chunk */ nested_chunks shift 19 @@ -397,7 +397,7 @@ State 3: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 99 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 10 chunk_line shift 10 /* because chunk_line==chunk */ nested_chunks shift 19 @@ -427,7 +427,7 @@ State 4: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 98 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 10 chunk_line shift 10 /* because chunk_line==chunk */ nested_chunks shift 19 @@ -457,7 +457,7 @@ State 5: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 44 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 10 chunk_line shift 10 /* because chunk_line==chunk */ nested_chunks shift 19 @@ -486,7 +486,7 @@ State 6: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 73 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 11 chunk_line shift 11 /* because chunk_line==chunk */ nested_chunks shift 21 @@ -514,7 +514,7 @@ State 7: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 68 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk shift 12 chunk_line shift 12 /* because chunk_line==chunk */ nested_chunks shift 22 @@ -524,7 +524,7 @@ State 7: State 8: table ::= table_header * table_body - (129) table ::= table_header * + (131) table ::= table_header * header_rows ::= * header_rows LINE_TABLE header_rows ::= * LINE_TABLE table_body ::= * table_body table_section @@ -536,16 +536,16 @@ State 8: row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE - LINE_TABLE reduce 129 ** Parsing conflict ** - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 129 ** Parsing conflict ** + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE + LINE_TABLE reduce 131 ** Parsing conflict ** + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR reduce 131 ** Parsing conflict ** table_body shift 9 header_rows shift 42 table_section shift 9 /* because table_section==table_body */ all_rows shift 13 row shift 13 /* because row==all_rows */ - {default} reduce 129 table ::= table_header + {default} reduce 131 table ::= table_header State 9: (78) table ::= table_header table_body * @@ -559,9 +559,9 @@ State 9: row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE LINE_TABLE reduce 78 ** Parsing conflict ** - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR LINE_TABLE_SEPARATOR reduce 78 ** Parsing conflict ** header_rows shift 42 table_section shift-reduce 81 table_body ::= table_body table_section @@ -585,7 +585,7 @@ State 10: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 92 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk_line shift-reduce 29 chunk ::= chunk chunk_line nested_chunks shift 20 nested_chunk shift 20 /* because nested_chunk==nested_chunks */ @@ -607,7 +607,7 @@ State 11: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 71 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk_line shift-reduce 29 chunk ::= chunk chunk_line nested_chunks shift 24 nested_chunk shift 24 /* because nested_chunk==nested_chunks */ @@ -629,7 +629,7 @@ State 12: LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 66 ** Parsing conflict ** - empty shift 28 + empty shift 29 chunk_line shift-reduce 29 chunk ::= chunk chunk_line nested_chunks shift 24 nested_chunk shift 24 /* because nested_chunk==nested_chunks */ @@ -644,9 +644,9 @@ State 13: row ::= * header_rows row ::= * LINE_TABLE_SEPARATOR - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE LINE_TABLE reduce 83 ** Parsing conflict ** - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR LINE_TABLE_SEPARATOR reduce 83 ** Parsing conflict ** LINE_EMPTY shift-reduce 82 table_section ::= all_rows LINE_EMPTY LINE_EMPTY reduce 83 ** Parsing conflict ** @@ -680,9 +680,9 @@ State 15: row ::= * LINE_TABLE_SEPARATOR (85) para ::= all_rows * - LINE_TABLE shift-reduce 130 header_rows ::= LINE_TABLE + LINE_TABLE shift-reduce 132 header_rows ::= LINE_TABLE LINE_TABLE reduce 85 ** Parsing conflict ** - LINE_TABLE_SEPARATOR shift-reduce 134 row ::= LINE_TABLE_SEPARATOR + LINE_TABLE_SEPARATOR shift-reduce 136 row ::= LINE_TABLE_SEPARATOR LINE_TABLE_SEPARATOR reduce 85 ** Parsing conflict ** header_rows shift 42 row shift-reduce 84 all_rows ::= all_rows row @@ -693,12 +693,12 @@ State 16: chunk ::= * chunk_line chunk_line ::= * LINE_CONTINUATION para ::= LINE_PLAIN * chunk - (128) para ::= LINE_PLAIN * + (130) para ::= LINE_PLAIN * LINE_CONTINUATION shift-reduce 87 chunk_line ::= LINE_CONTINUATION chunk shift 33 chunk_line shift 33 /* because chunk_line==chunk */ - {default} reduce 128 para ::= LINE_PLAIN + {default} reduce 130 para ::= LINE_PLAIN State 17: chunk ::= * chunk chunk_line @@ -735,7 +735,7 @@ State 19: LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 94 ** Parsing conflict ** - empty shift 28 + empty shift 29 nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk {default} reduce 94 tail ::= nested_chunks @@ -750,7 +750,7 @@ State 20: LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 34 ** Parsing conflict ** - empty shift 28 + empty shift 29 nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk {default} reduce 34 opt_ext_chunk ::= chunk nested_chunks @@ -765,7 +765,7 @@ State 21: LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 72 ** Parsing conflict ** - empty shift 28 + empty shift 29 nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk {default} reduce 72 item_enum ::= LINE_LIST_ENUMERATED nested_chunks @@ -780,7 +780,7 @@ State 22: LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 67 ** Parsing conflict ** - empty shift 28 + empty shift 29 nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk {default} reduce 67 item_bullet ::= LINE_LIST_BULLETED nested_chunks @@ -807,7 +807,7 @@ State 24: LINE_EMPTY shift-reduce 104 empty ::= LINE_EMPTY LINE_EMPTY reduce 33 ** Parsing conflict ** - empty shift 28 + empty shift 29 nested_chunk shift-reduce 30 nested_chunks ::= nested_chunks nested_chunk {default} reduce 33 ext_chunk ::= chunk nested_chunks @@ -821,14 +821,16 @@ State 25: fenced_5 ::= fenced_5 * LINE_FENCE_BACKTICK_START_4 fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - fenced_line ::= * LINE_SETEXT_1 - fenced_line ::= * LINE_SETEXT_2 + fenced_line ::= * LINE_FALLBACK + fenced_line ::= * LINE_HR + fenced_line ::= * LINE_HTML - LINE_SETEXT_1 shift-reduce 116 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 117 fenced_line ::= LINE_SETEXT_2 + LINE_HR shift-reduce 117 fenced_line ::= LINE_HR + LINE_HR reduce 111 ** Parsing conflict ** LINE_CONTINUATION shift-reduce 114 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 111 ** Parsing conflict ** + LINE_FALLBACK shift-reduce 116 fenced_line ::= LINE_FALLBACK + LINE_HTML shift-reduce 118 fenced_line ::= LINE_HTML + LINE_HTML reduce 111 ** Parsing conflict ** LINE_FENCE_BACKTICK_3 shift-reduce 57 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_3 reduce 111 ** Parsing conflict ** LINE_FENCE_BACKTICK_4 shift-reduce 59 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_4 @@ -839,6 +841,8 @@ State 25: LINE_FENCE_BACKTICK_START_3 reduce 111 ** Parsing conflict ** LINE_FENCE_BACKTICK_START_4 shift-reduce 60 fenced_5 ::= fenced_5 LINE_FENCE_BACKTICK_START_4 LINE_FENCE_BACKTICK_START_4 reduce 111 ** Parsing conflict ** + LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 111 ** Parsing conflict ** fenced_line shift-reduce 56 fenced_5 ::= fenced_5 fenced_line {default} reduce 111 fenced_block ::= fenced_5 @@ -851,14 +855,16 @@ State 26: fenced_4 ::= fenced_4 * LINE_FENCE_BACKTICK_START_3 fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - fenced_line ::= * LINE_SETEXT_1 - fenced_line ::= * LINE_SETEXT_2 + fenced_line ::= * LINE_FALLBACK + fenced_line ::= * LINE_HR + fenced_line ::= * LINE_HTML - LINE_SETEXT_1 shift-reduce 116 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 117 fenced_line ::= LINE_SETEXT_2 + LINE_HR shift-reduce 117 fenced_line ::= LINE_HR + LINE_HR reduce 108 ** Parsing conflict ** LINE_CONTINUATION shift-reduce 114 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 108 ** Parsing conflict ** + LINE_FALLBACK shift-reduce 116 fenced_line ::= LINE_FALLBACK + LINE_HTML shift-reduce 118 fenced_line ::= LINE_HTML + LINE_HTML reduce 108 ** Parsing conflict ** LINE_FENCE_BACKTICK_3 shift-reduce 53 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_3 reduce 108 ** Parsing conflict ** LINE_FENCE_BACKTICK_4 shift-reduce 50 fenced_block ::= fenced_4 LINE_FENCE_BACKTICK_4 @@ -867,6 +873,8 @@ State 26: LINE_FENCE_BACKTICK_5 reduce 108 ** Parsing conflict ** LINE_FENCE_BACKTICK_START_3 shift-reduce 54 fenced_4 ::= fenced_4 LINE_FENCE_BACKTICK_START_3 LINE_FENCE_BACKTICK_START_3 reduce 108 ** Parsing conflict ** + LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 108 ** Parsing conflict ** fenced_line shift-reduce 52 fenced_4 ::= fenced_4 fenced_line {default} reduce 108 fenced_block ::= fenced_4 @@ -878,24 +886,45 @@ State 27: fenced_3 ::= fenced_3 * fenced_line fenced_line ::= * LINE_CONTINUATION fenced_line ::= * LINE_EMPTY - fenced_line ::= * LINE_SETEXT_1 - fenced_line ::= * LINE_SETEXT_2 + fenced_line ::= * LINE_FALLBACK + fenced_line ::= * LINE_HR + fenced_line ::= * LINE_HTML - LINE_SETEXT_1 shift-reduce 116 fenced_line ::= LINE_SETEXT_1 - LINE_SETEXT_2 shift-reduce 117 fenced_line ::= LINE_SETEXT_2 + LINE_HR shift-reduce 117 fenced_line ::= LINE_HR + LINE_HR reduce 105 ** Parsing conflict ** LINE_CONTINUATION shift-reduce 114 fenced_line ::= LINE_CONTINUATION - LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY - LINE_EMPTY reduce 105 ** Parsing conflict ** + LINE_FALLBACK shift-reduce 116 fenced_line ::= LINE_FALLBACK + LINE_HTML shift-reduce 118 fenced_line ::= LINE_HTML + LINE_HTML reduce 105 ** Parsing conflict ** LINE_FENCE_BACKTICK_3 shift-reduce 46 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_3 LINE_FENCE_BACKTICK_3 reduce 105 ** Parsing conflict ** LINE_FENCE_BACKTICK_4 shift-reduce 47 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_4 LINE_FENCE_BACKTICK_4 reduce 105 ** Parsing conflict ** LINE_FENCE_BACKTICK_5 shift-reduce 48 fenced_block ::= fenced_3 LINE_FENCE_BACKTICK_5 LINE_FENCE_BACKTICK_5 reduce 105 ** Parsing conflict ** + LINE_EMPTY shift-reduce 115 fenced_line ::= LINE_EMPTY + LINE_EMPTY reduce 105 ** Parsing conflict ** fenced_line shift-reduce 49 fenced_3 ::= fenced_3 fenced_line {default} reduce 105 fenced_block ::= fenced_3 State 28: + (20) block ::= html_block * + html_block ::= html_block * html_line + html_line ::= * LINE_CONTINUATION + html_line ::= * LINE_FALLBACK + html_line ::= * LINE_HR + html_line ::= * LINE_HTML + + LINE_HR shift-reduce 122 html_line ::= LINE_HR + LINE_HR reduce 20 ** Parsing conflict ** + LINE_CONTINUATION shift-reduce 120 html_line ::= LINE_CONTINUATION + LINE_FALLBACK shift-reduce 121 html_line ::= LINE_FALLBACK + LINE_HTML shift-reduce 123 html_line ::= LINE_HTML + LINE_HTML reduce 20 ** Parsing conflict ** + html_line shift-reduce 61 html_block ::= html_block html_line + {default} reduce 20 block ::= html_block + +State 29: nested_chunk ::= empty * indented_line chunk nested_chunk ::= empty * indented_line (89) nested_chunk ::= empty * @@ -912,7 +941,7 @@ State 28: indented_line shift 23 {default} reduce 89 nested_chunk ::= empty -State 29: +State 30: (21) block ::= indented_code * indented_line ::= * LINE_INDENTED_TAB indented_line ::= * LINE_INDENTED_SPACE @@ -928,29 +957,14 @@ State 29: indented_line shift-reduce 62 indented_code ::= indented_code indented_line {default} reduce 21 block ::= indented_code -State 30: - (20) block ::= html_block * - html_block ::= html_block * html_line - html_line ::= * LINE_CONTINUATION - html_line ::= * LINE_HTML - html_line ::= * LINE_HR - - LINE_HR shift-reduce 121 html_line ::= LINE_HR - LINE_HR reduce 20 ** Parsing conflict ** - LINE_CONTINUATION shift-reduce 119 html_line ::= LINE_CONTINUATION - LINE_HTML shift-reduce 120 html_line ::= LINE_HTML - LINE_HTML reduce 20 ** Parsing conflict ** - html_line shift-reduce 61 html_block ::= html_block html_line - {default} reduce 20 block ::= html_block - State 31: (24) block ::= meta_block * meta_block ::= meta_block * meta_line meta_line ::= * LINE_META meta_line ::= * LINE_CONTINUATION - LINE_CONTINUATION shift-reduce 127 meta_line ::= LINE_CONTINUATION - LINE_META shift-reduce 126 meta_line ::= LINE_META + LINE_CONTINUATION shift-reduce 129 meta_line ::= LINE_CONTINUATION + LINE_META shift-reduce 128 meta_line ::= LINE_META LINE_META reduce 24 ** Parsing conflict ** meta_line shift-reduce 74 meta_block ::= meta_block meta_line {default} reduce 24 block ::= meta_block @@ -980,12 +994,12 @@ State 34: defs ::= defs * def def ::= * LINE_DEFINITION tail def ::= * LINE_DEFINITION - (135) para ::= defs * + (137) para ::= defs * LINE_DEFINITION shift 5 - LINE_DEFINITION reduce 135 ** Parsing conflict ** + LINE_DEFINITION reduce 137 ** Parsing conflict ** def shift-reduce 42 defs ::= defs def - {default} reduce 135 para ::= defs + {default} reduce 137 para ::= defs State 35: chunk ::= chunk * chunk_line @@ -1054,21 +1068,21 @@ State 40: State 41: table_header ::= header_rows * LINE_TABLE_SEPARATOR header_rows ::= header_rows * LINE_TABLE - (133) row ::= header_rows * + (135) row ::= header_rows * LINE_TABLE shift-reduce 80 header_rows ::= header_rows LINE_TABLE - LINE_TABLE reduce 133 ** Parsing conflict ** + LINE_TABLE reduce 135 ** Parsing conflict ** LINE_TABLE_SEPARATOR shift-reduce 79 table_header ::= header_rows LINE_TABLE_SEPARATOR - LINE_TABLE_SEPARATOR reduce 133 ** Parsing conflict ** - {default} reduce 133 row ::= header_rows + LINE_TABLE_SEPARATOR reduce 135 ** Parsing conflict ** + {default} reduce 135 row ::= header_rows State 42: header_rows ::= header_rows * LINE_TABLE - (133) row ::= header_rows * + (135) row ::= header_rows * LINE_TABLE shift-reduce 80 header_rows ::= header_rows LINE_TABLE - LINE_TABLE reduce 133 ** Parsing conflict ** - {default} reduce 133 row ::= header_rows + LINE_TABLE reduce 135 ** Parsing conflict ** + {default} reduce 135 row ::= header_rows State 43: (18) block ::= empty * @@ -1090,37 +1104,37 @@ Symbols: 7: LINE_INDENTED_SPACE 8: LINE_TABLE 9: LINE_TABLE_SEPARATOR - 10: LINE_HTML - 11: LINE_ATX_1 - 12: LINE_ATX_2 - 13: LINE_ATX_3 - 14: LINE_ATX_4 - 15: LINE_ATX_5 - 16: LINE_ATX_6 - 17: LINE_BLOCKQUOTE - 18: LINE_LIST_BULLETED - 19: LINE_LIST_ENUMERATED - 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 + 10: LINE_FALLBACK + 11: LINE_HTML + 12: LINE_ATX_1 + 13: LINE_ATX_2 + 14: LINE_ATX_3 + 15: LINE_ATX_4 + 16: LINE_ATX_5 + 17: LINE_ATX_6 + 18: LINE_BLOCKQUOTE + 19: LINE_LIST_BULLETED + 20: LINE_LIST_ENUMERATED + 21: LINE_DEF_ABBREVIATION + 22: LINE_DEF_CITATION + 23: LINE_DEF_FOOTNOTE + 24: LINE_DEF_GLOSSARY + 25: LINE_DEF_LINK + 26: LINE_TOC + 27: LINE_DEFINITION + 28: LINE_META + 29: LINE_BACKTICK 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 + 36: LINE_EMPTY 37: error: - 38: doc: LINE_HR LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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 + 38: doc: LINE_HR LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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_META 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_EMPTY + 39: blocks: LINE_HR LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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_META 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_EMPTY + 40: block: LINE_HR LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR 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_META 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_EMPTY 41: blockquote: LINE_BLOCKQUOTE 42: def_abbreviation: LINE_DEF_ABBREVIATION 43: def_citation: LINE_DEF_CITATION @@ -1151,10 +1165,10 @@ Symbols: 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 + 71: fenced_line: LINE_HR LINE_CONTINUATION LINE_FALLBACK LINE_HTML 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_HR LINE_CONTINUATION LINE_HTML + 74: html_line: LINE_HR LINE_CONTINUATION LINE_FALLBACK LINE_HTML 75: item_bullet: LINE_LIST_BULLETED 76: item_enum: LINE_LIST_ENUMERATED 77: meta_line: LINE_CONTINUATION LINE_META diff --git a/Sources/libMultiMarkdown/parser.y b/Sources/libMultiMarkdown/parser.y index ec0c52e..88099fd 100644 --- a/Sources/libMultiMarkdown/parser.y +++ b/Sources/libMultiMarkdown/parser.y @@ -68,9 +68,13 @@ %fallback LINE_CONTINUATION LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_TABLE_SEPARATOR. -%fallback 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_FENCE_BACKTICK LINE_FENCE_BACKTICK_START. +%fallback LINE_FALLBACK 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_META. + +%fallback LINE_BACKTICK 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. + doc ::= blocks(B). { engine->root = B; } @@ -261,8 +265,9 @@ fenced_5 ::= LINE_FENCE_BACKTICK_START_5. fenced_line ::= LINE_CONTINUATION. fenced_line ::= LINE_EMPTY. -fenced_line ::= LINE_SETEXT_1. -fenced_line ::= LINE_SETEXT_2. +fenced_line ::= LINE_FALLBACK. +fenced_line ::= LINE_HR. +fenced_line ::= LINE_HTML. // HTML @@ -270,8 +275,9 @@ html_block(A) ::= html_block(B) html_line(C). { A = B; token_chain_append(B, html_block ::= LINE_HTML. html_line ::= LINE_CONTINUATION. -html_line ::= LINE_HTML. +html_line ::= LINE_FALLBACK. html_line ::= LINE_HR. +html_line ::= LINE_HTML. // Indented code blocks diff --git a/tests/MMD6Tests/Fenced Code Blocks.fodt b/tests/MMD6Tests/Fenced Code Blocks.fodt index 43d0367..0553205 100644 --- a/tests/MMD6Tests/Fenced Code Blocks.fodt +++ b/tests/MMD6Tests/Fenced Code Blocks.fodt @@ -299,6 +299,8 @@ 5 +<p>foo</p> + foo diff --git a/tests/MMD6Tests/Fenced Code Blocks.html b/tests/MMD6Tests/Fenced Code Blocks.html index 7e8bcb5..2b1c099 100644 --- a/tests/MMD6Tests/Fenced Code Blocks.html +++ b/tests/MMD6Tests/Fenced Code Blocks.html @@ -35,6 +35,9 @@ bar

5

+
<p>foo</p>
+
+
foo
 
diff --git a/tests/MMD6Tests/Fenced Code Blocks.htmlc b/tests/MMD6Tests/Fenced Code Blocks.htmlc index 80da4af..af3aaa0 100644 --- a/tests/MMD6Tests/Fenced Code Blocks.htmlc +++ b/tests/MMD6Tests/Fenced Code Blocks.htmlc @@ -29,5 +29,10 @@ latex config: article

5

+

```

+ +

foo

+``` +

``` foo

diff --git a/tests/MMD6Tests/Fenced Code Blocks.tex b/tests/MMD6Tests/Fenced Code Blocks.tex index e1b060d..fe07615 100644 --- a/tests/MMD6Tests/Fenced Code Blocks.tex +++ b/tests/MMD6Tests/Fenced Code Blocks.tex @@ -39,6 +39,10 @@ bar 5 +\begin{verbatim} +

foo

+\end{verbatim} + \begin{verbatim} foo \end{verbatim} diff --git a/tests/MMD6Tests/Fenced Code Blocks.text b/tests/MMD6Tests/Fenced Code Blocks.text index 1a3651d..935ff16 100644 --- a/tests/MMD6Tests/Fenced Code Blocks.text +++ b/tests/MMD6Tests/Fenced Code Blocks.text @@ -35,5 +35,9 @@ bar 5 +``` +

foo

+``` + ``` foo