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