#endif
/************* Begin control #defines *****************************************/
#define YYCODETYPE unsigned char
-#define YYNOCODE 71
+#define YYNOCODE 69
#define YYACTIONTYPE unsigned short int
#define ParseTOKENTYPE token *
typedef union {
#define ParseARG_FETCH mmd_engine * engine = yypParser->engine
#define ParseARG_STORE yypParser->engine = engine
#define YYFALLBACK 1
-#define YYNSTATE 50
-#define YYNRULE 114
-#define YY_MAX_SHIFT 49
-#define YY_MIN_SHIFTREDUCE 117
-#define YY_MAX_SHIFTREDUCE 230
-#define YY_MIN_REDUCE 231
-#define YY_MAX_REDUCE 344
-#define YY_ERROR_ACTION 345
-#define YY_ACCEPT_ACTION 346
-#define YY_NO_ACTION 347
+#define YYNSTATE 40
+#define YYNRULE 104
+#define YY_MAX_SHIFT 39
+#define YY_MIN_SHIFTREDUCE 106
+#define YY_MAX_SHIFTREDUCE 209
+#define YY_MIN_REDUCE 210
+#define YY_MAX_REDUCE 313
+#define YY_ERROR_ACTION 314
+#define YY_ACCEPT_ACTION 315
+#define YY_NO_ACTION 316
/************* End control #defines *******************************************/
/* Define the yytestcase() macro to be a no-op if is not already defined
** yy_default[] Default action for each state.
**
*********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (220)
+#define YY_ACTTAB_COUNT (200)
static const YYACTIONTYPE yy_action[] = {
- /* 0 */ 346, 1, 119, 31, 13, 48, 43, 41, 131, 132,
- /* 10 */ 134, 135, 136, 137, 138, 139, 141, 196, 197, 47,
- /* 20 */ 13, 192, 164, 43, 198, 41, 202, 4, 46, 44,
- /* 30 */ 18, 18, 47, 9, 12, 12, 9, 195, 201, 38,
- /* 40 */ 38, 231, 25, 209, 181, 196, 197, 212, 17, 122,
- /* 50 */ 123, 124, 125, 126, 127, 133, 19, 6, 5, 3,
- /* 60 */ 2, 20, 16, 15, 140, 198, 14, 44, 25, 209,
- /* 70 */ 30, 196, 197, 212, 17, 122, 123, 124, 125, 126,
- /* 80 */ 127, 133, 19, 6, 5, 3, 2, 20, 16, 15,
- /* 90 */ 140, 198, 14, 44, 118, 31, 13, 48, 43, 41,
- /* 100 */ 131, 132, 134, 135, 136, 137, 138, 139, 141, 209,
- /* 110 */ 144, 144, 13, 212, 34, 43, 183, 41, 176, 4,
- /* 120 */ 46, 218, 18, 18, 34, 219, 7, 7, 34, 32,
- /* 130 */ 32, 38, 38, 21, 147, 21, 8, 8, 34, 34,
- /* 140 */ 10, 10, 34, 23, 161, 23, 185, 26, 167, 26,
- /* 150 */ 11, 11, 143, 222, 153, 143, 34, 28, 22, 28,
- /* 160 */ 22, 24, 227, 24, 47, 166, 12, 12, 209, 143,
- /* 170 */ 34, 179, 212, 143, 223, 27, 222, 27, 5, 196,
- /* 180 */ 197, 192, 148, 143, 226, 35, 35, 222, 6, 29,
- /* 190 */ 162, 29, 33, 33, 177, 36, 36, 223, 34, 145,
- /* 200 */ 37, 37, 198, 39, 39, 40, 40, 229, 223, 42,
- /* 210 */ 42, 45, 45, 167, 49, 145, 188, 233, 233, 158,
+ /* 0 */ 315, 1, 108, 27, 118, 119, 120, 121, 39, 123,
+ /* 10 */ 26, 24, 34, 32, 25, 17, 130, 36, 166, 11,
+ /* 20 */ 11, 24, 175, 176, 172, 208, 29, 37, 22, 204,
+ /* 30 */ 36, 34, 32, 169, 6, 187, 35, 186, 12, 12,
+ /* 40 */ 210, 13, 208, 145, 175, 176, 204, 193, 109, 110,
+ /* 50 */ 111, 112, 113, 114, 115, 180, 5, 4, 3, 2,
+ /* 60 */ 14, 189, 190, 116, 186, 187, 199, 13, 208, 147,
+ /* 70 */ 175, 176, 204, 193, 109, 110, 111, 112, 113, 114,
+ /* 80 */ 115, 180, 5, 4, 3, 2, 14, 189, 190, 116,
+ /* 90 */ 186, 187, 199, 107, 27, 118, 119, 120, 121, 39,
+ /* 100 */ 123, 26, 24, 34, 32, 25, 17, 130, 31, 37,
+ /* 110 */ 175, 176, 24, 28, 28, 172, 23, 29, 37, 22,
+ /* 120 */ 30, 30, 34, 32, 23, 6, 182, 35, 132, 12,
+ /* 130 */ 12, 150, 23, 8, 8, 15, 15, 187, 181, 139,
+ /* 140 */ 139, 8, 8, 15, 15, 33, 33, 138, 138, 23,
+ /* 150 */ 7, 36, 7, 11, 11, 23, 20, 149, 9, 9,
+ /* 160 */ 18, 18, 23, 157, 10, 10, 19, 19, 191, 152,
+ /* 170 */ 23, 201, 131, 16, 16, 208, 161, 137, 148, 204,
+ /* 180 */ 131, 21, 21, 194, 164, 131, 146, 195, 165, 4,
+ /* 190 */ 192, 38, 156, 5, 200, 165, 151, 144, 167, 145,
};
static const YYCODETYPE yy_lookahead[] = {
/* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- /* 10 */ 38, 39, 40, 41, 42, 43, 44, 4, 5, 56,
- /* 20 */ 48, 3, 59, 51, 24, 53, 3, 55, 56, 26,
- /* 30 */ 58, 59, 56, 57, 58, 59, 60, 24, 15, 67,
- /* 40 */ 68, 0, 1, 2, 64, 4, 5, 6, 7, 8,
- /* 50 */ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- /* 60 */ 19, 20, 21, 22, 23, 24, 25, 26, 1, 2,
- /* 70 */ 48, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- /* 80 */ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- /* 90 */ 23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
- /* 100 */ 36, 37, 38, 39, 40, 41, 42, 43, 44, 2,
- /* 110 */ 47, 48, 48, 6, 33, 51, 66, 53, 62, 55,
- /* 120 */ 56, 3, 58, 59, 33, 7, 45, 46, 33, 63,
- /* 130 */ 64, 67, 68, 52, 50, 54, 45, 46, 33, 33,
- /* 140 */ 45, 46, 33, 52, 2, 54, 68, 52, 6, 54,
- /* 150 */ 45, 46, 46, 3, 53, 46, 33, 52, 52, 54,
- /* 160 */ 54, 52, 3, 54, 56, 57, 58, 59, 2, 46,
- /* 170 */ 33, 21, 6, 46, 24, 52, 3, 54, 17, 4,
- /* 180 */ 5, 3, 51, 46, 25, 65, 66, 3, 16, 52,
- /* 190 */ 24, 54, 63, 64, 21, 61, 62, 24, 33, 24,
- /* 200 */ 49, 50, 24, 45, 46, 45, 46, 3, 24, 45,
- /* 210 */ 46, 67, 68, 6, 69, 24, 3, 70, 70, 54,
+ /* 10 */ 38, 39, 40, 41, 42, 43, 44, 64, 65, 66,
+ /* 20 */ 67, 49, 4, 5, 3, 2, 54, 55, 56, 6,
+ /* 30 */ 64, 59, 60, 67, 62, 25, 64, 24, 66, 67,
+ /* 40 */ 0, 1, 2, 25, 4, 5, 6, 7, 8, 9,
+ /* 50 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ /* 60 */ 20, 21, 22, 23, 24, 25, 26, 1, 2, 57,
+ /* 70 */ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ /* 80 */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ /* 90 */ 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
+ /* 100 */ 37, 38, 39, 40, 41, 42, 43, 44, 54, 55,
+ /* 110 */ 4, 5, 49, 45, 46, 3, 36, 54, 55, 56,
+ /* 120 */ 45, 46, 59, 60, 36, 62, 3, 64, 48, 66,
+ /* 130 */ 67, 25, 36, 45, 46, 47, 48, 25, 15, 51,
+ /* 140 */ 52, 45, 46, 47, 48, 45, 46, 51, 52, 36,
+ /* 150 */ 63, 64, 65, 66, 67, 36, 49, 49, 45, 46,
+ /* 160 */ 47, 48, 36, 50, 45, 46, 47, 48, 3, 50,
+ /* 170 */ 36, 3, 46, 47, 48, 2, 61, 53, 58, 6,
+ /* 180 */ 46, 47, 48, 3, 2, 46, 21, 7, 6, 17,
+ /* 190 */ 25, 55, 60, 16, 26, 6, 59, 3, 25, 25,
};
-#define YY_SHIFT_USE_DFLT (220)
-#define YY_SHIFT_COUNT (49)
+#define YY_SHIFT_USE_DFLT (200)
+#define YY_SHIFT_COUNT (39)
#define YY_SHIFT_MIN (0)
-#define YY_SHIFT_MAX (213)
+#define YY_SHIFT_MAX (194)
static const unsigned char yy_shift_ofst[] = {
- /* 0 */ 67, 41, 178, 178, 107, 178, 178, 178, 178, 107,
- /* 10 */ 178, 178, 166, 13, 159, 184, 184, 118, 107, 23,
- /* 20 */ 18, 0, 0, 0, 0, 18, 0, 0, 0, 0,
- /* 30 */ 18, 3, 150, 173, 175, 159, 118, 23, 3, 18,
- /* 40 */ 18, 161, 18, 172, 204, 3, 142, 207, 191, 213,
+ /* 0 */ 66, 40, 112, 112, 112, 112, 23, 23, 112, 112,
+ /* 10 */ 112, 173, 23, 21, 21, 10, 10, 13, 10, 10,
+ /* 20 */ 21, 10, 165, 18, 106, 168, 180, 123, 21, 13,
+ /* 30 */ 21, 13, 172, 21, 177, 182, 189, 194, 194, 174,
};
-#define YY_REDUCE_USE_DFLT (-38)
-#define YY_REDUCE_COUNT (45)
-#define YY_REDUCE_MIN (-37)
-#define YY_REDUCE_MAX (165)
+#define YY_REDUCE_USE_DFLT (-48)
+#define YY_REDUCE_COUNT (34)
+#define YY_REDUCE_MIN (-47)
+#define YY_REDUCE_MAX (139)
static const short yy_reduce_ofst[] = {
- /* 0 */ -28, 64, 81, 91, -24, 95, 105, 106, 109, 108,
- /* 10 */ 123, 137, -37, 63, 120, 66, 129, 134, -37, 151,
- /* 20 */ 158, 165, 165, 165, 165, 160, 165, 165, 165, 165,
- /* 30 */ 164, 144, -20, -20, 22, 50, 56, 84, 78, 127,
- /* 40 */ 127, 101, 127, 131, 145, 78,
+ /* 0 */ -28, 63, 88, 96, 113, 119, 87, -47, 126, 134,
+ /* 10 */ 134, -34, -34, 68, 75, 80, 80, 54, 80, 80,
+ /* 20 */ 100, 80, 12, 107, 108, 115, 120, 124, 139, 136,
+ /* 30 */ 139, 136, 132, 139, 137,
};
static const YYACTIONTYPE yy_default[] = {
- /* 0 */ 345, 345, 328, 327, 324, 271, 266, 286, 283, 279,
- /* 10 */ 269, 264, 277, 235, 338, 335, 335, 330, 303, 313,
- /* 20 */ 329, 287, 285, 284, 282, 304, 270, 268, 265, 263,
- /* 30 */ 274, 234, 294, 292, 320, 296, 289, 260, 344, 288,
- /* 40 */ 256, 244, 273, 243, 301, 298, 322, 322, 242, 300,
+ /* 0 */ 314, 314, 288, 287, 264, 259, 307, 267, 281, 262,
+ /* 10 */ 257, 272, 274, 306, 289, 283, 240, 233, 263, 258,
+ /* 20 */ 238, 239, 292, 278, 229, 232, 228, 221, 266, 313,
+ /* 30 */ 244, 245, 231, 237, 230, 311, 311, 247, 246, 226,
};
/********** End of lemon-generated parsing tables *****************************/
"LINE_ATX_5", "LINE_ATX_6", "LINE_HR", "LINE_BLOCKQUOTE",
"LINE_LIST_BULLETED", "LINE_LIST_ENUMERATED", "LINE_DEF_CITATION", "LINE_DEF_FOOTNOTE",
"LINE_DEF_LINK", "LINE_FENCE_BACKTICK", "LINE_FENCE_BACKTICK_START", "LINE_TOC",
- "LINE_EMPTY", "LINE_META", "LINE_DEFINITION", "error",
- "doc", "blocks", "block", "para",
- "indented_code", "empty", "list_bulleted", "list_enumerated",
- "blockquote", "table", "def_citation", "def_footnote",
- "def_link", "html_block", "fenced_block", "meta_block",
- "definition_block", "para_lines", "para_line", "code_line",
- "indented_line", "quote_lines", "quote_line", "item_bulleted",
- "cont_blocks", "item_enumerated", "cont_block", "table_header",
+ "LINE_DEFINITION", "LINE_EMPTY", "LINE_META", "error",
+ "doc", "blocks", "block", "blockquote",
+ "def_citation", "def_footnote", "def_link", "definition_block",
+ "empty", "fenced_block", "html_block", "indented_code",
+ "list_bullet", "list_enum", "meta_block", "para",
+ "table", "chunk", "chunk_line", "nested_chunks",
+ "nested_chunk", "indented_line", "ext_chunk", "opt_ext_chunk",
+ "tail", "quote_line", "defs", "def",
+ "fenced", "fenced_line", "html_line", "item_bullet",
+ "item_enum", "meta_line", "table_header", "table_body",
"header_rows", "table_section", "all_rows", "row",
- "table_body", "html_block_lines", "html_block_line", "fenced_lines",
- "fenced_line", "meta_lines", "meta_line", "defs",
- "def", "def_lines",
};
#endif /* NDEBUG */
/* 0 */ "doc ::= blocks",
/* 1 */ "blocks ::= blocks block",
/* 2 */ "blocks ::= block",
- /* 3 */ "block ::= para",
- /* 4 */ "block ::= indented_code",
- /* 5 */ "block ::= LINE_ATX_1",
- /* 6 */ "block ::= LINE_ATX_2",
- /* 7 */ "block ::= LINE_ATX_3",
- /* 8 */ "block ::= LINE_ATX_4",
- /* 9 */ "block ::= LINE_ATX_5",
- /* 10 */ "block ::= LINE_ATX_6",
- /* 11 */ "block ::= empty",
- /* 12 */ "block ::= list_bulleted",
- /* 13 */ "block ::= list_enumerated",
- /* 14 */ "block ::= blockquote",
- /* 15 */ "block ::= table",
- /* 16 */ "block ::= LINE_HR",
- /* 17 */ "block ::= def_citation",
- /* 18 */ "block ::= def_footnote",
- /* 19 */ "block ::= def_link",
- /* 20 */ "block ::= html_block",
- /* 21 */ "block ::= fenced_block",
+ /* 3 */ "block ::= LINE_ATX_1",
+ /* 4 */ "block ::= LINE_ATX_2",
+ /* 5 */ "block ::= LINE_ATX_3",
+ /* 6 */ "block ::= LINE_ATX_4",
+ /* 7 */ "block ::= LINE_ATX_5",
+ /* 8 */ "block ::= LINE_ATX_6",
+ /* 9 */ "block ::= LINE_HR",
+ /* 10 */ "block ::= LINE_TOC",
+ /* 11 */ "block ::= blockquote",
+ /* 12 */ "block ::= def_citation",
+ /* 13 */ "block ::= def_footnote",
+ /* 14 */ "block ::= def_link",
+ /* 15 */ "block ::= definition_block",
+ /* 16 */ "block ::= empty",
+ /* 17 */ "block ::= fenced_block",
+ /* 18 */ "block ::= html_block",
+ /* 19 */ "block ::= indented_code",
+ /* 20 */ "block ::= list_bullet",
+ /* 21 */ "block ::= list_enum",
/* 22 */ "block ::= meta_block",
- /* 23 */ "block ::= LINE_TOC",
- /* 24 */ "block ::= definition_block",
- /* 25 */ "para ::= LINE_PLAIN para_lines",
- /* 26 */ "para_lines ::= para_lines para_line",
- /* 27 */ "indented_code ::= indented_code code_line",
- /* 28 */ "empty ::= empty LINE_EMPTY",
- /* 29 */ "blockquote ::= LINE_BLOCKQUOTE quote_lines",
- /* 30 */ "quote_lines ::= quote_lines quote_line",
- /* 31 */ "list_bulleted ::= list_bulleted item_bulleted",
- /* 32 */ "item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks",
- /* 33 */ "item_bulleted ::= LINE_LIST_BULLETED para_lines",
- /* 34 */ "item_bulleted ::= LINE_LIST_BULLETED cont_blocks",
- /* 35 */ "item_bulleted ::= LINE_LIST_BULLETED",
- /* 36 */ "list_enumerated ::= list_enumerated item_enumerated",
- /* 37 */ "item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks",
- /* 38 */ "item_enumerated ::= LINE_LIST_ENUMERATED para_lines",
- /* 39 */ "item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks",
- /* 40 */ "item_enumerated ::= LINE_LIST_ENUMERATED",
- /* 41 */ "cont_blocks ::= cont_blocks cont_block",
- /* 42 */ "cont_block ::= empty indented_line para_lines",
- /* 43 */ "cont_block ::= empty indented_line",
- /* 44 */ "table_header ::= header_rows LINE_TABLE_SEPARATOR",
- /* 45 */ "table_section ::= all_rows LINE_EMPTY",
- /* 46 */ "table_section ::= all_rows",
- /* 47 */ "all_rows ::= all_rows row",
- /* 48 */ "table ::= table_header table_body",
- /* 49 */ "table_body ::= table_body table_section",
- /* 50 */ "header_rows ::= header_rows LINE_TABLE",
- /* 51 */ "def_citation ::= LINE_DEF_CITATION para_lines cont_blocks",
- /* 52 */ "def_citation ::= LINE_DEF_CITATION para_lines",
- /* 53 */ "def_citation ::= LINE_DEF_CITATION cont_blocks",
- /* 54 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks",
- /* 55 */ "def_footnote ::= LINE_DEF_FOOTNOTE para_lines",
- /* 56 */ "def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks",
- /* 57 */ "def_link ::= LINE_DEF_LINK para_lines",
- /* 58 */ "html_block ::= LINE_HTML html_block_lines",
- /* 59 */ "html_block_lines ::= html_block_lines html_block_line",
- /* 60 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK",
- /* 61 */ "fenced_block ::= LINE_FENCE_BACKTICK fenced_lines",
- /* 62 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK",
- /* 63 */ "fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines",
- /* 64 */ "fenced_lines ::= fenced_lines fenced_line",
- /* 65 */ "meta_block ::= LINE_META meta_lines",
- /* 66 */ "meta_lines ::= meta_lines meta_line",
- /* 67 */ "definition_block ::= para defs",
- /* 68 */ "defs ::= defs def",
- /* 69 */ "def ::= LINE_DEFINITION def_lines",
- /* 70 */ "def ::= LINE_DEFINITION",
- /* 71 */ "def_lines ::= def_lines LINE_CONTINUATION",
- /* 72 */ "para ::= all_rows",
- /* 73 */ "para ::= LINE_PLAIN",
- /* 74 */ "para_lines ::= para_line",
- /* 75 */ "para_line ::= LINE_CONTINUATION",
- /* 76 */ "indented_code ::= indented_line",
- /* 77 */ "code_line ::= indented_line",
- /* 78 */ "code_line ::= LINE_EMPTY",
- /* 79 */ "indented_line ::= LINE_INDENTED_TAB",
- /* 80 */ "indented_line ::= LINE_INDENTED_SPACE",
+ /* 23 */ "block ::= para",
+ /* 24 */ "block ::= table",
+ /* 25 */ "chunk ::= chunk chunk_line",
+ /* 26 */ "nested_chunks ::= nested_chunks nested_chunk",
+ /* 27 */ "nested_chunk ::= empty indented_line chunk",
+ /* 28 */ "nested_chunk ::= empty indented_line",
+ /* 29 */ "ext_chunk ::= chunk nested_chunks",
+ /* 30 */ "opt_ext_chunk ::= chunk nested_chunks",
+ /* 31 */ "blockquote ::= blockquote quote_line",
+ /* 32 */ "def_citation ::= LINE_DEF_CITATION tail",
+ /* 33 */ "def_footnote ::= LINE_DEF_FOOTNOTE tail",
+ /* 34 */ "def_link ::= LINE_DEF_LINK chunk",
+ /* 35 */ "definition_block ::= para defs",
+ /* 36 */ "defs ::= defs def",
+ /* 37 */ "defs ::= def",
+ /* 38 */ "def ::= def LINE_CONTINUATION",
+ /* 39 */ "empty ::= empty LINE_EMPTY",
+ /* 40 */ "fenced_block ::= fenced LINE_FENCE_BACKTICK",
+ /* 41 */ "fenced ::= fenced fenced_line",
+ /* 42 */ "html_block ::= html_block html_line",
+ /* 43 */ "indented_code ::= indented_code indented_line",
+ /* 44 */ "indented_code ::= indented_code LINE_EMPTY",
+ /* 45 */ "list_bullet ::= list_bullet item_bullet",
+ /* 46 */ "item_bullet ::= LINE_LIST_BULLETED ext_chunk",
+ /* 47 */ "item_bullet ::= LINE_LIST_BULLETED chunk",
+ /* 48 */ "item_bullet ::= LINE_LIST_BULLETED nested_chunks",
+ /* 49 */ "item_bullet ::= LINE_LIST_BULLETED",
+ /* 50 */ "list_enum ::= list_enum item_enum",
+ /* 51 */ "item_enum ::= LINE_LIST_ENUMERATED ext_chunk",
+ /* 52 */ "item_enum ::= LINE_LIST_ENUMERATED chunk",
+ /* 53 */ "item_enum ::= LINE_LIST_ENUMERATED nested_chunks",
+ /* 54 */ "item_enum ::= LINE_LIST_ENUMERATED",
+ /* 55 */ "meta_block ::= meta_block meta_line",
+ /* 56 */ "para ::= LINE_PLAIN chunk",
+ /* 57 */ "table ::= table_header table_body",
+ /* 58 */ "table_header ::= header_rows LINE_TABLE_SEPARATOR",
+ /* 59 */ "header_rows ::= header_rows LINE_TABLE",
+ /* 60 */ "table_body ::= table_body table_section",
+ /* 61 */ "table_section ::= all_rows LINE_EMPTY",
+ /* 62 */ "table_section ::= all_rows",
+ /* 63 */ "all_rows ::= all_rows row",
+ /* 64 */ "para ::= all_rows",
+ /* 65 */ "chunk ::= chunk_line",
+ /* 66 */ "chunk_line ::= LINE_CONTINUATION",
+ /* 67 */ "nested_chunks ::= nested_chunk",
+ /* 68 */ "nested_chunk ::= empty",
+ /* 69 */ "indented_line ::= LINE_INDENTED_TAB",
+ /* 70 */ "indented_line ::= LINE_INDENTED_SPACE",
+ /* 71 */ "opt_ext_chunk ::= chunk",
+ /* 72 */ "tail ::= opt_ext_chunk",
+ /* 73 */ "tail ::= nested_chunks",
+ /* 74 */ "blockquote ::= LINE_BLOCKQUOTE",
+ /* 75 */ "quote_line ::= LINE_BLOCKQUOTE",
+ /* 76 */ "quote_line ::= LINE_CONTINUATION",
+ /* 77 */ "def_citation ::= LINE_DEF_CITATION",
+ /* 78 */ "def_footnote ::= LINE_DEF_FOOTNOTE",
+ /* 79 */ "def_link ::= LINE_DEF_LINK",
+ /* 80 */ "def ::= LINE_DEFINITION",
/* 81 */ "empty ::= LINE_EMPTY",
- /* 82 */ "blockquote ::= LINE_BLOCKQUOTE",
- /* 83 */ "quote_lines ::= quote_line",
- /* 84 */ "quote_line ::= LINE_BLOCKQUOTE",
- /* 85 */ "quote_line ::= LINE_CONTINUATION",
- /* 86 */ "list_bulleted ::= item_bulleted",
- /* 87 */ "list_enumerated ::= item_enumerated",
- /* 88 */ "cont_blocks ::= cont_block",
- /* 89 */ "cont_block ::= empty",
- /* 90 */ "all_rows ::= row",
- /* 91 */ "row ::= header_rows",
- /* 92 */ "row ::= LINE_TABLE_SEPARATOR",
- /* 93 */ "table ::= table_header",
- /* 94 */ "table_body ::= table_section",
- /* 95 */ "header_rows ::= LINE_TABLE",
- /* 96 */ "def_citation ::= LINE_DEF_CITATION",
- /* 97 */ "def_footnote ::= LINE_DEF_FOOTNOTE",
- /* 98 */ "def_link ::= LINE_DEF_LINK",
- /* 99 */ "html_block ::= LINE_HTML",
- /* 100 */ "html_block_lines ::= html_block_line",
- /* 101 */ "html_block_line ::= LINE_CONTINUATION",
- /* 102 */ "html_block_line ::= LINE_HTML",
- /* 103 */ "fenced_lines ::= fenced_line",
- /* 104 */ "fenced_lines ::=",
- /* 105 */ "fenced_line ::= LINE_CONTINUATION",
- /* 106 */ "fenced_line ::= LINE_EMPTY",
- /* 107 */ "meta_block ::= LINE_META",
- /* 108 */ "meta_lines ::= meta_line",
- /* 109 */ "meta_line ::= LINE_META",
- /* 110 */ "meta_line ::= LINE_CONTINUATION",
- /* 111 */ "defs ::= def",
- /* 112 */ "def_lines ::= LINE_CONTINUATION",
- /* 113 */ "para ::= defs",
+ /* 82 */ "fenced_block ::= fenced",
+ /* 83 */ "fenced ::= LINE_FENCE_BACKTICK",
+ /* 84 */ "fenced ::= LINE_FENCE_BACKTICK_START",
+ /* 85 */ "fenced_line ::= LINE_CONTINUATION",
+ /* 86 */ "fenced_line ::= LINE_EMPTY",
+ /* 87 */ "html_block ::= LINE_HTML",
+ /* 88 */ "html_line ::= LINE_CONTINUATION",
+ /* 89 */ "html_line ::= LINE_HTML",
+ /* 90 */ "indented_code ::= indented_line",
+ /* 91 */ "list_bullet ::= item_bullet",
+ /* 92 */ "list_enum ::= item_enum",
+ /* 93 */ "meta_block ::= LINE_META",
+ /* 94 */ "meta_line ::= LINE_META",
+ /* 95 */ "meta_line ::= LINE_CONTINUATION",
+ /* 96 */ "para ::= LINE_PLAIN",
+ /* 97 */ "table ::= table_header",
+ /* 98 */ "header_rows ::= LINE_TABLE",
+ /* 99 */ "table_body ::= table_section",
+ /* 100 */ "all_rows ::= row",
+ /* 101 */ "row ::= header_rows",
+ /* 102 */ "row ::= LINE_TABLE_SEPARATOR",
+ /* 103 */ "para ::= defs",
};
#endif /* NDEBUG */
{ 30, 1 },
{ 30, 1 },
{ 30, 1 },
- { 31, 2 },
{ 45, 2 },
+ { 47, 2 },
+ { 48, 3 },
+ { 48, 2 },
+ { 50, 2 },
+ { 51, 2 },
+ { 31, 2 },
{ 32, 2 },
{ 33, 2 },
- { 36, 2 },
- { 49, 2 },
{ 34, 2 },
- { 51, 3 },
- { 51, 2 },
- { 51, 2 },
- { 51, 1 },
{ 35, 2 },
- { 53, 3 },
- { 53, 2 },
- { 53, 2 },
- { 53, 1 },
- { 52, 2 },
- { 54, 3 },
{ 54, 2 },
+ { 54, 1 },
{ 55, 2 },
- { 57, 2 },
- { 57, 1 },
- { 58, 2 },
+ { 36, 2 },
{ 37, 2 },
- { 60, 2 },
{ 56, 2 },
- { 38, 3 },
{ 38, 2 },
- { 38, 2 },
- { 39, 3 },
{ 39, 2 },
{ 39, 2 },
{ 40, 2 },
+ { 59, 2 },
+ { 59, 2 },
+ { 59, 2 },
+ { 59, 1 },
{ 41, 2 },
- { 61, 2 },
- { 42, 3 },
- { 42, 2 },
- { 42, 3 },
+ { 60, 2 },
+ { 60, 2 },
+ { 60, 2 },
+ { 60, 1 },
{ 42, 2 },
- { 63, 2 },
{ 43, 2 },
- { 65, 2 },
{ 44, 2 },
- { 67, 2 },
- { 68, 2 },
- { 68, 1 },
- { 69, 2 },
- { 31, 1 },
- { 31, 1 },
+ { 62, 2 },
+ { 64, 2 },
+ { 63, 2 },
+ { 65, 2 },
+ { 65, 1 },
+ { 66, 2 },
+ { 43, 1 },
{ 45, 1 },
{ 46, 1 },
- { 32, 1 },
{ 47, 1 },
- { 47, 1 },
- { 48, 1 },
{ 48, 1 },
- { 33, 1 },
- { 36, 1 },
{ 49, 1 },
- { 50, 1 },
- { 50, 1 },
- { 34, 1 },
- { 35, 1 },
+ { 49, 1 },
+ { 51, 1 },
{ 52, 1 },
- { 54, 1 },
- { 58, 1 },
- { 59, 1 },
- { 59, 1 },
+ { 52, 1 },
+ { 31, 1 },
+ { 53, 1 },
+ { 53, 1 },
+ { 32, 1 },
+ { 33, 1 },
+ { 34, 1 },
+ { 55, 1 },
+ { 36, 1 },
{ 37, 1 },
- { 60, 1 },
{ 56, 1 },
+ { 56, 1 },
+ { 57, 1 },
+ { 57, 1 },
{ 38, 1 },
+ { 58, 1 },
+ { 58, 1 },
{ 39, 1 },
{ 40, 1 },
{ 41, 1 },
+ { 42, 1 },
+ { 61, 1 },
{ 61, 1 },
- { 62, 1 },
- { 62, 1 },
- { 63, 1 },
- { 63, 0 },
- { 64, 1 },
- { 64, 1 },
{ 43, 1 },
- { 65, 1 },
- { 66, 1 },
+ { 44, 1 },
+ { 64, 1 },
+ { 63, 1 },
{ 66, 1 },
{ 67, 1 },
- { 69, 1 },
- { 31, 1 },
+ { 67, 1 },
+ { 43, 1 },
};
static void yy_accept(yyParser*); /* Forward Declaration */
}
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 3: /* block ::= para */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_PARA); is_para_html(engine, yylhsminor.yy0); }
- yymsp[0].minor.yy0 = yylhsminor.yy0;
- break;
- case 4: /* block ::= indented_code */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_INDENTED); }
- yymsp[0].minor.yy0 = yylhsminor.yy0;
- break;
- case 5: /* block ::= LINE_ATX_1 */
+ case 3: /* block ::= LINE_ATX_1 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 6: /* block ::= LINE_ATX_2 */
+ case 4: /* block ::= LINE_ATX_2 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 7: /* block ::= LINE_ATX_3 */
+ case 5: /* block ::= LINE_ATX_3 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H3); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 8: /* block ::= LINE_ATX_4 */
+ case 6: /* block ::= LINE_ATX_4 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H4); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 9: /* block ::= LINE_ATX_5 */
+ case 7: /* block ::= LINE_ATX_5 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H5); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 10: /* block ::= LINE_ATX_6 */
+ case 8: /* block ::= LINE_ATX_6 */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H6); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 11: /* block ::= empty */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_EMPTY); }
+ case 9: /* block ::= LINE_HR */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_HR); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 12: /* block ::= list_bulleted */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_BULLETED); is_list_loose(yylhsminor.yy0); }
+ case 10: /* block ::= LINE_TOC */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TOC); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 13: /* block ::= list_enumerated */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ENUMERATED); is_list_loose(yylhsminor.yy0); }
+ case 11: /* block ::= blockquote */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_BLOCKQUOTE); recursive_parse_blockquote(engine, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 14: /* block ::= blockquote */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_BLOCKQUOTE); recursive_parse_blockquote(engine, yylhsminor.yy0); }
+ case 12: /* block ::= def_citation */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_CITATION); stack_push(engine->definition_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 15: /* block ::= table */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE); }
+ case 13: /* block ::= def_footnote */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 16: /* block ::= LINE_HR */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_HR); }
+ case 14: /* block ::= def_link */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_LINK); stack_push(engine->definition_stack, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 17: /* block ::= def_citation */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_CITATION); stack_push(engine->definition_stack, yylhsminor.yy0); }
+ case 15: /* block ::= definition_block */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFLIST); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 18: /* block ::= def_footnote */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, yylhsminor.yy0); }
+ case 16: /* block ::= empty */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_EMPTY); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 19: /* block ::= def_link */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEF_LINK); stack_push(engine->definition_stack, yylhsminor.yy0); }
+ case 17: /* block ::= fenced_block */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_FENCED); yymsp[0].minor.yy0->child->type = CODE_FENCE; }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 20: /* block ::= html_block */
+ case 18: /* block ::= html_block */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_HTML); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 21: /* block ::= fenced_block */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_FENCED); yymsp[0].minor.yy0->child->type = CODE_FENCE; }
+ case 19: /* block ::= indented_code */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_CODE_INDENTED); }
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
+ break;
+ case 20: /* block ::= list_bullet */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_BULLETED); is_list_loose(yylhsminor.yy0); }
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
+ break;
+ case 21: /* block ::= list_enum */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ENUMERATED); is_list_loose(yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
case 22: /* block ::= meta_block */
{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_META); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 23: /* block ::= LINE_TOC */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TOC); }
+ case 23: /* block ::= para */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_PARA); is_para_html(engine, yylhsminor.yy0); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 24: /* block ::= definition_block */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFLIST); }
+ case 24: /* block ::= table */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 25: /* para ::= LINE_PLAIN para_lines */
- case 26: /* para_lines ::= para_lines para_line */ yytestcase(yyruleno==26);
- case 27: /* indented_code ::= indented_code code_line */ yytestcase(yyruleno==27);
- case 28: /* empty ::= empty LINE_EMPTY */ yytestcase(yyruleno==28);
- case 29: /* blockquote ::= LINE_BLOCKQUOTE quote_lines */ yytestcase(yyruleno==29);
- case 30: /* quote_lines ::= quote_lines quote_line */ yytestcase(yyruleno==30);
- case 31: /* list_bulleted ::= list_bulleted item_bulleted */ yytestcase(yyruleno==31);
- case 36: /* list_enumerated ::= list_enumerated item_enumerated */ yytestcase(yyruleno==36);
- case 41: /* cont_blocks ::= cont_blocks cont_block */ yytestcase(yyruleno==41);
- case 47: /* all_rows ::= all_rows row */ yytestcase(yyruleno==47);
- case 48: /* table ::= table_header table_body */ yytestcase(yyruleno==48);
- case 49: /* table_body ::= table_body table_section */ yytestcase(yyruleno==49);
- case 50: /* header_rows ::= header_rows LINE_TABLE */ yytestcase(yyruleno==50);
- case 52: /* def_citation ::= LINE_DEF_CITATION para_lines */ yytestcase(yyruleno==52);
- case 53: /* def_citation ::= LINE_DEF_CITATION cont_blocks */ yytestcase(yyruleno==53);
- case 55: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines */ yytestcase(yyruleno==55);
- case 56: /* def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks */ yytestcase(yyruleno==56);
- case 57: /* def_link ::= LINE_DEF_LINK para_lines */ yytestcase(yyruleno==57);
- case 58: /* html_block ::= LINE_HTML html_block_lines */ yytestcase(yyruleno==58);
- case 59: /* html_block_lines ::= html_block_lines html_block_line */ yytestcase(yyruleno==59);
- case 61: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines */ yytestcase(yyruleno==61);
- case 63: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines */ yytestcase(yyruleno==63);
- case 64: /* fenced_lines ::= fenced_lines fenced_line */ yytestcase(yyruleno==64);
- case 65: /* meta_block ::= LINE_META meta_lines */ yytestcase(yyruleno==65);
- case 66: /* meta_lines ::= meta_lines meta_line */ yytestcase(yyruleno==66);
- case 68: /* defs ::= defs def */ yytestcase(yyruleno==68);
- case 71: /* def_lines ::= def_lines LINE_CONTINUATION */ yytestcase(yyruleno==71);
+ case 25: /* chunk ::= chunk chunk_line */
+ case 26: /* nested_chunks ::= nested_chunks nested_chunk */ yytestcase(yyruleno==26);
+ case 29: /* ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==29);
+ case 30: /* opt_ext_chunk ::= chunk nested_chunks */ yytestcase(yyruleno==30);
+ case 31: /* blockquote ::= blockquote quote_line */ yytestcase(yyruleno==31);
+ case 32: /* def_citation ::= LINE_DEF_CITATION tail */ yytestcase(yyruleno==32);
+ case 33: /* def_footnote ::= LINE_DEF_FOOTNOTE tail */ yytestcase(yyruleno==33);
+ case 34: /* def_link ::= LINE_DEF_LINK chunk */ yytestcase(yyruleno==34);
+ case 38: /* def ::= def LINE_CONTINUATION */ yytestcase(yyruleno==38);
+ case 39: /* empty ::= empty LINE_EMPTY */ yytestcase(yyruleno==39);
+ case 41: /* fenced ::= fenced fenced_line */ yytestcase(yyruleno==41);
+ case 42: /* html_block ::= html_block html_line */ yytestcase(yyruleno==42);
+ case 43: /* indented_code ::= indented_code indented_line */ yytestcase(yyruleno==43);
+ case 44: /* indented_code ::= indented_code LINE_EMPTY */ yytestcase(yyruleno==44);
+ case 45: /* list_bullet ::= list_bullet item_bullet */ yytestcase(yyruleno==45);
+ case 50: /* list_enum ::= list_enum item_enum */ yytestcase(yyruleno==50);
+ case 55: /* meta_block ::= meta_block meta_line */ yytestcase(yyruleno==55);
+ case 56: /* para ::= LINE_PLAIN chunk */ yytestcase(yyruleno==56);
+ case 57: /* table ::= table_header table_body */ yytestcase(yyruleno==57);
+ case 59: /* header_rows ::= header_rows LINE_TABLE */ yytestcase(yyruleno==59);
+ case 60: /* table_body ::= table_body table_section */ yytestcase(yyruleno==60);
+ case 63: /* all_rows ::= all_rows row */ yytestcase(yyruleno==63);
{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 32: /* item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks */
- case 37: /* item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks */ yytestcase(yyruleno==37);
-{ token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0 = token_new_parent(yymsp[-2].minor.yy0, BLOCK_LIST_ITEM); recursive_parse_list_item(engine, yylhsminor.yy0); }
+ case 27: /* nested_chunk ::= empty indented_line chunk */
+{ yylhsminor.yy0 = yymsp[-2].minor.yy0; token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = LINE_CONTINUATION; }
yymsp[-2].minor.yy0 = yylhsminor.yy0;
break;
- case 33: /* item_bulleted ::= LINE_LIST_BULLETED para_lines */
- case 38: /* item_enumerated ::= LINE_LIST_ENUMERATED para_lines */ yytestcase(yyruleno==38);
-{ token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM_TIGHT); recursive_parse_list_item(engine, yylhsminor.yy0); }
+ case 28: /* nested_chunk ::= empty indented_line */
+{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->type = LINE_CONTINUATION; }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 34: /* item_bulleted ::= LINE_LIST_BULLETED cont_blocks */
-{ token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM); if (yymsp[0].minor.yy0) {recursive_parse_list_item(engine, yylhsminor.yy0);} }
+ case 35: /* definition_block ::= para defs */
+{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = BLOCK_TERM; }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 35: /* item_bulleted ::= LINE_LIST_BULLETED */
- case 40: /* item_enumerated ::= LINE_LIST_ENUMERATED */ yytestcase(yyruleno==40);
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ITEM_TIGHT); }
- yymsp[0].minor.yy0 = yylhsminor.yy0;
- break;
- case 39: /* item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks */
-{ token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM); recursive_parse_list_item(engine, yylhsminor.yy0); }
+ case 36: /* defs ::= defs def */
+{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFINITION)); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 42: /* cont_block ::= empty indented_line para_lines */
-{ yylhsminor.yy0 = yymsp[-2].minor.yy0; token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = LINE_CONTINUATION; }
- yymsp[-2].minor.yy0 = yylhsminor.yy0;
+ case 37: /* defs ::= def */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFINITION); }
+ yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 43: /* cont_block ::= empty indented_line */
-{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->type = LINE_CONTINUATION; }
+ case 40: /* fenced_block ::= fenced LINE_FENCE_BACKTICK */
+{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->child->type = CODE_FENCE; }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 44: /* table_header ::= header_rows LINE_TABLE_SEPARATOR */
-{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_HEADER); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
+ case 46: /* item_bullet ::= LINE_LIST_BULLETED ext_chunk */
+ case 48: /* item_bullet ::= LINE_LIST_BULLETED nested_chunks */ yytestcase(yyruleno==48);
+ case 51: /* item_enum ::= LINE_LIST_ENUMERATED ext_chunk */ yytestcase(yyruleno==51);
+ case 53: /* item_enum ::= LINE_LIST_ENUMERATED nested_chunks */ yytestcase(yyruleno==53);
+{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); recursive_parse_list_item(engine, yylhsminor.yy0); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 45: /* table_section ::= all_rows LINE_EMPTY */
-{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_SECTION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
+ case 47: /* item_bullet ::= LINE_LIST_BULLETED chunk */
+ case 52: /* item_enum ::= LINE_LIST_ENUMERATED chunk */ yytestcase(yyruleno==52);
+{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_LIST_ITEM_TIGHT); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); recursive_parse_list_item(engine, yylhsminor.yy0); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 46: /* table_section ::= all_rows */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE_SECTION); }
+ case 49: /* item_bullet ::= LINE_LIST_BULLETED */
+ case 54: /* item_enum ::= LINE_LIST_ENUMERATED */ yytestcase(yyruleno==54);
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_LIST_ITEM_TIGHT); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 51: /* def_citation ::= LINE_DEF_CITATION para_lines cont_blocks */
- case 54: /* def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks */ yytestcase(yyruleno==54);
-{ yylhsminor.yy0 = yymsp[-2].minor.yy0; token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); }
- yymsp[-2].minor.yy0 = yylhsminor.yy0;
- break;
- case 60: /* fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK */
- case 62: /* fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK */ yytestcase(yyruleno==62);
-{ yylhsminor.yy0 = yymsp[-2].minor.yy0; token_chain_append(yymsp[-2].minor.yy0, yymsp[-1].minor.yy0); token_chain_append(yymsp[-2].minor.yy0, yymsp[0].minor.yy0); yymsp[0].minor.yy0->child->type = CODE_FENCE; }
- yymsp[-2].minor.yy0 = yylhsminor.yy0;
- break;
- case 67: /* definition_block ::= para defs */
-{ yylhsminor.yy0 = yymsp[-1].minor.yy0; token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); yymsp[-1].minor.yy0->type = BLOCK_TERM; }
+ case 58: /* table_header ::= header_rows LINE_TABLE_SEPARATOR */
+{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_HEADER); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 69: /* def ::= LINE_DEFINITION def_lines */
-{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_DEFINITION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
+ case 61: /* table_section ::= all_rows LINE_EMPTY */
+{ yylhsminor.yy0 = token_new_parent(yymsp[-1].minor.yy0, BLOCK_TABLE_SECTION); token_chain_append(yymsp[-1].minor.yy0, yymsp[0].minor.yy0); }
yymsp[-1].minor.yy0 = yylhsminor.yy0;
break;
- case 70: /* def ::= LINE_DEFINITION */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_DEFINITION); }
+ case 62: /* table_section ::= all_rows */
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_TABLE_SECTION); }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
- case 72: /* para ::= all_rows */
+ case 64: /* para ::= all_rows */
{ yylhsminor.yy0 = yymsp[0].minor.yy0; }
yymsp[0].minor.yy0 = yylhsminor.yy0;
break;
default:
- /* (73) para ::= LINE_PLAIN */ yytestcase(yyruleno==73);
- /* (74) para_lines ::= para_line (OPTIMIZED OUT) */ assert(yyruleno!=74);
- /* (75) para_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==75);
- /* (76) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=76);
- /* (77) code_line ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=77);
- /* (78) code_line ::= LINE_EMPTY */ yytestcase(yyruleno==78);
- /* (79) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==79);
- /* (80) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==80);
+ /* (65) chunk ::= chunk_line (OPTIMIZED OUT) */ assert(yyruleno!=65);
+ /* (66) chunk_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==66);
+ /* (67) nested_chunks ::= nested_chunk (OPTIMIZED OUT) */ assert(yyruleno!=67);
+ /* (68) nested_chunk ::= empty */ yytestcase(yyruleno==68);
+ /* (69) indented_line ::= LINE_INDENTED_TAB */ yytestcase(yyruleno==69);
+ /* (70) indented_line ::= LINE_INDENTED_SPACE */ yytestcase(yyruleno==70);
+ /* (71) opt_ext_chunk ::= chunk */ yytestcase(yyruleno==71);
+ /* (72) tail ::= opt_ext_chunk (OPTIMIZED OUT) */ assert(yyruleno!=72);
+ /* (73) tail ::= nested_chunks */ yytestcase(yyruleno==73);
+ /* (74) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==74);
+ /* (75) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==75);
+ /* (76) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==76);
+ /* (77) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==77);
+ /* (78) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==78);
+ /* (79) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==79);
+ /* (80) def ::= LINE_DEFINITION */ yytestcase(yyruleno==80);
/* (81) empty ::= LINE_EMPTY */ yytestcase(yyruleno==81);
- /* (82) blockquote ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==82);
- /* (83) quote_lines ::= quote_line (OPTIMIZED OUT) */ assert(yyruleno!=83);
- /* (84) quote_line ::= LINE_BLOCKQUOTE */ yytestcase(yyruleno==84);
- /* (85) quote_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==85);
- /* (86) list_bulleted ::= item_bulleted (OPTIMIZED OUT) */ assert(yyruleno!=86);
- /* (87) list_enumerated ::= item_enumerated (OPTIMIZED OUT) */ assert(yyruleno!=87);
- /* (88) cont_blocks ::= cont_block (OPTIMIZED OUT) */ assert(yyruleno!=88);
- /* (89) cont_block ::= empty */ yytestcase(yyruleno==89);
- /* (90) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=90);
- /* (91) row ::= header_rows */ yytestcase(yyruleno==91);
- /* (92) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==92);
- /* (93) table ::= table_header */ yytestcase(yyruleno==93);
- /* (94) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=94);
- /* (95) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==95);
- /* (96) def_citation ::= LINE_DEF_CITATION */ yytestcase(yyruleno==96);
- /* (97) def_footnote ::= LINE_DEF_FOOTNOTE */ yytestcase(yyruleno==97);
- /* (98) def_link ::= LINE_DEF_LINK */ yytestcase(yyruleno==98);
- /* (99) html_block ::= LINE_HTML */ yytestcase(yyruleno==99);
- /* (100) html_block_lines ::= html_block_line (OPTIMIZED OUT) */ assert(yyruleno!=100);
- /* (101) html_block_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==101);
- /* (102) html_block_line ::= LINE_HTML */ yytestcase(yyruleno==102);
- /* (103) fenced_lines ::= fenced_line (OPTIMIZED OUT) */ assert(yyruleno!=103);
- /* (104) fenced_lines ::= */ yytestcase(yyruleno==104);
- /* (105) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==105);
- /* (106) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==106);
- /* (107) meta_block ::= LINE_META */ yytestcase(yyruleno==107);
- /* (108) meta_lines ::= meta_line (OPTIMIZED OUT) */ assert(yyruleno!=108);
- /* (109) meta_line ::= LINE_META */ yytestcase(yyruleno==109);
- /* (110) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==110);
- /* (111) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=111);
- /* (112) def_lines ::= LINE_CONTINUATION */ yytestcase(yyruleno==112);
- /* (113) para ::= defs */ yytestcase(yyruleno==113);
+ /* (82) fenced_block ::= fenced */ yytestcase(yyruleno==82);
+ /* (83) fenced ::= LINE_FENCE_BACKTICK */ yytestcase(yyruleno==83);
+ /* (84) fenced ::= LINE_FENCE_BACKTICK_START */ yytestcase(yyruleno==84);
+ /* (85) fenced_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==85);
+ /* (86) fenced_line ::= LINE_EMPTY */ yytestcase(yyruleno==86);
+ /* (87) html_block ::= LINE_HTML */ yytestcase(yyruleno==87);
+ /* (88) html_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==88);
+ /* (89) html_line ::= LINE_HTML */ yytestcase(yyruleno==89);
+ /* (90) indented_code ::= indented_line (OPTIMIZED OUT) */ assert(yyruleno!=90);
+ /* (91) list_bullet ::= item_bullet (OPTIMIZED OUT) */ assert(yyruleno!=91);
+ /* (92) list_enum ::= item_enum (OPTIMIZED OUT) */ assert(yyruleno!=92);
+ /* (93) meta_block ::= LINE_META */ yytestcase(yyruleno==93);
+ /* (94) meta_line ::= LINE_META */ yytestcase(yyruleno==94);
+ /* (95) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==95);
+ /* (96) para ::= LINE_PLAIN */ yytestcase(yyruleno==96);
+ /* (97) table ::= table_header */ yytestcase(yyruleno==97);
+ /* (98) header_rows ::= LINE_TABLE */ yytestcase(yyruleno==98);
+ /* (99) table_body ::= table_section (OPTIMIZED OUT) */ assert(yyruleno!=99);
+ /* (100) all_rows ::= row (OPTIMIZED OUT) */ assert(yyruleno!=100);
+ /* (101) row ::= header_rows */ yytestcase(yyruleno==101);
+ /* (102) row ::= LINE_TABLE_SEPARATOR */ yytestcase(yyruleno==102);
+ /* (103) para ::= defs */ yytestcase(yyruleno==103);
break;
/********** End reduce actions ************************************************/
};
#define LINE_FENCE_BACKTICK 21
#define LINE_FENCE_BACKTICK_START 22
#define LINE_TOC 23
-#define LINE_EMPTY 24
-#define LINE_META 25
-#define LINE_DEFINITION 26
+#define LINE_DEFINITION 24
+#define LINE_EMPTY 25
+#define LINE_META 26
doc ::= * blocks
blocks ::= * blocks block
blocks ::= * block
- block ::= * para
- block ::= * indented_code
block ::= * LINE_ATX_1
block ::= * LINE_ATX_2
block ::= * LINE_ATX_3
block ::= * LINE_ATX_4
block ::= * LINE_ATX_5
block ::= * LINE_ATX_6
- block ::= * empty
- block ::= * list_bulleted
- block ::= * list_enumerated
- block ::= * blockquote
- block ::= * table
block ::= * LINE_HR
+ block ::= * LINE_TOC
+ block ::= * blockquote
block ::= * def_citation
block ::= * def_footnote
block ::= * def_link
- block ::= * html_block
+ block ::= * definition_block
+ block ::= * empty
block ::= * fenced_block
+ block ::= * html_block
+ block ::= * indented_code
+ block ::= * list_bullet
+ block ::= * list_enum
block ::= * meta_block
- block ::= * LINE_TOC
- block ::= * definition_block
- para ::= * LINE_PLAIN para_lines
- para ::= * LINE_PLAIN
- indented_code ::= * indented_code code_line
- indented_code ::= * indented_line
+ block ::= * para
+ block ::= * table
indented_line ::= * LINE_INDENTED_TAB
indented_line ::= * LINE_INDENTED_SPACE
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- blockquote ::= * LINE_BLOCKQUOTE quote_lines
+ blockquote ::= * blockquote quote_line
blockquote ::= * LINE_BLOCKQUOTE
- list_bulleted ::= * list_bulleted item_bulleted
- list_bulleted ::= * item_bulleted
- item_bulleted ::= * LINE_LIST_BULLETED para_lines cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED para_lines
- item_bulleted ::= * LINE_LIST_BULLETED cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED
- list_enumerated ::= * list_enumerated item_enumerated
- list_enumerated ::= * item_enumerated
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines
- item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED
- table_header ::= * header_rows LINE_TABLE_SEPARATOR
- all_rows ::= * all_rows row
- all_rows ::= * row
- row ::= * header_rows
- row ::= * LINE_TABLE_SEPARATOR
- table ::= * table_header table_body
- table ::= * table_header
- header_rows ::= * header_rows LINE_TABLE
- header_rows ::= * LINE_TABLE
- def_citation ::= * LINE_DEF_CITATION para_lines cont_blocks
- def_citation ::= * LINE_DEF_CITATION para_lines
- def_citation ::= * LINE_DEF_CITATION cont_blocks
+ def_citation ::= * LINE_DEF_CITATION tail
def_citation ::= * LINE_DEF_CITATION
- def_footnote ::= * LINE_DEF_FOOTNOTE para_lines cont_blocks
- def_footnote ::= * LINE_DEF_FOOTNOTE para_lines
- def_footnote ::= * LINE_DEF_FOOTNOTE cont_blocks
+ def_footnote ::= * LINE_DEF_FOOTNOTE tail
def_footnote ::= * LINE_DEF_FOOTNOTE
- def_link ::= * LINE_DEF_LINK para_lines
+ def_link ::= * LINE_DEF_LINK chunk
def_link ::= * LINE_DEF_LINK
- html_block ::= * LINE_HTML html_block_lines
- html_block ::= * LINE_HTML
- fenced_block ::= * LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= * LINE_FENCE_BACKTICK fenced_lines
- fenced_block ::= * LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= * LINE_FENCE_BACKTICK_START fenced_lines
- meta_block ::= * LINE_META meta_lines
- meta_block ::= * LINE_META
definition_block ::= * para defs
defs ::= * defs def
defs ::= * def
- def ::= * LINE_DEFINITION def_lines
+ def ::= * def LINE_CONTINUATION
def ::= * LINE_DEFINITION
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
+ fenced_block ::= * fenced LINE_FENCE_BACKTICK
+ fenced_block ::= * fenced
+ fenced ::= * fenced fenced_line
+ fenced ::= * LINE_FENCE_BACKTICK
+ fenced ::= * LINE_FENCE_BACKTICK_START
+ html_block ::= * html_block html_line
+ html_block ::= * LINE_HTML
+ indented_code ::= * indented_code indented_line
+ indented_code ::= * indented_code LINE_EMPTY
+ indented_code ::= * indented_line
+ list_bullet ::= * list_bullet item_bullet
+ list_bullet ::= * item_bullet
+ item_bullet ::= * LINE_LIST_BULLETED ext_chunk
+ item_bullet ::= * LINE_LIST_BULLETED chunk
+ item_bullet ::= * LINE_LIST_BULLETED nested_chunks
+ item_bullet ::= * LINE_LIST_BULLETED
+ list_enum ::= * list_enum item_enum
+ list_enum ::= * item_enum
+ item_enum ::= * LINE_LIST_ENUMERATED ext_chunk
+ item_enum ::= * LINE_LIST_ENUMERATED chunk
+ item_enum ::= * LINE_LIST_ENUMERATED nested_chunks
+ item_enum ::= * LINE_LIST_ENUMERATED
+ meta_block ::= * meta_block meta_line
+ meta_block ::= * LINE_META
+ para ::= * LINE_PLAIN chunk
+ para ::= * LINE_PLAIN
+ table ::= * table_header table_body
+ table ::= * table_header
+ table_header ::= * header_rows LINE_TABLE_SEPARATOR
+ header_rows ::= * header_rows LINE_TABLE
+ header_rows ::= * LINE_TABLE
+ all_rows ::= * all_rows row
+ all_rows ::= * row
+ row ::= * header_rows
+ row ::= * LINE_TABLE_SEPARATOR
para ::= * all_rows
para ::= * defs
- LINE_PLAIN shift 25
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB
- LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_HTML shift 17
- LINE_ATX_1 shift-reduce 5 block ::= LINE_ATX_1
- LINE_ATX_2 shift-reduce 6 block ::= LINE_ATX_2
- LINE_ATX_3 shift-reduce 7 block ::= LINE_ATX_3
- LINE_ATX_4 shift-reduce 8 block ::= LINE_ATX_4
- LINE_ATX_5 shift-reduce 9 block ::= LINE_ATX_5
- LINE_ATX_6 shift-reduce 10 block ::= LINE_ATX_6
- LINE_HR shift-reduce 16 block ::= LINE_HR
- LINE_BLOCKQUOTE shift 19
- LINE_LIST_BULLETED shift 6
- LINE_LIST_ENUMERATED shift 5
+ LINE_PLAIN shift 13
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_INDENTED_TAB shift-reduce 69 indented_line ::= LINE_INDENTED_TAB
+ LINE_INDENTED_SPACE shift-reduce 70 indented_line ::= LINE_INDENTED_SPACE
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_HTML shift-reduce 87 html_block ::= LINE_HTML
+ LINE_ATX_1 shift-reduce 3 block ::= LINE_ATX_1
+ LINE_ATX_2 shift-reduce 4 block ::= LINE_ATX_2
+ LINE_ATX_3 shift-reduce 5 block ::= LINE_ATX_3
+ LINE_ATX_4 shift-reduce 6 block ::= LINE_ATX_4
+ LINE_ATX_5 shift-reduce 7 block ::= LINE_ATX_5
+ LINE_ATX_6 shift-reduce 8 block ::= LINE_ATX_6
+ LINE_HR shift-reduce 9 block ::= LINE_HR
+ LINE_BLOCKQUOTE shift-reduce 74 blockquote ::= LINE_BLOCKQUOTE
+ LINE_LIST_BULLETED shift 5
+ LINE_LIST_ENUMERATED shift 4
LINE_DEF_CITATION shift 3
LINE_DEF_FOOTNOTE shift 2
- LINE_DEF_LINK shift 20
- LINE_FENCE_BACKTICK shift 16
- LINE_FENCE_BACKTICK_START shift 15
- LINE_TOC shift-reduce 23 block ::= LINE_TOC
+ LINE_DEF_LINK shift 14
+ LINE_FENCE_BACKTICK shift-reduce 83 fenced ::= LINE_FENCE_BACKTICK
+ LINE_FENCE_BACKTICK_START shift-reduce 84 fenced ::= LINE_FENCE_BACKTICK_START
+ LINE_TOC shift-reduce 10 block ::= LINE_TOC
+ LINE_DEFINITION shift-reduce 80 def ::= LINE_DEFINITION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_META shift 14
- LINE_DEFINITION shift 44
+ LINE_META shift-reduce 93 meta_block ::= LINE_META
doc accept
blocks shift 1
block shift-reduce 2 blocks ::= block
- para shift 31
- indented_code shift 13
- empty shift 48
- list_bulleted shift 43
- list_enumerated shift 41
- blockquote shift-reduce 14 block ::= blockquote
- table shift-reduce 15 block ::= table
- def_citation shift-reduce 17 block ::= def_citation
- def_footnote shift-reduce 18 block ::= def_footnote
- def_link shift-reduce 19 block ::= def_link
- html_block shift-reduce 20 block ::= html_block
- fenced_block shift-reduce 21 block ::= fenced_block
- meta_block shift-reduce 22 block ::= meta_block
- definition_block shift-reduce 24 block ::= definition_block
- indented_line shift 13 /* because indented_line==indented_code */
- item_bulleted shift 43 /* because item_bulleted==list_bulleted */
- item_enumerated shift 41 /* because item_enumerated==list_enumerated */
- table_header shift 4
- header_rows shift 46
- all_rows shift 18
- row shift 18 /* because row==all_rows */
- defs shift 38
- def shift 38 /* because def==defs */
+ blockquote shift 27
+ def_citation shift-reduce 12 block ::= def_citation
+ def_footnote shift-reduce 13 block ::= def_footnote
+ def_link shift-reduce 14 block ::= def_link
+ definition_block shift-reduce 15 block ::= definition_block
+ empty shift 39
+ fenced_block shift-reduce 17 block ::= fenced_block
+ html_block shift 26
+ indented_code shift 24
+ list_bullet shift 34
+ list_enum shift 32
+ meta_block shift 25
+ para shift 17
+ table shift-reduce 24 block ::= table
+ indented_line shift 24 /* because indented_line==indented_code */
+ defs shift 29
+ def shift 37
+ fenced shift 22
+ item_bullet shift 34 /* because item_bullet==list_bullet */
+ item_enum shift 32 /* because item_enum==list_enum */
+ table_header shift 6
+ header_rows shift 35
+ all_rows shift 12
+ row shift 12 /* because row==all_rows */
State 1:
(0) doc ::= blocks *
blocks ::= blocks * block
- block ::= * para
- block ::= * indented_code
block ::= * LINE_ATX_1
block ::= * LINE_ATX_2
block ::= * LINE_ATX_3
block ::= * LINE_ATX_4
block ::= * LINE_ATX_5
block ::= * LINE_ATX_6
- block ::= * empty
- block ::= * list_bulleted
- block ::= * list_enumerated
- block ::= * blockquote
- block ::= * table
block ::= * LINE_HR
+ block ::= * LINE_TOC
+ block ::= * blockquote
block ::= * def_citation
block ::= * def_footnote
block ::= * def_link
- block ::= * html_block
+ block ::= * definition_block
+ block ::= * empty
block ::= * fenced_block
+ block ::= * html_block
+ block ::= * indented_code
+ block ::= * list_bullet
+ block ::= * list_enum
block ::= * meta_block
- block ::= * LINE_TOC
- block ::= * definition_block
- para ::= * LINE_PLAIN para_lines
- para ::= * LINE_PLAIN
- indented_code ::= * indented_code code_line
- indented_code ::= * indented_line
+ block ::= * para
+ block ::= * table
indented_line ::= * LINE_INDENTED_TAB
indented_line ::= * LINE_INDENTED_SPACE
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- blockquote ::= * LINE_BLOCKQUOTE quote_lines
+ blockquote ::= * blockquote quote_line
blockquote ::= * LINE_BLOCKQUOTE
- list_bulleted ::= * list_bulleted item_bulleted
- list_bulleted ::= * item_bulleted
- item_bulleted ::= * LINE_LIST_BULLETED para_lines cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED para_lines
- item_bulleted ::= * LINE_LIST_BULLETED cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED
- list_enumerated ::= * list_enumerated item_enumerated
- list_enumerated ::= * item_enumerated
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines
- item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED
- table_header ::= * header_rows LINE_TABLE_SEPARATOR
- all_rows ::= * all_rows row
- all_rows ::= * row
- row ::= * header_rows
- row ::= * LINE_TABLE_SEPARATOR
- table ::= * table_header table_body
- table ::= * table_header
- header_rows ::= * header_rows LINE_TABLE
- header_rows ::= * LINE_TABLE
- def_citation ::= * LINE_DEF_CITATION para_lines cont_blocks
- def_citation ::= * LINE_DEF_CITATION para_lines
- def_citation ::= * LINE_DEF_CITATION cont_blocks
+ def_citation ::= * LINE_DEF_CITATION tail
def_citation ::= * LINE_DEF_CITATION
- def_footnote ::= * LINE_DEF_FOOTNOTE para_lines cont_blocks
- def_footnote ::= * LINE_DEF_FOOTNOTE para_lines
- def_footnote ::= * LINE_DEF_FOOTNOTE cont_blocks
+ def_footnote ::= * LINE_DEF_FOOTNOTE tail
def_footnote ::= * LINE_DEF_FOOTNOTE
- def_link ::= * LINE_DEF_LINK para_lines
+ def_link ::= * LINE_DEF_LINK chunk
def_link ::= * LINE_DEF_LINK
- html_block ::= * LINE_HTML html_block_lines
- html_block ::= * LINE_HTML
- fenced_block ::= * LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= * LINE_FENCE_BACKTICK fenced_lines
- fenced_block ::= * LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= * LINE_FENCE_BACKTICK_START fenced_lines
- meta_block ::= * LINE_META meta_lines
- meta_block ::= * LINE_META
definition_block ::= * para defs
defs ::= * defs def
defs ::= * def
- def ::= * LINE_DEFINITION def_lines
+ def ::= * def LINE_CONTINUATION
def ::= * LINE_DEFINITION
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
+ fenced_block ::= * fenced LINE_FENCE_BACKTICK
+ fenced_block ::= * fenced
+ fenced ::= * fenced fenced_line
+ fenced ::= * LINE_FENCE_BACKTICK
+ fenced ::= * LINE_FENCE_BACKTICK_START
+ html_block ::= * html_block html_line
+ html_block ::= * LINE_HTML
+ indented_code ::= * indented_code indented_line
+ indented_code ::= * indented_code LINE_EMPTY
+ indented_code ::= * indented_line
+ list_bullet ::= * list_bullet item_bullet
+ list_bullet ::= * item_bullet
+ item_bullet ::= * LINE_LIST_BULLETED ext_chunk
+ item_bullet ::= * LINE_LIST_BULLETED chunk
+ item_bullet ::= * LINE_LIST_BULLETED nested_chunks
+ item_bullet ::= * LINE_LIST_BULLETED
+ list_enum ::= * list_enum item_enum
+ list_enum ::= * item_enum
+ item_enum ::= * LINE_LIST_ENUMERATED ext_chunk
+ item_enum ::= * LINE_LIST_ENUMERATED chunk
+ item_enum ::= * LINE_LIST_ENUMERATED nested_chunks
+ item_enum ::= * LINE_LIST_ENUMERATED
+ meta_block ::= * meta_block meta_line
+ meta_block ::= * LINE_META
+ para ::= * LINE_PLAIN chunk
+ para ::= * LINE_PLAIN
+ table ::= * table_header table_body
+ table ::= * table_header
+ table_header ::= * header_rows LINE_TABLE_SEPARATOR
+ header_rows ::= * header_rows LINE_TABLE
+ header_rows ::= * LINE_TABLE
+ all_rows ::= * all_rows row
+ all_rows ::= * row
+ row ::= * header_rows
+ row ::= * LINE_TABLE_SEPARATOR
para ::= * all_rows
para ::= * defs
$ reduce 0 doc ::= blocks
- LINE_PLAIN shift 25
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB
- LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_HTML shift 17
- LINE_ATX_1 shift-reduce 5 block ::= LINE_ATX_1
- LINE_ATX_2 shift-reduce 6 block ::= LINE_ATX_2
- LINE_ATX_3 shift-reduce 7 block ::= LINE_ATX_3
- LINE_ATX_4 shift-reduce 8 block ::= LINE_ATX_4
- LINE_ATX_5 shift-reduce 9 block ::= LINE_ATX_5
- LINE_ATX_6 shift-reduce 10 block ::= LINE_ATX_6
- LINE_HR shift-reduce 16 block ::= LINE_HR
- LINE_BLOCKQUOTE shift 19
- LINE_LIST_BULLETED shift 6
- LINE_LIST_ENUMERATED shift 5
+ LINE_PLAIN shift 13
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_INDENTED_TAB shift-reduce 69 indented_line ::= LINE_INDENTED_TAB
+ LINE_INDENTED_SPACE shift-reduce 70 indented_line ::= LINE_INDENTED_SPACE
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_HTML shift-reduce 87 html_block ::= LINE_HTML
+ LINE_ATX_1 shift-reduce 3 block ::= LINE_ATX_1
+ LINE_ATX_2 shift-reduce 4 block ::= LINE_ATX_2
+ LINE_ATX_3 shift-reduce 5 block ::= LINE_ATX_3
+ LINE_ATX_4 shift-reduce 6 block ::= LINE_ATX_4
+ LINE_ATX_5 shift-reduce 7 block ::= LINE_ATX_5
+ LINE_ATX_6 shift-reduce 8 block ::= LINE_ATX_6
+ LINE_HR shift-reduce 9 block ::= LINE_HR
+ LINE_BLOCKQUOTE shift-reduce 74 blockquote ::= LINE_BLOCKQUOTE
+ LINE_LIST_BULLETED shift 5
+ LINE_LIST_ENUMERATED shift 4
LINE_DEF_CITATION shift 3
LINE_DEF_FOOTNOTE shift 2
- LINE_DEF_LINK shift 20
- LINE_FENCE_BACKTICK shift 16
- LINE_FENCE_BACKTICK_START shift 15
- LINE_TOC shift-reduce 23 block ::= LINE_TOC
+ LINE_DEF_LINK shift 14
+ LINE_FENCE_BACKTICK shift-reduce 83 fenced ::= LINE_FENCE_BACKTICK
+ LINE_FENCE_BACKTICK_START shift-reduce 84 fenced ::= LINE_FENCE_BACKTICK_START
+ LINE_TOC shift-reduce 10 block ::= LINE_TOC
+ LINE_DEFINITION shift-reduce 80 def ::= LINE_DEFINITION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_META shift 14
- LINE_DEFINITION shift 44
+ LINE_META shift-reduce 93 meta_block ::= LINE_META
block shift-reduce 1 blocks ::= blocks block
- para shift 31
- indented_code shift 13
- empty shift 48
- list_bulleted shift 43
- list_enumerated shift 41
- blockquote shift-reduce 14 block ::= blockquote
- table shift-reduce 15 block ::= table
- def_citation shift-reduce 17 block ::= def_citation
- def_footnote shift-reduce 18 block ::= def_footnote
- def_link shift-reduce 19 block ::= def_link
- html_block shift-reduce 20 block ::= html_block
- fenced_block shift-reduce 21 block ::= fenced_block
- meta_block shift-reduce 22 block ::= meta_block
- definition_block shift-reduce 24 block ::= definition_block
- indented_line shift 13 /* because indented_line==indented_code */
- item_bulleted shift 43 /* because item_bulleted==list_bulleted */
- item_enumerated shift 41 /* because item_enumerated==list_enumerated */
- table_header shift 4
- header_rows shift 46
- all_rows shift 18
- row shift 18 /* because row==all_rows */
- defs shift 38
- def shift 38 /* because def==defs */
+ blockquote shift 27
+ def_citation shift-reduce 12 block ::= def_citation
+ def_footnote shift-reduce 13 block ::= def_footnote
+ def_link shift-reduce 14 block ::= def_link
+ definition_block shift-reduce 15 block ::= definition_block
+ empty shift 39
+ fenced_block shift-reduce 17 block ::= fenced_block
+ html_block shift 26
+ indented_code shift 24
+ list_bullet shift 34
+ list_enum shift 32
+ meta_block shift 25
+ para shift 17
+ table shift-reduce 24 block ::= table
+ indented_line shift 24 /* because indented_line==indented_code */
+ defs shift 29
+ def shift 37
+ fenced shift 22
+ item_bullet shift 34 /* because item_bullet==list_bullet */
+ item_enum shift 32 /* because item_enum==list_enum */
+ table_header shift 6
+ header_rows shift 35
+ all_rows shift 12
+ row shift 12 /* because row==all_rows */
State 2:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ opt_ext_chunk ::= * chunk nested_chunks
+ opt_ext_chunk ::= * chunk
+ tail ::= * opt_ext_chunk
+ tail ::= * nested_chunks
+ def_footnote ::= LINE_DEF_FOOTNOTE * tail
+ (78) def_footnote ::= LINE_DEF_FOOTNOTE *
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- def_footnote ::= LINE_DEF_FOOTNOTE * para_lines cont_blocks
- def_footnote ::= LINE_DEF_FOOTNOTE * para_lines
- def_footnote ::= LINE_DEF_FOOTNOTE * cont_blocks
- (97) def_footnote ::= LINE_DEF_FOOTNOTE *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 97 ** Parsing conflict **
- empty shift 34
- para_lines shift 7
- para_line shift 7 /* because para_line==para_lines */
- cont_blocks shift 21
- cont_block shift 21 /* because cont_block==cont_blocks */
- {default} reduce 97 def_footnote ::= LINE_DEF_FOOTNOTE
+ LINE_EMPTY reduce 78 ** Parsing conflict **
+ empty shift 23
+ chunk shift 8
+ chunk_line shift 8 /* because chunk_line==chunk */
+ nested_chunks shift 15
+ nested_chunk shift 15 /* because nested_chunk==nested_chunks */
+ opt_ext_chunk shift-reduce 33 def_footnote ::= LINE_DEF_FOOTNOTE tail /* because opt_ext_chunk==tail */
+ tail shift-reduce 33 def_footnote ::= LINE_DEF_FOOTNOTE tail
+ {default} reduce 78 def_footnote ::= LINE_DEF_FOOTNOTE
State 3:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ opt_ext_chunk ::= * chunk nested_chunks
+ opt_ext_chunk ::= * chunk
+ tail ::= * opt_ext_chunk
+ tail ::= * nested_chunks
+ def_citation ::= LINE_DEF_CITATION * tail
+ (77) def_citation ::= LINE_DEF_CITATION *
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- def_citation ::= LINE_DEF_CITATION * para_lines cont_blocks
- def_citation ::= LINE_DEF_CITATION * para_lines
- def_citation ::= LINE_DEF_CITATION * cont_blocks
- (96) def_citation ::= LINE_DEF_CITATION *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 96 ** Parsing conflict **
- empty shift 34
- para_lines shift 8
- para_line shift 8 /* because para_line==para_lines */
- cont_blocks shift 23
- cont_block shift 23 /* because cont_block==cont_blocks */
- {default} reduce 96 def_citation ::= LINE_DEF_CITATION
+ LINE_EMPTY reduce 77 ** Parsing conflict **
+ empty shift 23
+ chunk shift 8
+ chunk_line shift 8 /* because chunk_line==chunk */
+ nested_chunks shift 15
+ nested_chunk shift 15 /* because nested_chunk==nested_chunks */
+ opt_ext_chunk shift-reduce 32 def_citation ::= LINE_DEF_CITATION tail /* because opt_ext_chunk==tail */
+ tail shift-reduce 32 def_citation ::= LINE_DEF_CITATION tail
+ {default} reduce 77 def_citation ::= LINE_DEF_CITATION
State 4:
- table_section ::= * all_rows LINE_EMPTY
- table_section ::= * all_rows
- all_rows ::= * all_rows row
- all_rows ::= * row
- row ::= * header_rows
- row ::= * LINE_TABLE_SEPARATOR
- table ::= table_header * table_body
- (93) table ::= table_header *
- table_body ::= * table_body table_section
- table_body ::= * table_section
- header_rows ::= * header_rows LINE_TABLE
- header_rows ::= * LINE_TABLE
-
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR reduce 93 ** Parsing conflict **
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_TABLE reduce 93 ** Parsing conflict **
- header_rows shift 47
- table_section shift 9 /* because table_section==table_body */
- all_rows shift 12
- row shift 12 /* because row==all_rows */
- table_body shift 9
- {default} reduce 93 table ::= table_header
-
-State 5:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ ext_chunk ::= * chunk nested_chunks
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- item_enumerated ::= LINE_LIST_ENUMERATED * para_lines cont_blocks
- item_enumerated ::= LINE_LIST_ENUMERATED * para_lines
- item_enumerated ::= LINE_LIST_ENUMERATED * cont_blocks
- (40) item_enumerated ::= LINE_LIST_ENUMERATED *
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 40 ** Parsing conflict **
- empty shift 34
- para_lines shift 10
- para_line shift 10 /* because para_line==para_lines */
- cont_blocks shift 26
- cont_block shift 26 /* because cont_block==cont_blocks */
- {default} reduce 40 item_enumerated ::= LINE_LIST_ENUMERATED
+ item_enum ::= LINE_LIST_ENUMERATED * ext_chunk
+ item_enum ::= LINE_LIST_ENUMERATED * chunk
+ item_enum ::= LINE_LIST_ENUMERATED * nested_chunks
+ (54) item_enum ::= LINE_LIST_ENUMERATED *
-State 6:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- item_bulleted ::= LINE_LIST_BULLETED * para_lines cont_blocks
- item_bulleted ::= LINE_LIST_BULLETED * para_lines
- item_bulleted ::= LINE_LIST_BULLETED * cont_blocks
- (35) item_bulleted ::= LINE_LIST_BULLETED *
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 35 ** Parsing conflict **
- empty shift 34
- para_lines shift 11
- para_line shift 11 /* because para_line==para_lines */
- cont_blocks shift 28
- cont_block shift 28 /* because cont_block==cont_blocks */
- {default} reduce 35 item_bulleted ::= LINE_LIST_BULLETED
+ LINE_EMPTY reduce 54 ** Parsing conflict **
+ empty shift 23
+ chunk shift 9
+ chunk_line shift 9 /* because chunk_line==chunk */
+ nested_chunks shift 18
+ nested_chunk shift 18 /* because nested_chunk==nested_chunks */
+ ext_chunk shift-reduce 51 item_enum ::= LINE_LIST_ENUMERATED ext_chunk
+ {default} reduce 54 item_enum ::= LINE_LIST_ENUMERATED
-State 7:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
+State 5:
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ ext_chunk ::= * chunk nested_chunks
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- def_footnote ::= LINE_DEF_FOOTNOTE para_lines * cont_blocks
- (55) def_footnote ::= LINE_DEF_FOOTNOTE para_lines *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 55 ** Parsing conflict **
- empty shift 34
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- cont_blocks shift 22
- cont_block shift 22 /* because cont_block==cont_blocks */
- {default} reduce 55 def_footnote ::= LINE_DEF_FOOTNOTE para_lines
+ item_bullet ::= LINE_LIST_BULLETED * ext_chunk
+ item_bullet ::= LINE_LIST_BULLETED * chunk
+ item_bullet ::= LINE_LIST_BULLETED * nested_chunks
+ (49) item_bullet ::= LINE_LIST_BULLETED *
-State 8:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- def_citation ::= LINE_DEF_CITATION para_lines * cont_blocks
- (52) def_citation ::= LINE_DEF_CITATION para_lines *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 52 ** Parsing conflict **
- empty shift 34
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- cont_blocks shift 24
- cont_block shift 24 /* because cont_block==cont_blocks */
- {default} reduce 52 def_citation ::= LINE_DEF_CITATION para_lines
+ LINE_EMPTY reduce 49 ** Parsing conflict **
+ empty shift 23
+ chunk shift 10
+ chunk_line shift 10 /* because chunk_line==chunk */
+ nested_chunks shift 19
+ nested_chunk shift 19 /* because nested_chunk==nested_chunks */
+ ext_chunk shift-reduce 46 item_bullet ::= LINE_LIST_BULLETED ext_chunk
+ {default} reduce 49 item_bullet ::= LINE_LIST_BULLETED
-State 9:
+State 6:
+ table ::= table_header * table_body
+ (97) table ::= table_header *
+ header_rows ::= * header_rows LINE_TABLE
+ header_rows ::= * LINE_TABLE
+ table_body ::= * table_body table_section
+ table_body ::= * table_section
table_section ::= * all_rows LINE_EMPTY
table_section ::= * all_rows
all_rows ::= * all_rows row
all_rows ::= * row
row ::= * header_rows
row ::= * LINE_TABLE_SEPARATOR
- (48) table ::= table_header table_body *
- table_body ::= table_body * table_section
+
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_TABLE_SEPARATOR reduce 97 ** Parsing conflict **
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_TABLE reduce 97 ** Parsing conflict **
+ table_body shift 7
+ header_rows shift 36
+ table_section shift 7 /* because table_section==table_body */
+ all_rows shift 11
+ row shift 11 /* because row==all_rows */
+ {default} reduce 97 table ::= table_header
+
+State 7:
+ (57) table ::= table_header table_body *
header_rows ::= * header_rows LINE_TABLE
header_rows ::= * LINE_TABLE
+ table_body ::= table_body * table_section
+ table_section ::= * all_rows LINE_EMPTY
+ table_section ::= * all_rows
+ all_rows ::= * all_rows row
+ all_rows ::= * row
+ row ::= * header_rows
+ row ::= * LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR reduce 48 ** Parsing conflict **
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_TABLE reduce 48 ** Parsing conflict **
- header_rows shift 47
- table_section shift-reduce 49 table_body ::= table_body table_section
- all_rows shift 12
- row shift 12 /* because row==all_rows */
- {default} reduce 48 table ::= table_header table_body
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_TABLE_SEPARATOR reduce 57 ** Parsing conflict **
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_TABLE reduce 57 ** Parsing conflict **
+ header_rows shift 36
+ table_section shift-reduce 60 table_body ::= table_body table_section
+ all_rows shift 11
+ row shift 11 /* because row==all_rows */
+ {default} reduce 57 table ::= table_header table_body
-State 10:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
+State 8:
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ opt_ext_chunk ::= chunk * nested_chunks
+ (71) opt_ext_chunk ::= chunk *
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- item_enumerated ::= LINE_LIST_ENUMERATED para_lines * cont_blocks
- (38) item_enumerated ::= LINE_LIST_ENUMERATED para_lines *
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 38 ** Parsing conflict **
- empty shift 34
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- cont_blocks shift 27
- cont_block shift 27 /* because cont_block==cont_blocks */
- {default} reduce 38 item_enumerated ::= LINE_LIST_ENUMERATED para_lines
+ LINE_EMPTY reduce 71 ** Parsing conflict **
+ empty shift 23
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ nested_chunks shift 16
+ nested_chunk shift 16 /* because nested_chunk==nested_chunks */
+ {default} reduce 71 opt_ext_chunk ::= chunk
-State 11:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
+State 9:
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ ext_chunk ::= chunk * nested_chunks
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- item_bulleted ::= LINE_LIST_BULLETED para_lines * cont_blocks
- (33) item_bulleted ::= LINE_LIST_BULLETED para_lines *
- cont_blocks ::= * cont_blocks cont_block
- cont_blocks ::= * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
+ (52) item_enum ::= LINE_LIST_ENUMERATED chunk *
+
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 33 ** Parsing conflict **
- empty shift 34
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- cont_blocks shift 29
- cont_block shift 29 /* because cont_block==cont_blocks */
- {default} reduce 33 item_bulleted ::= LINE_LIST_BULLETED para_lines
+ LINE_EMPTY reduce 52 ** Parsing conflict **
+ empty shift 23
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ nested_chunks shift 21
+ nested_chunk shift 21 /* because nested_chunk==nested_chunks */
+ {default} reduce 52 item_enum ::= LINE_LIST_ENUMERATED chunk
-State 12:
+State 10:
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunks ::= * nested_chunks nested_chunk
+ nested_chunks ::= * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ ext_chunk ::= chunk * nested_chunks
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
+ (47) item_bullet ::= LINE_LIST_BULLETED chunk *
+
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
+ LINE_EMPTY reduce 47 ** Parsing conflict **
+ empty shift 23
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ nested_chunks shift 21
+ nested_chunk shift 21 /* because nested_chunk==nested_chunks */
+ {default} reduce 47 item_bullet ::= LINE_LIST_BULLETED chunk
+
+State 11:
+ header_rows ::= * header_rows LINE_TABLE
+ header_rows ::= * LINE_TABLE
table_section ::= all_rows * LINE_EMPTY
- (46) table_section ::= all_rows *
+ (62) table_section ::= all_rows *
all_rows ::= all_rows * row
row ::= * header_rows
row ::= * LINE_TABLE_SEPARATOR
+
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_TABLE_SEPARATOR reduce 62 ** Parsing conflict **
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_TABLE reduce 62 ** Parsing conflict **
+ LINE_EMPTY shift-reduce 61 table_section ::= all_rows LINE_EMPTY
+ LINE_EMPTY reduce 62 ** Parsing conflict **
+ header_rows shift 36
+ row shift-reduce 63 all_rows ::= all_rows row
+ {default} reduce 62 table_section ::= all_rows
+
+State 12:
header_rows ::= * header_rows LINE_TABLE
header_rows ::= * LINE_TABLE
+ all_rows ::= all_rows * row
+ row ::= * header_rows
+ row ::= * LINE_TABLE_SEPARATOR
+ (64) para ::= all_rows *
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR reduce 46 ** Parsing conflict **
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_TABLE reduce 46 ** Parsing conflict **
- LINE_EMPTY shift-reduce 45 table_section ::= all_rows LINE_EMPTY
- LINE_EMPTY reduce 46 ** Parsing conflict **
- header_rows shift 47
- row shift-reduce 47 all_rows ::= all_rows row
- {default} reduce 46 table_section ::= all_rows
+ LINE_TABLE_SEPARATOR shift-reduce 102 row ::= LINE_TABLE_SEPARATOR
+ LINE_TABLE_SEPARATOR reduce 64 ** Parsing conflict **
+ LINE_TABLE shift-reduce 98 header_rows ::= LINE_TABLE
+ LINE_TABLE reduce 64 ** Parsing conflict **
+ header_rows shift 36
+ row shift-reduce 63 all_rows ::= all_rows row
+ {default} reduce 64 para ::= all_rows
State 13:
- (4) block ::= indented_code *
- indented_code ::= indented_code * code_line
- code_line ::= * indented_line
- code_line ::= * LINE_EMPTY
- indented_line ::= * LINE_INDENTED_TAB
- indented_line ::= * LINE_INDENTED_SPACE
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ para ::= LINE_PLAIN * chunk
+ (96) para ::= LINE_PLAIN *
- LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB
- LINE_INDENTED_TAB reduce 4 ** Parsing conflict **
- LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE
- LINE_INDENTED_SPACE reduce 4 ** Parsing conflict **
- LINE_EMPTY shift-reduce 78 code_line ::= LINE_EMPTY
- LINE_EMPTY reduce 4 ** Parsing conflict **
- code_line shift-reduce 27 indented_code ::= indented_code code_line
- indented_line shift-reduce 27 indented_code ::= indented_code code_line /* because indented_line==code_line */
- {default} reduce 4 block ::= indented_code
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk shift 28
+ chunk_line shift 28 /* because chunk_line==chunk */
+ {default} reduce 96 para ::= LINE_PLAIN
State 14:
- meta_block ::= LINE_META * meta_lines
- (107) meta_block ::= LINE_META *
- meta_lines ::= * meta_lines meta_line
- meta_lines ::= * meta_line
- meta_line ::= * LINE_META
- meta_line ::= * LINE_CONTINUATION
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ def_link ::= LINE_DEF_LINK * chunk
+ (79) def_link ::= LINE_DEF_LINK *
- LINE_CONTINUATION shift-reduce 110 meta_line ::= LINE_CONTINUATION
- LINE_META shift-reduce 109 meta_line ::= LINE_META
- LINE_META reduce 107 ** Parsing conflict **
- meta_lines shift 35
- meta_line shift 35 /* because meta_line==meta_lines */
- {default} reduce 107 meta_block ::= LINE_META
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk shift 30
+ chunk_line shift 30 /* because chunk_line==chunk */
+ {default} reduce 79 def_link ::= LINE_DEF_LINK
State 15:
- fenced_block ::= LINE_FENCE_BACKTICK_START * fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= LINE_FENCE_BACKTICK_START * fenced_lines
- fenced_lines ::= * fenced_lines fenced_line
- fenced_lines ::= * fenced_line
- (104) fenced_lines ::= *
- fenced_line ::= * LINE_CONTINUATION
- fenced_line ::= * LINE_EMPTY
+ nested_chunks ::= nested_chunks * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ (73) tail ::= nested_chunks *
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
- LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION
- LINE_CONTINUATION reduce 104 ** Parsing conflict **
- LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY
- LINE_EMPTY reduce 104 ** Parsing conflict **
- fenced_lines shift 32
- fenced_line shift 32 /* because fenced_line==fenced_lines */
- {default} reduce 104 fenced_lines ::=
+ LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
+ LINE_EMPTY reduce 73 ** Parsing conflict **
+ empty shift 23
+ nested_chunk shift-reduce 26 nested_chunks ::= nested_chunks nested_chunk
+ {default} reduce 73 tail ::= nested_chunks
State 16:
- fenced_block ::= LINE_FENCE_BACKTICK * fenced_lines LINE_FENCE_BACKTICK
- fenced_block ::= LINE_FENCE_BACKTICK * fenced_lines
- fenced_lines ::= * fenced_lines fenced_line
- fenced_lines ::= * fenced_line
- (104) fenced_lines ::= *
- fenced_line ::= * LINE_CONTINUATION
- fenced_line ::= * LINE_EMPTY
+ nested_chunks ::= nested_chunks * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ (30) opt_ext_chunk ::= chunk nested_chunks *
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
- LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION
- LINE_CONTINUATION reduce 104 ** Parsing conflict **
- LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY
- LINE_EMPTY reduce 104 ** Parsing conflict **
- fenced_lines shift 33
- fenced_line shift 33 /* because fenced_line==fenced_lines */
- {default} reduce 104 fenced_lines ::=
+ LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
+ LINE_EMPTY reduce 30 ** Parsing conflict **
+ empty shift 23
+ nested_chunk shift-reduce 26 nested_chunks ::= nested_chunks nested_chunk
+ {default} reduce 30 opt_ext_chunk ::= chunk nested_chunks
State 17:
- html_block ::= LINE_HTML * html_block_lines
- (99) html_block ::= LINE_HTML *
- html_block_lines ::= * html_block_lines html_block_line
- html_block_lines ::= * html_block_line
- html_block_line ::= * LINE_CONTINUATION
- html_block_line ::= * LINE_HTML
-
- LINE_CONTINUATION shift-reduce 101 html_block_line ::= LINE_CONTINUATION
- LINE_HTML shift-reduce 102 html_block_line ::= LINE_HTML
- LINE_HTML reduce 99 ** Parsing conflict **
- html_block_lines shift 36
- html_block_line shift 36 /* because html_block_line==html_block_lines */
- {default} reduce 99 html_block ::= LINE_HTML
+ (23) block ::= para *
+ definition_block ::= para * defs
+ defs ::= * defs def
+ defs ::= * def
+ def ::= * def LINE_CONTINUATION
+ def ::= * LINE_DEFINITION
+
+ LINE_DEFINITION shift-reduce 80 def ::= LINE_DEFINITION
+ LINE_DEFINITION reduce 23 ** Parsing conflict **
+ defs shift 31
+ def shift 37
+ {default} reduce 23 block ::= para
State 18:
- all_rows ::= all_rows * row
- row ::= * header_rows
- row ::= * LINE_TABLE_SEPARATOR
- header_rows ::= * header_rows LINE_TABLE
- header_rows ::= * LINE_TABLE
- (72) para ::= all_rows *
+ nested_chunks ::= nested_chunks * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
+ (53) item_enum ::= LINE_LIST_ENUMERATED nested_chunks *
- LINE_TABLE_SEPARATOR shift-reduce 92 row ::= LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR reduce 72 ** Parsing conflict **
- LINE_TABLE shift-reduce 95 header_rows ::= LINE_TABLE
- LINE_TABLE reduce 72 ** Parsing conflict **
- header_rows shift 47
- row shift-reduce 47 all_rows ::= all_rows row
- {default} reduce 72 para ::= all_rows
+ LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
+ LINE_EMPTY reduce 53 ** Parsing conflict **
+ empty shift 23
+ nested_chunk shift-reduce 26 nested_chunks ::= nested_chunks nested_chunk
+ {default} reduce 53 item_enum ::= LINE_LIST_ENUMERATED nested_chunks
State 19:
- blockquote ::= LINE_BLOCKQUOTE * quote_lines
- (82) blockquote ::= LINE_BLOCKQUOTE *
- quote_lines ::= * quote_lines quote_line
- quote_lines ::= * quote_line
- quote_line ::= * LINE_BLOCKQUOTE
- quote_line ::= * LINE_CONTINUATION
+ nested_chunks ::= nested_chunks * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ empty ::= * empty LINE_EMPTY
+ empty ::= * LINE_EMPTY
+ (48) item_bullet ::= LINE_LIST_BULLETED nested_chunks *
- LINE_CONTINUATION shift-reduce 85 quote_line ::= LINE_CONTINUATION
- LINE_BLOCKQUOTE shift-reduce 84 quote_line ::= LINE_BLOCKQUOTE
- LINE_BLOCKQUOTE reduce 82 ** Parsing conflict **
- quote_lines shift 37
- quote_line shift 37 /* because quote_line==quote_lines */
- {default} reduce 82 blockquote ::= LINE_BLOCKQUOTE
+ LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
+ LINE_EMPTY reduce 48 ** Parsing conflict **
+ empty shift 23
+ nested_chunk shift-reduce 26 nested_chunks ::= nested_chunks nested_chunk
+ {default} reduce 48 item_bullet ::= LINE_LIST_BULLETED nested_chunks
State 20:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
- def_link ::= LINE_DEF_LINK * para_lines
- (98) def_link ::= LINE_DEF_LINK *
+ chunk ::= * chunk chunk_line
+ chunk ::= * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ nested_chunk ::= empty indented_line * chunk
+ (28) nested_chunk ::= empty indented_line *
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_lines shift 39
- para_line shift 39 /* because para_line==para_lines */
- {default} reduce 98 def_link ::= LINE_DEF_LINK
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk shift 33
+ chunk_line shift 33 /* because chunk_line==chunk */
+ {default} reduce 28 nested_chunk ::= empty indented_line
State 21:
+ nested_chunks ::= nested_chunks * nested_chunk
+ nested_chunk ::= * empty indented_line chunk
+ nested_chunk ::= * empty indented_line
+ nested_chunk ::= * empty
+ (29) ext_chunk ::= chunk nested_chunks *
empty ::= * empty LINE_EMPTY
empty ::= * LINE_EMPTY
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- (56) def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks *
LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 56 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 56 def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks
+ LINE_EMPTY reduce 29 ** Parsing conflict **
+ empty shift 23
+ nested_chunk shift-reduce 26 nested_chunks ::= nested_chunks nested_chunk
+ {default} reduce 29 ext_chunk ::= chunk nested_chunks
State 22:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- (54) def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks *
+ fenced_block ::= fenced * LINE_FENCE_BACKTICK
+ (82) fenced_block ::= fenced *
+ fenced ::= fenced * fenced_line
+ fenced_line ::= * LINE_CONTINUATION
+ fenced_line ::= * LINE_EMPTY
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 54 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 54 def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks
+ LINE_CONTINUATION shift-reduce 85 fenced_line ::= LINE_CONTINUATION
+ LINE_FENCE_BACKTICK shift-reduce 40 fenced_block ::= fenced LINE_FENCE_BACKTICK
+ LINE_FENCE_BACKTICK reduce 82 ** Parsing conflict **
+ LINE_EMPTY shift-reduce 86 fenced_line ::= LINE_EMPTY
+ LINE_EMPTY reduce 82 ** Parsing conflict **
+ fenced_line shift-reduce 41 fenced ::= fenced fenced_line
+ {default} reduce 82 fenced_block ::= fenced
State 23:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- (53) def_citation ::= LINE_DEF_CITATION cont_blocks *
+ nested_chunk ::= empty * indented_line chunk
+ nested_chunk ::= empty * indented_line
+ (68) nested_chunk ::= empty *
+ indented_line ::= * LINE_INDENTED_TAB
+ indented_line ::= * LINE_INDENTED_SPACE
+ empty ::= empty * LINE_EMPTY
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 53 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 53 def_citation ::= LINE_DEF_CITATION cont_blocks
+ LINE_INDENTED_TAB shift-reduce 69 indented_line ::= LINE_INDENTED_TAB
+ LINE_INDENTED_TAB reduce 68 ** Parsing conflict **
+ LINE_INDENTED_SPACE shift-reduce 70 indented_line ::= LINE_INDENTED_SPACE
+ LINE_INDENTED_SPACE reduce 68 ** Parsing conflict **
+ LINE_EMPTY shift-reduce 39 empty ::= empty LINE_EMPTY
+ LINE_EMPTY reduce 68 ** Parsing conflict **
+ indented_line shift 20
+ {default} reduce 68 nested_chunk ::= empty
State 24:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
- (51) def_citation ::= LINE_DEF_CITATION para_lines cont_blocks *
-
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 51 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 51 def_citation ::= LINE_DEF_CITATION para_lines cont_blocks
+ (19) block ::= indented_code *
+ indented_line ::= * LINE_INDENTED_TAB
+ indented_line ::= * LINE_INDENTED_SPACE
+ indented_code ::= indented_code * indented_line
+ indented_code ::= indented_code * LINE_EMPTY
+
+ LINE_INDENTED_TAB shift-reduce 69 indented_line ::= LINE_INDENTED_TAB
+ LINE_INDENTED_TAB reduce 19 ** Parsing conflict **
+ LINE_INDENTED_SPACE shift-reduce 70 indented_line ::= LINE_INDENTED_SPACE
+ LINE_INDENTED_SPACE reduce 19 ** Parsing conflict **
+ LINE_EMPTY shift-reduce 44 indented_code ::= indented_code LINE_EMPTY
+ LINE_EMPTY reduce 19 ** Parsing conflict **
+ indented_line shift-reduce 43 indented_code ::= indented_code indented_line
+ {default} reduce 19 block ::= indented_code
State 25:
- para ::= LINE_PLAIN * para_lines
- (73) para ::= LINE_PLAIN *
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
+ (22) block ::= meta_block *
+ meta_block ::= meta_block * meta_line
+ meta_line ::= * LINE_META
+ meta_line ::= * LINE_CONTINUATION
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_lines shift 40
- para_line shift 40 /* because para_line==para_lines */
- {default} reduce 73 para ::= LINE_PLAIN
+ LINE_CONTINUATION shift-reduce 95 meta_line ::= LINE_CONTINUATION
+ LINE_META shift-reduce 94 meta_line ::= LINE_META
+ LINE_META reduce 22 ** Parsing conflict **
+ meta_line shift-reduce 55 meta_block ::= meta_block meta_line
+ {default} reduce 22 block ::= meta_block
State 26:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- (39) item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks *
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
+ (18) block ::= html_block *
+ html_block ::= html_block * html_line
+ html_line ::= * LINE_CONTINUATION
+ html_line ::= * LINE_HTML
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 39 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 39 item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks
+ LINE_CONTINUATION shift-reduce 88 html_line ::= LINE_CONTINUATION
+ LINE_HTML shift-reduce 89 html_line ::= LINE_HTML
+ LINE_HTML reduce 18 ** Parsing conflict **
+ html_line shift-reduce 42 html_block ::= html_block html_line
+ {default} reduce 18 block ::= html_block
State 27:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- (37) item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks *
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
+ (11) block ::= blockquote *
+ blockquote ::= blockquote * quote_line
+ quote_line ::= * LINE_BLOCKQUOTE
+ quote_line ::= * LINE_CONTINUATION
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 37 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 37 item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks
+ LINE_CONTINUATION shift-reduce 76 quote_line ::= LINE_CONTINUATION
+ LINE_BLOCKQUOTE shift-reduce 75 quote_line ::= LINE_BLOCKQUOTE
+ LINE_BLOCKQUOTE reduce 11 ** Parsing conflict **
+ quote_line shift-reduce 31 blockquote ::= blockquote quote_line
+ {default} reduce 11 block ::= blockquote
State 28:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- (34) item_bulleted ::= LINE_LIST_BULLETED cont_blocks *
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ (56) para ::= LINE_PLAIN chunk *
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 34 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 34 item_bulleted ::= LINE_LIST_BULLETED cont_blocks
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ {default} reduce 56 para ::= LINE_PLAIN chunk
State 29:
- empty ::= * empty LINE_EMPTY
- empty ::= * LINE_EMPTY
- (32) item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks *
- cont_blocks ::= cont_blocks * cont_block
- cont_block ::= * empty indented_line para_lines
- cont_block ::= * empty indented_line
- cont_block ::= * empty
+ defs ::= defs * def
+ def ::= * def LINE_CONTINUATION
+ def ::= * LINE_DEFINITION
+ (103) para ::= defs *
- LINE_EMPTY shift-reduce 81 empty ::= LINE_EMPTY
- LINE_EMPTY reduce 32 ** Parsing conflict **
- empty shift 34
- cont_block shift-reduce 41 cont_blocks ::= cont_blocks cont_block
- {default} reduce 32 item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks
+ LINE_DEFINITION shift-reduce 80 def ::= LINE_DEFINITION
+ LINE_DEFINITION reduce 103 ** Parsing conflict **
+ def shift 38
+ {default} reduce 103 para ::= defs
State 30:
- para_lines ::= * para_lines para_line
- para_lines ::= * para_line
- para_line ::= * LINE_CONTINUATION
- cont_block ::= empty indented_line * para_lines
- (43) cont_block ::= empty indented_line *
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ (34) def_link ::= LINE_DEF_LINK chunk *
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_lines shift 42
- para_line shift 42 /* because para_line==para_lines */
- {default} reduce 43 cont_block ::= empty indented_line
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ {default} reduce 34 def_link ::= LINE_DEF_LINK chunk
State 31:
- (3) block ::= para *
- definition_block ::= para * defs
- defs ::= * defs def
- defs ::= * def
- def ::= * LINE_DEFINITION def_lines
+ (35) definition_block ::= para defs *
+ defs ::= defs * def
+ def ::= * def LINE_CONTINUATION
def ::= * LINE_DEFINITION
- LINE_DEFINITION shift 44
- LINE_DEFINITION reduce 3 ** Parsing conflict **
- defs shift 45
- def shift 45 /* because def==defs */
- {default} reduce 3 block ::= para
+ LINE_DEFINITION shift-reduce 80 def ::= LINE_DEFINITION
+ LINE_DEFINITION reduce 35 ** Parsing conflict **
+ def shift 38
+ {default} reduce 35 definition_block ::= para defs
State 32:
- fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines * LINE_FENCE_BACKTICK
- (63) fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines *
- fenced_lines ::= fenced_lines * fenced_line
- fenced_line ::= * LINE_CONTINUATION
- fenced_line ::= * LINE_EMPTY
-
- LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION
- LINE_FENCE_BACKTICK shift-reduce 62 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK
- LINE_FENCE_BACKTICK reduce 63 ** Parsing conflict **
- LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY
- LINE_EMPTY reduce 63 ** Parsing conflict **
- fenced_line shift-reduce 64 fenced_lines ::= fenced_lines fenced_line
- {default} reduce 63 fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines
+ (21) block ::= list_enum *
+ list_enum ::= list_enum * item_enum
+ item_enum ::= * LINE_LIST_ENUMERATED ext_chunk
+ item_enum ::= * LINE_LIST_ENUMERATED chunk
+ item_enum ::= * LINE_LIST_ENUMERATED nested_chunks
+ item_enum ::= * LINE_LIST_ENUMERATED
+
+ LINE_LIST_ENUMERATED shift 4
+ LINE_LIST_ENUMERATED reduce 21 ** Parsing conflict **
+ item_enum shift-reduce 50 list_enum ::= list_enum item_enum
+ {default} reduce 21 block ::= list_enum
State 33:
- fenced_block ::= LINE_FENCE_BACKTICK fenced_lines * LINE_FENCE_BACKTICK
- (61) fenced_block ::= LINE_FENCE_BACKTICK fenced_lines *
- fenced_lines ::= fenced_lines * fenced_line
- fenced_line ::= * LINE_CONTINUATION
- fenced_line ::= * LINE_EMPTY
+ chunk ::= chunk * chunk_line
+ chunk_line ::= * LINE_CONTINUATION
+ (27) nested_chunk ::= empty indented_line chunk *
- LINE_CONTINUATION shift-reduce 105 fenced_line ::= LINE_CONTINUATION
- LINE_FENCE_BACKTICK shift-reduce 60 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK
- LINE_FENCE_BACKTICK reduce 61 ** Parsing conflict **
- LINE_EMPTY shift-reduce 106 fenced_line ::= LINE_EMPTY
- LINE_EMPTY reduce 61 ** Parsing conflict **
- fenced_line shift-reduce 64 fenced_lines ::= fenced_lines fenced_line
- {default} reduce 61 fenced_block ::= LINE_FENCE_BACKTICK fenced_lines
+ LINE_CONTINUATION shift-reduce 66 chunk_line ::= LINE_CONTINUATION
+ chunk_line shift-reduce 25 chunk ::= chunk chunk_line
+ {default} reduce 27 nested_chunk ::= empty indented_line chunk
State 34:
- indented_line ::= * LINE_INDENTED_TAB
- indented_line ::= * LINE_INDENTED_SPACE
- empty ::= empty * LINE_EMPTY
- cont_block ::= empty * indented_line para_lines
- cont_block ::= empty * indented_line
- (89) cont_block ::= empty *
-
- LINE_INDENTED_TAB shift-reduce 79 indented_line ::= LINE_INDENTED_TAB
- LINE_INDENTED_TAB reduce 89 ** Parsing conflict **
- LINE_INDENTED_SPACE shift-reduce 80 indented_line ::= LINE_INDENTED_SPACE
- LINE_INDENTED_SPACE reduce 89 ** Parsing conflict **
- LINE_EMPTY shift-reduce 28 empty ::= empty LINE_EMPTY
- LINE_EMPTY reduce 89 ** Parsing conflict **
- indented_line shift 30
- {default} reduce 89 cont_block ::= empty
+ (20) block ::= list_bullet *
+ list_bullet ::= list_bullet * item_bullet
+ item_bullet ::= * LINE_LIST_BULLETED ext_chunk
+ item_bullet ::= * LINE_LIST_BULLETED chunk
+ item_bullet ::= * LINE_LIST_BULLETED nested_chunks
+ item_bullet ::= * LINE_LIST_BULLETED
+
+ LINE_LIST_BULLETED shift 5
+ LINE_LIST_BULLETED reduce 20 ** Parsing conflict **
+ item_bullet shift-reduce 45 list_bullet ::= list_bullet item_bullet
+ {default} reduce 20 block ::= list_bullet
State 35:
- (65) meta_block ::= LINE_META meta_lines *
- meta_lines ::= meta_lines * meta_line
- meta_line ::= * LINE_META
- meta_line ::= * LINE_CONTINUATION
+ table_header ::= header_rows * LINE_TABLE_SEPARATOR
+ header_rows ::= header_rows * LINE_TABLE
+ (101) row ::= header_rows *
- LINE_CONTINUATION shift-reduce 110 meta_line ::= LINE_CONTINUATION
- LINE_META shift-reduce 109 meta_line ::= LINE_META
- LINE_META reduce 65 ** Parsing conflict **
- meta_line shift-reduce 66 meta_lines ::= meta_lines meta_line
- {default} reduce 65 meta_block ::= LINE_META meta_lines
+ LINE_TABLE_SEPARATOR shift-reduce 58 table_header ::= header_rows LINE_TABLE_SEPARATOR
+ LINE_TABLE_SEPARATOR reduce 101 ** Parsing conflict **
+ LINE_TABLE shift-reduce 59 header_rows ::= header_rows LINE_TABLE
+ LINE_TABLE reduce 101 ** Parsing conflict **
+ {default} reduce 101 row ::= header_rows
State 36:
- (58) html_block ::= LINE_HTML html_block_lines *
- html_block_lines ::= html_block_lines * html_block_line
- html_block_line ::= * LINE_CONTINUATION
- html_block_line ::= * LINE_HTML
+ header_rows ::= header_rows * LINE_TABLE
+ (101) row ::= header_rows *
- LINE_CONTINUATION shift-reduce 101 html_block_line ::= LINE_CONTINUATION
- LINE_HTML shift-reduce 102 html_block_line ::= LINE_HTML
- LINE_HTML reduce 58 ** Parsing conflict **
- html_block_line shift-reduce 59 html_block_lines ::= html_block_lines html_block_line
- {default} reduce 58 html_block ::= LINE_HTML html_block_lines
+ LINE_TABLE shift-reduce 59 header_rows ::= header_rows LINE_TABLE
+ LINE_TABLE reduce 101 ** Parsing conflict **
+ {default} reduce 101 row ::= header_rows
State 37:
- (29) blockquote ::= LINE_BLOCKQUOTE quote_lines *
- quote_lines ::= quote_lines * quote_line
- quote_line ::= * LINE_BLOCKQUOTE
- quote_line ::= * LINE_CONTINUATION
+ (37) defs ::= def *
+ def ::= def * LINE_CONTINUATION
- LINE_CONTINUATION shift-reduce 85 quote_line ::= LINE_CONTINUATION
- LINE_BLOCKQUOTE shift-reduce 84 quote_line ::= LINE_BLOCKQUOTE
- LINE_BLOCKQUOTE reduce 29 ** Parsing conflict **
- quote_line shift-reduce 30 quote_lines ::= quote_lines quote_line
- {default} reduce 29 blockquote ::= LINE_BLOCKQUOTE quote_lines
+ LINE_CONTINUATION shift-reduce 38 def ::= def LINE_CONTINUATION
+ {default} reduce 37 defs ::= def
State 38:
- defs ::= defs * def
- def ::= * LINE_DEFINITION def_lines
- def ::= * LINE_DEFINITION
- (113) para ::= defs *
+ (36) defs ::= defs def *
+ def ::= def * LINE_CONTINUATION
- LINE_DEFINITION shift 44
- LINE_DEFINITION reduce 113 ** Parsing conflict **
- def shift-reduce 68 defs ::= defs def
- {default} reduce 113 para ::= defs
+ LINE_CONTINUATION shift-reduce 38 def ::= def LINE_CONTINUATION
+ {default} reduce 36 defs ::= defs def
State 39:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
- (57) def_link ::= LINE_DEF_LINK para_lines *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- {default} reduce 57 def_link ::= LINE_DEF_LINK para_lines
-
-State 40:
- (25) para ::= LINE_PLAIN para_lines *
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- {default} reduce 25 para ::= LINE_PLAIN para_lines
-
-State 41:
- (13) block ::= list_enumerated *
- list_enumerated ::= list_enumerated * item_enumerated
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED para_lines
- item_enumerated ::= * LINE_LIST_ENUMERATED cont_blocks
- item_enumerated ::= * LINE_LIST_ENUMERATED
-
- LINE_LIST_ENUMERATED shift 5
- LINE_LIST_ENUMERATED reduce 13 ** Parsing conflict **
- item_enumerated shift-reduce 36 list_enumerated ::= list_enumerated item_enumerated
- {default} reduce 13 block ::= list_enumerated
-
-State 42:
- para_lines ::= para_lines * para_line
- para_line ::= * LINE_CONTINUATION
- (42) cont_block ::= empty indented_line para_lines *
-
- LINE_CONTINUATION shift-reduce 75 para_line ::= LINE_CONTINUATION
- para_line shift-reduce 26 para_lines ::= para_lines para_line
- {default} reduce 42 cont_block ::= empty indented_line para_lines
-
-State 43:
- (12) block ::= list_bulleted *
- list_bulleted ::= list_bulleted * item_bulleted
- item_bulleted ::= * LINE_LIST_BULLETED para_lines cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED para_lines
- item_bulleted ::= * LINE_LIST_BULLETED cont_blocks
- item_bulleted ::= * LINE_LIST_BULLETED
-
- LINE_LIST_BULLETED shift 6
- LINE_LIST_BULLETED reduce 12 ** Parsing conflict **
- item_bulleted shift-reduce 31 list_bulleted ::= list_bulleted item_bulleted
- {default} reduce 12 block ::= list_bulleted
-
-State 44:
- def ::= LINE_DEFINITION * def_lines
- (70) def ::= LINE_DEFINITION *
- def_lines ::= * def_lines LINE_CONTINUATION
- def_lines ::= * LINE_CONTINUATION
-
- LINE_CONTINUATION shift-reduce 112 def_lines ::= LINE_CONTINUATION
- def_lines shift 49
- {default} reduce 70 def ::= LINE_DEFINITION
-
-State 45:
- (67) definition_block ::= para defs *
- defs ::= defs * def
- def ::= * LINE_DEFINITION def_lines
- def ::= * LINE_DEFINITION
-
- LINE_DEFINITION shift 44
- LINE_DEFINITION reduce 67 ** Parsing conflict **
- def shift-reduce 68 defs ::= defs def
- {default} reduce 67 definition_block ::= para defs
-
-State 46:
- table_header ::= header_rows * LINE_TABLE_SEPARATOR
- (91) row ::= header_rows *
- header_rows ::= header_rows * LINE_TABLE
-
- LINE_TABLE_SEPARATOR shift-reduce 44 table_header ::= header_rows LINE_TABLE_SEPARATOR
- LINE_TABLE_SEPARATOR reduce 91 ** Parsing conflict **
- LINE_TABLE shift-reduce 50 header_rows ::= header_rows LINE_TABLE
- LINE_TABLE reduce 91 ** Parsing conflict **
- {default} reduce 91 row ::= header_rows
-
-State 47:
- (91) row ::= header_rows *
- header_rows ::= header_rows * LINE_TABLE
-
- LINE_TABLE shift-reduce 50 header_rows ::= header_rows LINE_TABLE
- LINE_TABLE reduce 91 ** Parsing conflict **
- {default} reduce 91 row ::= header_rows
-
-State 48:
- (11) block ::= empty *
+ (16) block ::= empty *
empty ::= empty * LINE_EMPTY
- LINE_EMPTY shift-reduce 28 empty ::= empty LINE_EMPTY
- LINE_EMPTY reduce 11 ** Parsing conflict **
- {default} reduce 11 block ::= empty
-
-State 49:
- (69) def ::= LINE_DEFINITION def_lines *
- def_lines ::= def_lines * LINE_CONTINUATION
-
- LINE_CONTINUATION shift-reduce 71 def_lines ::= def_lines LINE_CONTINUATION
- {default} reduce 69 def ::= LINE_DEFINITION def_lines
+ LINE_EMPTY shift-reduce 39 empty ::= empty LINE_EMPTY
+ LINE_EMPTY reduce 16 ** Parsing conflict **
+ {default} reduce 16 block ::= empty
----------------------------------------------------
Symbols:
21: LINE_FENCE_BACKTICK
22: LINE_FENCE_BACKTICK_START
23: LINE_TOC
- 24: LINE_EMPTY
- 25: LINE_META
- 26: LINE_DEFINITION
+ 24: LINE_DEFINITION
+ 25: LINE_EMPTY
+ 26: LINE_META
27: error:
- 28: doc: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
- 29: blocks: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
- 30: block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
- 31: para: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION
- 32: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE
- 33: empty: LINE_EMPTY
- 34: list_bulleted: LINE_LIST_BULLETED
- 35: list_enumerated: LINE_LIST_ENUMERATED
- 36: blockquote: LINE_BLOCKQUOTE
- 37: table: LINE_TABLE
- 38: def_citation: LINE_DEF_CITATION
- 39: def_footnote: LINE_DEF_FOOTNOTE
- 40: def_link: LINE_DEF_LINK
- 41: html_block: LINE_HTML
- 42: fenced_block: LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START
- 43: meta_block: LINE_META
- 44: definition_block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION
- 45: para_lines: LINE_CONTINUATION
- 46: para_line: LINE_CONTINUATION
- 47: code_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_EMPTY
- 48: indented_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE
- 49: quote_lines: LINE_CONTINUATION LINE_BLOCKQUOTE
- 50: quote_line: LINE_CONTINUATION LINE_BLOCKQUOTE
- 51: item_bulleted: LINE_LIST_BULLETED
- 52: cont_blocks: LINE_EMPTY
- 53: item_enumerated: LINE_LIST_ENUMERATED
- 54: cont_block: LINE_EMPTY
- 55: table_header: LINE_TABLE
- 56: header_rows: LINE_TABLE
- 57: table_section: LINE_TABLE_SEPARATOR LINE_TABLE
- 58: all_rows: LINE_TABLE_SEPARATOR LINE_TABLE
- 59: row: LINE_TABLE_SEPARATOR LINE_TABLE
- 60: table_body: LINE_TABLE_SEPARATOR LINE_TABLE
- 61: html_block_lines: LINE_CONTINUATION LINE_HTML
- 62: html_block_line: LINE_CONTINUATION LINE_HTML
- 63: fenced_lines: <lambda> LINE_CONTINUATION LINE_EMPTY
- 64: fenced_line: LINE_CONTINUATION LINE_EMPTY
- 65: meta_lines: LINE_CONTINUATION LINE_META
- 66: meta_line: LINE_CONTINUATION LINE_META
- 67: defs: LINE_DEFINITION
- 68: def: LINE_DEFINITION
- 69: def_lines: LINE_CONTINUATION
+ 28: doc: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_META
+ 29: blocks: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_META
+ 30: block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_DEFINITION LINE_EMPTY LINE_META
+ 31: blockquote: LINE_BLOCKQUOTE
+ 32: def_citation: LINE_DEF_CITATION
+ 33: def_footnote: LINE_DEF_FOOTNOTE
+ 34: def_link: LINE_DEF_LINK
+ 35: definition_block: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION
+ 36: empty: LINE_EMPTY
+ 37: fenced_block: LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START
+ 38: html_block: LINE_HTML
+ 39: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE
+ 40: list_bullet: LINE_LIST_BULLETED
+ 41: list_enum: LINE_LIST_ENUMERATED
+ 42: meta_block: LINE_META
+ 43: para: LINE_PLAIN LINE_TABLE_SEPARATOR LINE_TABLE LINE_DEFINITION
+ 44: table: LINE_TABLE
+ 45: chunk: LINE_CONTINUATION
+ 46: chunk_line: LINE_CONTINUATION
+ 47: nested_chunks: LINE_EMPTY
+ 48: nested_chunk: LINE_EMPTY
+ 49: indented_line: LINE_INDENTED_TAB LINE_INDENTED_SPACE
+ 50: ext_chunk: LINE_CONTINUATION
+ 51: opt_ext_chunk: LINE_CONTINUATION
+ 52: tail: LINE_CONTINUATION LINE_EMPTY
+ 53: quote_line: LINE_CONTINUATION LINE_BLOCKQUOTE
+ 54: defs: LINE_DEFINITION
+ 55: def: LINE_DEFINITION
+ 56: fenced: LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START
+ 57: fenced_line: LINE_CONTINUATION LINE_EMPTY
+ 58: html_line: LINE_CONTINUATION LINE_HTML
+ 59: item_bullet: LINE_LIST_BULLETED
+ 60: item_enum: LINE_LIST_ENUMERATED
+ 61: meta_line: LINE_CONTINUATION LINE_META
+ 62: table_header: LINE_TABLE
+ 63: table_body: LINE_TABLE_SEPARATOR LINE_TABLE
+ 64: header_rows: LINE_TABLE
+ 65: table_section: LINE_TABLE_SEPARATOR LINE_TABLE
+ 66: all_rows: LINE_TABLE_SEPARATOR LINE_TABLE
+ 67: row: LINE_TABLE_SEPARATOR LINE_TABLE
A = B;
}
-
-block(A) ::= para(B). { A = token_new_parent(B, BLOCK_PARA); is_para_html(engine, A); }
-block(A) ::= indented_code(B). { A = token_new_parent(B, BLOCK_CODE_INDENTED); }
-block(A) ::= LINE_ATX_1(B). { A = token_new_parent(B, BLOCK_H1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= LINE_ATX_2(B). { A = token_new_parent(B, BLOCK_H2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= LINE_ATX_3(B). { A = token_new_parent(B, BLOCK_H3); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= LINE_ATX_4(B). { A = token_new_parent(B, BLOCK_H4); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= LINE_ATX_5(B). { A = token_new_parent(B, BLOCK_H5); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= LINE_ATX_6(B). { A = token_new_parent(B, BLOCK_H6); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A) ::= empty(B). { A = token_new_parent(B, BLOCK_EMPTY); }
-block(A) ::= list_bulleted(B). { A = token_new_parent(B, BLOCK_LIST_BULLETED); is_list_loose(A); }
-block(A) ::= list_enumerated(B). { A = token_new_parent(B, BLOCK_LIST_ENUMERATED); is_list_loose(A); }
-block(A) ::= blockquote(B). { A = token_new_parent(B, BLOCK_BLOCKQUOTE); recursive_parse_blockquote(engine, A); }
-block(A) ::= table(B). { A = token_new_parent(B, BLOCK_TABLE); }
-block(A) ::= LINE_HR(B). { A = token_new_parent(B, BLOCK_HR); }
-block(A) ::= def_citation(B). { A = token_new_parent(B, BLOCK_DEF_CITATION); stack_push(engine->definition_stack, A); }
-block(A) ::= def_footnote(B). { A = token_new_parent(B, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, A); }
-block(A) ::= def_link(B). { A = token_new_parent(B, BLOCK_DEF_LINK); stack_push(engine->definition_stack, A); }
-block(A) ::= html_block(B). { A = token_new_parent(B, BLOCK_HTML); }
-block(A) ::= fenced_block(B). { A = token_new_parent(B, BLOCK_CODE_FENCED); B->child->type = CODE_FENCE; }
-block(A) ::= meta_block(B). { A = token_new_parent(B, BLOCK_META); }
-block(A) ::= LINE_TOC(B). { A = token_new_parent(B, BLOCK_TOC); }
-block(A) ::= definition_block(B). { A = token_new_parent(B, BLOCK_DEFLIST); }
-
-para(A) ::= LINE_PLAIN(B) para_lines(C). { A = B; token_chain_append(B, C); }
-para ::= LINE_PLAIN.
-para_lines(A) ::= para_lines(B) para_line(C). { A = B; token_chain_append(B, C); }
-para_lines ::= para_line.
+// Blocks
-para_line ::= LINE_CONTINUATION.
+// Single line blocks
-indented_code(A) ::= indented_code(B) code_line(C). { A = B; token_chain_append(B, C); }
-indented_code ::= indented_line.
+block(A) ::= LINE_ATX_1(B). { A = token_new_parent(B, BLOCK_H1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A) ::= LINE_ATX_2(B). { A = token_new_parent(B, BLOCK_H2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A) ::= LINE_ATX_3(B). { A = token_new_parent(B, BLOCK_H3); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A) ::= LINE_ATX_4(B). { A = token_new_parent(B, BLOCK_H4); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A) ::= LINE_ATX_5(B). { A = token_new_parent(B, BLOCK_H5); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A) ::= LINE_ATX_6(B). { A = token_new_parent(B, BLOCK_H6); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-code_line ::= indented_line.
-code_line ::= LINE_EMPTY.
+block(A) ::= LINE_HR(B). { A = token_new_parent(B, BLOCK_HR); }
-indented_line ::= LINE_INDENTED_TAB.
-indented_line ::= LINE_INDENTED_SPACE.
+block(A) ::= LINE_TOC(B). { A = token_new_parent(B, BLOCK_TOC); }
-empty(A) ::= empty(B) LINE_EMPTY(C). { A = B; token_chain_append(B, C); }
-empty ::= LINE_EMPTY.
-blockquote(A) ::= LINE_BLOCKQUOTE(B) quote_lines(C). { A = B; token_chain_append(B, C); }
-blockquote ::= LINE_BLOCKQUOTE.
+// Multi-line blocks
-quote_lines(A) ::= quote_lines(B) quote_line(C). { A = B; token_chain_append(B, C); }
-quote_lines ::= quote_line.
+block(A) ::= blockquote(B). { A = token_new_parent(B, BLOCK_BLOCKQUOTE); recursive_parse_blockquote(engine, A); }
+block(A) ::= def_citation(B). { A = token_new_parent(B, BLOCK_DEF_CITATION); stack_push(engine->definition_stack, A); }
+block(A) ::= def_footnote(B). { A = token_new_parent(B, BLOCK_DEF_FOOTNOTE); stack_push(engine->definition_stack, A); }
+block(A) ::= def_link(B). { A = token_new_parent(B, BLOCK_DEF_LINK); stack_push(engine->definition_stack, A); }
+block(A) ::= definition_block(B). { A = token_new_parent(B, BLOCK_DEFLIST); }
+block(A) ::= empty(B). { A = token_new_parent(B, BLOCK_EMPTY); }
+block(A) ::= fenced_block(B). { A = token_new_parent(B, BLOCK_CODE_FENCED); B->child->type = CODE_FENCE; }
+block(A) ::= html_block(B). { A = token_new_parent(B, BLOCK_HTML); }
+block(A) ::= indented_code(B). { A = token_new_parent(B, BLOCK_CODE_INDENTED); }
+block(A) ::= list_bullet(B). { A = token_new_parent(B, BLOCK_LIST_BULLETED); is_list_loose(A); }
+block(A) ::= list_enum(B). { A = token_new_parent(B, BLOCK_LIST_ENUMERATED); is_list_loose(A); }
+block(A) ::= meta_block(B). { A = token_new_parent(B, BLOCK_META); }
+block(A) ::= para(B). { A = token_new_parent(B, BLOCK_PARA); is_para_html(engine, A); }
+block(A) ::= table(B). { A = token_new_parent(B, BLOCK_TABLE); }
-quote_line ::= LINE_BLOCKQUOTE.
-quote_line ::= LINE_CONTINUATION.
-list_bulleted(A) ::= list_bulleted(B) item_bulleted(C). { A = B; token_chain_append(B, C); }
-list_bulleted ::= item_bulleted.
+// Reusable components
-item_bulleted(A) ::= LINE_LIST_BULLETED(B) para_lines(C) cont_blocks(D). { token_chain_append(B, C); token_chain_append(B, D); A = token_new_parent(B, BLOCK_LIST_ITEM); recursive_parse_list_item(engine, A); }
-item_bulleted(A) ::= LINE_LIST_BULLETED(B) para_lines(C). { token_chain_append(B, C); A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); recursive_parse_list_item(engine, A); }
-item_bulleted(A) ::= LINE_LIST_BULLETED(B) cont_blocks(C). { token_chain_append(B, C); A = token_new_parent(B, BLOCK_LIST_ITEM); if (C) {recursive_parse_list_item(engine, A);} }
-item_bulleted(A) ::= LINE_LIST_BULLETED(B). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); }
+// A "chunk" allows you to grab all regular lines before the next empty line.
+// For example, to grab all lines after the first line in a paragraph.
+// You will want to specify a certain line type to start a chunk, but
+// this can grab the remaining lines, if any.
-list_enumerated(A) ::= list_enumerated(B) item_enumerated(C). { A = B; token_chain_append(B, C); }
-list_enumerated ::= item_enumerated.
+chunk(A) ::= chunk(B) chunk_line(C). { A = B; token_chain_append(B, C); }
+chunk ::= chunk_line.
-item_enumerated(A) ::= LINE_LIST_ENUMERATED(B) para_lines(C) cont_blocks(D). { token_chain_append(B, C); token_chain_append(B, D); A = token_new_parent(B, BLOCK_LIST_ITEM); recursive_parse_list_item(engine, A); }
-item_enumerated(A) ::= LINE_LIST_ENUMERATED(B) para_lines(C). { token_chain_append(B, C); A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); recursive_parse_list_item(engine, A); }
-item_enumerated(A) ::= LINE_LIST_ENUMERATED(B) cont_blocks(C). { token_chain_append(B, C); A = token_new_parent(B, BLOCK_LIST_ITEM); recursive_parse_list_item(engine, A); }
-item_enumerated(A) ::= LINE_LIST_ENUMERATED(B). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); }
+chunk_line ::= LINE_CONTINUATION.
-cont_blocks(A) ::= cont_blocks(B) cont_block(C). { A = B; token_chain_append(B, C); }
-cont_blocks ::= cont_block.
-cont_block(A) ::= empty(B) indented_line(C) para_lines(D).{ A = B; token_chain_append(B, C); token_chain_append(B, D); C->type = LINE_CONTINUATION; }
-cont_block(A) ::= empty(B) indented_line(C). { A = B; token_chain_append(B, C); C->type = LINE_CONTINUATION; }
-cont_block ::= empty.
+// A "nested chunk" is useful when a chunk can also include following blocks
+// that have an extra level of indention to indicate that they belong together.
+// For example, a list item can include multiple paragraphs, even other lists.
+// This structure is also used in footnotes and definitions.
+nested_chunks(A) ::= nested_chunks(B) nested_chunk(C). { A = B; token_chain_append(B, C); }
+nested_chunks ::= nested_chunk.
-table_header(A) ::= header_rows(B) LINE_TABLE_SEPARATOR(C). { A = token_new_parent(B, BLOCK_TABLE_HEADER); token_chain_append(B, C); }
+nested_chunk(A) ::= empty(B) indented_line(C) chunk(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); C->type = LINE_CONTINUATION; }
+nested_chunk(A) ::= empty(B) indented_line(C). { A = B; token_chain_append(B, C); C->type = LINE_CONTINUATION; }
+nested_chunk ::= empty.
-table_section(A) ::= all_rows(B) LINE_EMPTY(C). { A = token_new_parent(B, BLOCK_TABLE_SECTION); token_chain_append(B, C); }
-table_section(A) ::= all_rows(B). { A = token_new_parent(B, BLOCK_TABLE_SECTION); }
+indented_line ::= LINE_INDENTED_TAB.
+indented_line ::= LINE_INDENTED_SPACE.
-all_rows(A) ::= all_rows(B) row(C). { A = B; token_chain_append(B, C); }
-all_rows ::= row.
-row ::= header_rows.
-row ::= LINE_TABLE_SEPARATOR.
+// Shortcut for optional chunk
+//opt_chunk ::= chunk.
+//opt_chunk ::= .
-table(A) ::= table_header(B) table_body(C). { A = B; token_chain_append(B, C); }
-table ::= table_header.
-table_body(A) ::= table_body(B) table_section(C). { A = B; token_chain_append(B, C); }
-table_body ::= table_section.
+// Shortcut for "extended chunk" (chunk with following blocks)
+ext_chunk(A) ::= chunk(B) nested_chunks(C). { A = B; token_chain_append(B, C); }
-header_rows(A) ::= header_rows(B) LINE_TABLE(C). { A = B; token_chain_append(B, C); }
-header_rows ::= LINE_TABLE.
+
+// Shortcut for optionally extended chunk
+opt_ext_chunk(A) ::= chunk(B) nested_chunks(C). { A = B; token_chain_append(B, C); }
+opt_ext_chunk ::= chunk.
-def_citation(A) ::= LINE_DEF_CITATION(B) para_lines(C) cont_blocks(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); }
-def_citation(A) ::= LINE_DEF_CITATION(B) para_lines(C). { A = B; token_chain_append(B, C); }
-def_citation(A) ::= LINE_DEF_CITATION(B) cont_blocks(C). { A = B; token_chain_append(B, C); }
+// Shortcut for anything that falls into the extended chunk pattern
+tail ::= opt_ext_chunk.
+tail ::= nested_chunks.
+
+
+// Blockquotes
+blockquote(A) ::= blockquote(B) quote_line(C). { A = B; token_chain_append(B, C); }
+blockquote ::= LINE_BLOCKQUOTE.
+
+quote_line ::= LINE_BLOCKQUOTE.
+quote_line ::= LINE_CONTINUATION.
+
+
+// Reference definitions
+def_citation(A) ::= LINE_DEF_CITATION(B) tail(C). { A = B; token_chain_append(B, C); }
def_citation ::= LINE_DEF_CITATION.
-def_footnote(A) ::= LINE_DEF_FOOTNOTE(B) para_lines(C) cont_blocks(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); }
-def_footnote(A) ::= LINE_DEF_FOOTNOTE(B) para_lines(C). { A = B; token_chain_append(B, C); }
-def_footnote(A) ::= LINE_DEF_FOOTNOTE(B) cont_blocks(C). { A = B; token_chain_append(B, C); }
+def_footnote(A) ::= LINE_DEF_FOOTNOTE(B) tail(C). { A = B; token_chain_append(B, C); }
def_footnote ::= LINE_DEF_FOOTNOTE.
-def_link(A) ::= LINE_DEF_LINK(B) para_lines(C). { A = B; token_chain_append(B, C); }
+def_link(A) ::= LINE_DEF_LINK(B) chunk(C). { A = B; token_chain_append(B, C); }
def_link ::= LINE_DEF_LINK.
-html_block(A) ::= LINE_HTML(B) html_block_lines(C). { A = B; token_chain_append(B, C); }
-html_block ::= LINE_HTML.
+// Definition lists
+// Lemon's LALR(1) parser can't properly allow for detecting consecutive definition blocks and concatenating them,
+// because 'para defs para' could be the beginning of the next definition, OR the next regular para.
+// We have to bundle them when exporting, if desired.
+definition_block(A) ::= para(B) defs(C). { A = B; token_chain_append(B, C); B->type = BLOCK_TERM; }
-html_block_lines(A) ::= html_block_lines(B) html_block_line(C). { A = B; token_chain_append(B, C); }
-html_block_lines ::= html_block_line.
+defs(A) ::= defs(B) def(C). { A = B; token_chain_append(B, token_new_parent(C, BLOCK_DEFINITION)); }
+defs(A) ::= def(B). { A = token_new_parent(B, BLOCK_DEFINITION); }
-html_block_line ::= LINE_CONTINUATION.
-html_block_line ::= LINE_HTML.
+def(A) ::= def(B) LINE_CONTINUATION(C). { A = B; token_chain_append(B, C); }
+def ::= LINE_DEFINITION.
-fenced_block(A) ::= LINE_FENCE_BACKTICK(B) fenced_lines(C) LINE_FENCE_BACKTICK(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); D->child->type = CODE_FENCE; }
-fenced_block(A) ::= LINE_FENCE_BACKTICK(B) fenced_lines(C). { A = B; token_chain_append(B, C); }
-fenced_block(A) ::= LINE_FENCE_BACKTICK_START(B) fenced_lines(C) LINE_FENCE_BACKTICK(D). { A = B; token_chain_append(B, C); token_chain_append(B, D); D->child->type = CODE_FENCE; }
-fenced_block(A) ::= LINE_FENCE_BACKTICK_START(B) fenced_lines(C). { A = B; token_chain_append(B, C); }
+// Empty lines
+empty(A) ::= empty(B) LINE_EMPTY(C). { A = B; token_chain_append(B, C); }
+empty ::= LINE_EMPTY.
-fenced_lines(A) ::= fenced_lines(B) fenced_line(C). { A = B; token_chain_append(B, C); }
-fenced_lines ::= fenced_line.
-fenced_lines ::= .
+
+// Fenced code blocks
+fenced_block(A) ::= fenced(B) LINE_FENCE_BACKTICK(C). { A = B; token_chain_append(B, C); C->child->type = CODE_FENCE; }
+fenced_block ::= fenced.
+
+fenced(A) ::= fenced(B) fenced_line(C). { A = B; token_chain_append(B, C); }
+fenced ::= LINE_FENCE_BACKTICK.
+fenced ::= LINE_FENCE_BACKTICK_START.
fenced_line ::= LINE_CONTINUATION.
fenced_line ::= LINE_EMPTY.
-meta_block(A) ::= LINE_META(B) meta_lines(C). { A = B; token_chain_append(B, C); }
-meta_block ::= LINE_META.
+// HTML
+html_block(A) ::= html_block(B) html_line(C). { A = B; token_chain_append(B, C); }
+html_block ::= LINE_HTML.
+
+html_line ::= LINE_CONTINUATION.
+html_line ::= LINE_HTML.
+
+
+// Indented code blocks
+indented_code(A) ::= indented_code(B) indented_line(C). { A = B; token_chain_append(B, C); }
+indented_code(A) ::= indented_code(B) LINE_EMPTY(C). { A = B; token_chain_append(B, C); }
+indented_code ::= indented_line.
+
+
+// Bulleted lists
+list_bullet(A) ::= list_bullet(B) item_bullet(C). { A = B; token_chain_append(B, C); }
+list_bullet ::= item_bullet.
+
+item_bullet(A) ::= LINE_LIST_BULLETED(B) ext_chunk(C). { A = token_new_parent(B, BLOCK_LIST_ITEM); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_bullet(A) ::= LINE_LIST_BULLETED(B) chunk(C). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_bullet(A) ::= LINE_LIST_BULLETED(B) nested_chunks(C). { A = token_new_parent(B, BLOCK_LIST_ITEM); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_bullet(A) ::= LINE_LIST_BULLETED(B). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); }
-meta_lines(A) ::= meta_lines(B) meta_line(C). { A = B; token_chain_append(B, C); }
-meta_lines ::= meta_line.
+
+// Enumerated lists
+list_enum(A) ::= list_enum(B) item_enum(C). { A = B; token_chain_append(B, C); }
+list_enum ::= item_enum.
+
+item_enum(A) ::= LINE_LIST_ENUMERATED(B) ext_chunk(C). { A = token_new_parent(B, BLOCK_LIST_ITEM); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_enum(A) ::= LINE_LIST_ENUMERATED(B) chunk(C). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_enum(A) ::= LINE_LIST_ENUMERATED(B) nested_chunks(C). { A = token_new_parent(B, BLOCK_LIST_ITEM); token_chain_append(B, C); recursive_parse_list_item(engine, A); }
+item_enum(A) ::= LINE_LIST_ENUMERATED(B). { A = token_new_parent(B, BLOCK_LIST_ITEM_TIGHT); }
+
+
+// Metadata
+meta_block(A) ::= meta_block(B) meta_line(C). { A = B; token_chain_append(B, C); }
+meta_block ::= LINE_META.
meta_line ::= LINE_META.
meta_line ::= LINE_CONTINUATION.
-// Lemon's LALR(1) parser can't properly allow for detecting consecutive definition blocks and concatenating them,
-// because 'para defs para' could be the beginning of the next definition, OR the next regular para.
-// We have to bundle them when exporting, if desired.
-definition_block(A) ::= para(B) defs(C). { A = B; token_chain_append(B, C); B->type = BLOCK_TERM; }
-defs(A) ::= defs(B) def(C). { A = B; token_chain_append(B, C); }
-defs ::= def.
+// Paragraphs
+para(A) ::= LINE_PLAIN(B) chunk(C). { A = B; token_chain_append(B, C); }
+para ::= LINE_PLAIN.
+
+
+// Tables
+table(A) ::= table_header(B) table_body(C). { A = B; token_chain_append(B, C); }
+table ::= table_header.
+
+table_header(A) ::= header_rows(B) LINE_TABLE_SEPARATOR(C). { A = token_new_parent(B, BLOCK_TABLE_HEADER); token_chain_append(B, C); }
-def(A) ::= LINE_DEFINITION(B) def_lines(C). { A = token_new_parent(B, BLOCK_DEFINITION); token_chain_append(B, C); }
-def(A) ::= LINE_DEFINITION(B). { A = token_new_parent(B, BLOCK_DEFINITION); }
+header_rows(A) ::= header_rows(B) LINE_TABLE(C). { A = B; token_chain_append(B, C); }
+header_rows ::= LINE_TABLE.
-def_lines(A) ::= def_lines(B) LINE_CONTINUATION(C). { A = B; token_chain_append(B, C); }
-def_lines ::= LINE_CONTINUATION.
+table_body(A) ::= table_body(B) table_section(C). { A = B; token_chain_append(B, C); }
+table_body ::= table_section.
+
+table_section(A) ::= all_rows(B) LINE_EMPTY(C). { A = token_new_parent(B, BLOCK_TABLE_SECTION); token_chain_append(B, C); }
+table_section(A) ::= all_rows(B). { A = token_new_parent(B, BLOCK_TABLE_SECTION); }
+
+all_rows(A) ::= all_rows(B) row(C). { A = B; token_chain_append(B, C); }
+all_rows ::= row.
+
+row ::= header_rows.
+row ::= LINE_TABLE_SEPARATOR.
// Fallbacks for improper structures
-// para(A) ::= table_section(B) LINE_EMPTY(C). { A = B; token_chain_append(B, C); }
-// para(A) ::= table_section(B) para_lines(C). { A = B; token_chain_append(B, C); }
para(A) ::= all_rows(B). { A = B; }
para ::= defs.
doc ::= blocks.
blocks ::= blocks block.
blocks ::= block.
-block ::= para.
-block ::= indented_code.
block ::= LINE_ATX_1.
block ::= LINE_ATX_2.
block ::= LINE_ATX_3.
block ::= LINE_ATX_4.
block ::= LINE_ATX_5.
block ::= LINE_ATX_6.
-block ::= empty.
-block ::= list_bulleted.
-block ::= list_enumerated.
-block ::= blockquote.
-block ::= table.
block ::= LINE_HR.
+block ::= LINE_TOC.
+block ::= blockquote.
block ::= def_citation.
block ::= def_footnote.
block ::= def_link.
-block ::= html_block.
+block ::= definition_block.
+block ::= empty.
block ::= fenced_block.
+block ::= html_block.
+block ::= indented_code.
+block ::= list_bullet.
+block ::= list_enum.
block ::= meta_block.
-block ::= LINE_TOC.
-block ::= definition_block.
-para ::= LINE_PLAIN para_lines.
-para_lines ::= para_lines para_line.
-indented_code ::= indented_code code_line.
+block ::= para.
+block ::= table.
+chunk ::= chunk chunk_line.
+nested_chunks ::= nested_chunks nested_chunk.
+nested_chunk ::= empty indented_line chunk.
+nested_chunk ::= empty indented_line.
+ext_chunk ::= chunk nested_chunks.
+opt_ext_chunk ::= chunk nested_chunks.
+blockquote ::= blockquote quote_line.
+def_citation ::= LINE_DEF_CITATION tail.
+def_footnote ::= LINE_DEF_FOOTNOTE tail.
+def_link ::= LINE_DEF_LINK chunk.
+definition_block ::= para defs.
+defs ::= defs def.
+defs ::= def.
+def ::= def LINE_CONTINUATION.
empty ::= empty LINE_EMPTY.
-blockquote ::= LINE_BLOCKQUOTE quote_lines.
-quote_lines ::= quote_lines quote_line.
-list_bulleted ::= list_bulleted item_bulleted.
-item_bulleted ::= LINE_LIST_BULLETED para_lines cont_blocks.
-item_bulleted ::= LINE_LIST_BULLETED para_lines.
-item_bulleted ::= LINE_LIST_BULLETED cont_blocks.
-item_bulleted ::= LINE_LIST_BULLETED.
-list_enumerated ::= list_enumerated item_enumerated.
-item_enumerated ::= LINE_LIST_ENUMERATED para_lines cont_blocks.
-item_enumerated ::= LINE_LIST_ENUMERATED para_lines.
-item_enumerated ::= LINE_LIST_ENUMERATED cont_blocks.
-item_enumerated ::= LINE_LIST_ENUMERATED.
-cont_blocks ::= cont_blocks cont_block.
-cont_block ::= empty indented_line para_lines.
-cont_block ::= empty indented_line.
+fenced_block ::= fenced LINE_FENCE_BACKTICK.
+fenced ::= fenced fenced_line.
+html_block ::= html_block html_line.
+indented_code ::= indented_code indented_line.
+indented_code ::= indented_code LINE_EMPTY.
+list_bullet ::= list_bullet item_bullet.
+item_bullet ::= LINE_LIST_BULLETED ext_chunk.
+item_bullet ::= LINE_LIST_BULLETED chunk.
+item_bullet ::= LINE_LIST_BULLETED nested_chunks.
+item_bullet ::= LINE_LIST_BULLETED.
+list_enum ::= list_enum item_enum.
+item_enum ::= LINE_LIST_ENUMERATED ext_chunk.
+item_enum ::= LINE_LIST_ENUMERATED chunk.
+item_enum ::= LINE_LIST_ENUMERATED nested_chunks.
+item_enum ::= LINE_LIST_ENUMERATED.
+meta_block ::= meta_block meta_line.
+para ::= LINE_PLAIN chunk.
+table ::= table_header table_body.
table_header ::= header_rows LINE_TABLE_SEPARATOR.
+header_rows ::= header_rows LINE_TABLE.
+table_body ::= table_body table_section.
table_section ::= all_rows LINE_EMPTY.
table_section ::= all_rows.
all_rows ::= all_rows row.
-table ::= table_header table_body.
-table_body ::= table_body table_section.
-header_rows ::= header_rows LINE_TABLE.
-def_citation ::= LINE_DEF_CITATION para_lines cont_blocks.
-def_citation ::= LINE_DEF_CITATION para_lines.
-def_citation ::= LINE_DEF_CITATION cont_blocks.
-def_footnote ::= LINE_DEF_FOOTNOTE para_lines cont_blocks.
-def_footnote ::= LINE_DEF_FOOTNOTE para_lines.
-def_footnote ::= LINE_DEF_FOOTNOTE cont_blocks.
-def_link ::= LINE_DEF_LINK para_lines.
-html_block ::= LINE_HTML html_block_lines.
-html_block_lines ::= html_block_lines html_block_line.
-fenced_block ::= LINE_FENCE_BACKTICK fenced_lines LINE_FENCE_BACKTICK.
-fenced_block ::= LINE_FENCE_BACKTICK fenced_lines.
-fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines LINE_FENCE_BACKTICK.
-fenced_block ::= LINE_FENCE_BACKTICK_START fenced_lines.
-fenced_lines ::= fenced_lines fenced_line.
-meta_block ::= LINE_META meta_lines.
-meta_lines ::= meta_lines meta_line.
-definition_block ::= para defs.
-defs ::= defs def.
-def ::= LINE_DEFINITION def_lines.
-def ::= LINE_DEFINITION.
-def_lines ::= def_lines LINE_CONTINUATION.
para ::= all_rows.
-para ::= LINE_PLAIN.
-para_lines ::= para_line.
-para_line ::= LINE_CONTINUATION.
-indented_code ::= indented_line.
-code_line ::= indented_line.
-code_line ::= LINE_EMPTY.
+chunk ::= chunk_line.
+chunk_line ::= LINE_CONTINUATION.
+nested_chunks ::= nested_chunk.
+nested_chunk ::= empty.
indented_line ::= LINE_INDENTED_TAB.
indented_line ::= LINE_INDENTED_SPACE.
-empty ::= LINE_EMPTY.
+opt_ext_chunk ::= chunk.
+tail ::= opt_ext_chunk.
+tail ::= nested_chunks.
blockquote ::= LINE_BLOCKQUOTE.
-quote_lines ::= quote_line.
quote_line ::= LINE_BLOCKQUOTE.
quote_line ::= LINE_CONTINUATION.
-list_bulleted ::= item_bulleted.
-list_enumerated ::= item_enumerated.
-cont_blocks ::= cont_block.
-cont_block ::= empty.
-all_rows ::= row.
-row ::= header_rows.
-row ::= LINE_TABLE_SEPARATOR.
-table ::= table_header.
-table_body ::= table_section.
-header_rows ::= LINE_TABLE.
def_citation ::= LINE_DEF_CITATION.
def_footnote ::= LINE_DEF_FOOTNOTE.
def_link ::= LINE_DEF_LINK.
-html_block ::= LINE_HTML.
-html_block_lines ::= html_block_line.
-html_block_line ::= LINE_CONTINUATION.
-html_block_line ::= LINE_HTML.
-fenced_lines ::= fenced_line.
-fenced_lines ::=.
+def ::= LINE_DEFINITION.
+empty ::= LINE_EMPTY.
+fenced_block ::= fenced.
+fenced ::= LINE_FENCE_BACKTICK.
+fenced ::= LINE_FENCE_BACKTICK_START.
fenced_line ::= LINE_CONTINUATION.
fenced_line ::= LINE_EMPTY.
+html_block ::= LINE_HTML.
+html_line ::= LINE_CONTINUATION.
+html_line ::= LINE_HTML.
+indented_code ::= indented_line.
+list_bullet ::= item_bullet.
+list_enum ::= item_enum.
meta_block ::= LINE_META.
-meta_lines ::= meta_line.
meta_line ::= LINE_META.
meta_line ::= LINE_CONTINUATION.
-defs ::= def.
-def_lines ::= LINE_CONTINUATION.
+para ::= LINE_PLAIN.
+table ::= table_header.
+header_rows ::= LINE_TABLE.
+table_body ::= table_section.
+all_rows ::= row.
+row ::= header_rows.
+row ::= LINE_TABLE_SEPARATOR.
para ::= defs.