]> granicus.if.org Git - multimarkdown/commitdiff
ADDED: Tweak parser to pazz fuzz test and test suite
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Tue, 7 Feb 2017 03:31:25 +0000 (22:31 -0500)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Tue, 7 Feb 2017 03:31:25 +0000 (22:31 -0500)
src/parser.c
src/parser.out
src/parser.y
test/parser_test.y

index b7740ea1936c25451eea18fc7a8ad4f7d0496b1a..3c72a7b72468fe756c4acf5661c1c04f0b401e44 100644 (file)
@@ -107,16 +107,16 @@ typedef union {
 #define ParseARG_FETCH  mmd_engine * engine  = yypParser->engine 
 #define ParseARG_STORE yypParser->engine  = engine 
 #define YYFALLBACK 1
-#define YYNSTATE             47
-#define YYNRULE              109
-#define YY_MAX_SHIFT         46
-#define YY_MIN_SHIFTREDUCE   111
-#define YY_MAX_SHIFTREDUCE   219
-#define YY_MIN_REDUCE        220
-#define YY_MAX_REDUCE        328
-#define YY_ERROR_ACTION      329
-#define YY_ACCEPT_ACTION     330
-#define YY_NO_ACTION         331
+#define YYNSTATE             48
+#define YYNRULE              110
+#define YY_MAX_SHIFT         47
+#define YY_MIN_SHIFTREDUCE   112
+#define YY_MAX_SHIFTREDUCE   221
+#define YY_MIN_REDUCE        222
+#define YY_MAX_REDUCE        331
+#define YY_ERROR_ACTION      332
+#define YY_ACCEPT_ACTION     333
+#define YY_NO_ACTION         334
 /************* End control #defines *******************************************/
 
 /* Define the yytestcase() macro to be a no-op if is not already defined
@@ -188,79 +188,81 @@ typedef union {
 **  yy_default[]       Default action for each state.
 **
 *********** Begin parsing tables **********************************************/
-#define YY_ACTTAB_COUNT (197)
+#define YY_ACTTAB_COUNT (203)
 static const YYACTIONTYPE yy_action[] = {
- /*     0 */   220,   23,  138,  138,  189,  190,  202,   15,  116,  117,
- /*    10 */   118,  119,  120,  121,  127,   16,    5,    4,    3,    2,
- /*    20 */    17,   14,   13,  134,  191,   12,   23,   33,   33,  189,
- /*    30 */   190,  202,   15,  116,  117,  118,  119,  120,  121,  127,
- /*    40 */    16,    5,    4,    3,    2,   17,   14,   13,  134,  191,
- /*    50 */    12,  330,    1,  113,   29,   11,   45,   40,   38,  125,
- /*    60 */   126,  128,  129,  130,  131,  132,  133,  135,   43,   22,
- /*    70 */    22,   11,   30,   30,   40,  217,   38,  202,   10,   44,
- /*    80 */   112,   29,   11,   45,   40,   38,  125,  126,  128,  129,
- /*    90 */   130,  131,  132,  133,  135,   32,   32,  216,   11,   32,
- /*   100 */   208,   40,  191,   38,  209,   10,   44,    6,    6,  137,
- /*   110 */    32,    7,    7,   32,   18,   19,   18,   19,   20,  185,
- /*   120 */    20,  212,    8,    8,   32,    9,    9,   32,   32,   24,
- /*   130 */   174,   24,   26,   41,   26,  212,  185,  137,  212,  172,
- /*   140 */   137,  137,  213,   21,  160,   21,   25,   27,   25,   27,
- /*   150 */   189,  190,   32,  170,  189,  190,  213,  191,   28,  213,
- /*   160 */    31,   31,  156,   34,   34,  195,   35,   35,   36,   36,
- /*   170 */   188,   43,  159,  152,  139,   37,   37,  194,   42,   42,
- /*   180 */   155,   39,   39,    4,  160,  176,  169,  141,  137,    5,
- /*   190 */   219,  142,  147,  139,   46,  178,  181,
+ /*     0 */   222,   23,  139,  139,  190,  191,  203,   15,  117,  118,
+ /*    10 */   119,  120,  121,  122,  128,   16,    5,    4,    3,    2,
+ /*    20 */    17,   14,   13,  135,  192,   12,   42,   23,   33,   33,
+ /*    30 */   190,  191,  203,   15,  117,  118,  119,  120,  121,  122,
+ /*    40 */   128,   16,    5,    4,    3,    2,   17,   14,   13,  135,
+ /*    50 */   192,   12,   42,  333,    1,  114,   29,   11,   46,   41,
+ /*    60 */    39,  126,  127,  129,  130,  131,  132,  133,  134,  136,
+ /*    70 */    44,   22,   22,   11,   30,   30,   41,  196,   39,  203,
+ /*    80 */    10,   45,   31,   31,  209,  218,   34,   34,  210,  195,
+ /*    90 */    36,   36,  113,   29,   11,   46,   41,   39,  126,  127,
+ /*   100 */   129,  130,  131,  132,  133,  134,  136,  217,   35,   35,
+ /*   110 */    11,  213,   32,   41,  192,   39,  186,   10,   45,  175,
+ /*   120 */    37,   37,   44,  160,    6,    6,   32,   36,   36,   32,
+ /*   130 */    32,   18,  214,   18,  190,  191,  190,  191,    7,    7,
+ /*   140 */    32,    8,    8,  138,   32,   20,  213,   20,   24,   19,
+ /*   150 */    24,   19,    9,    9,  189,  213,  140,  138,   32,   26,
+ /*   160 */   161,   26,   32,   21,  173,   21,  186,  214,   32,   38,
+ /*   170 */    38,  138,   42,  171,  177,  138,  214,   25,  157,   25,
+ /*   180 */   170,   27,  156,   27,   40,   40,  161,  192,   28,  153,
+ /*   190 */     4,   43,   43,  179,  142,  138,  220,    5,  148,  143,
+ /*   200 */    47,  140,  182,
 };
 static const YYCODETYPE yy_lookahead[] = {
  /*     0 */     0,    1,   47,   48,    4,    5,    6,    7,    8,    9,
  /*    10 */    10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
- /*    20 */    20,   21,   22,   23,   24,   25,    1,   63,   64,    4,
- /*    30 */     5,    6,    7,    8,    9,   10,   11,   12,   13,   14,
- /*    40 */    15,   16,   17,   18,   19,   20,   21,   22,   23,   24,
- /*    50 */    25,   28,   29,   30,   31,   32,   33,   34,   35,   36,
- /*    60 */    37,   38,   39,   40,   41,   42,   43,   44,   56,   57,
- /*    70 */    58,   48,   61,   62,   51,    3,   53,    6,   55,   56,
- /*    80 */    30,   31,   32,   33,   34,   35,   36,   37,   38,   39,
- /*    90 */    40,   41,   42,   43,   44,   33,   33,   25,   48,   33,
- /*   100 */     3,   51,   24,   53,    7,   55,   56,   45,   46,   46,
- /*   110 */    33,   45,   46,   33,   52,   52,   54,   54,   52,    3,
- /*   120 */    54,    3,   45,   46,   33,   45,   46,   33,   33,   52,
- /*   130 */    62,   54,   52,   26,   54,    3,    3,   46,    3,   21,
- /*   140 */    46,   46,   24,   52,    6,   54,   52,   52,   54,   54,
- /*   150 */     4,    5,   33,   21,    4,    5,   24,   24,   48,   24,
- /*   160 */    61,   62,   24,   59,   60,    3,   49,   50,   45,   46,
- /*   170 */    24,   56,   57,   54,   24,   45,   46,   15,   65,   66,
- /*   180 */     2,   45,   46,   17,    6,   64,   60,   50,   46,   16,
- /*   190 */     3,   51,   53,   24,   67,   66,    3,
+ /*    20 */    20,   21,   22,   23,   24,   25,   26,    1,   63,   64,
+ /*    30 */     4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
+ /*    40 */    14,   15,   16,   17,   18,   19,   20,   21,   22,   23,
+ /*    50 */    24,   25,   26,   28,   29,   30,   31,   32,   33,   34,
+ /*    60 */    35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+ /*    70 */    56,   57,   58,   48,   61,   62,   51,    3,   53,    6,
+ /*    80 */    55,   56,   61,   62,    3,    3,   59,   60,    7,   15,
+ /*    90 */    65,   66,   30,   31,   32,   33,   34,   35,   36,   37,
+ /*   100 */    38,   39,   40,   41,   42,   43,   44,   25,   49,   50,
+ /*   110 */    48,    3,   33,   51,   24,   53,    3,   55,   56,   62,
+ /*   120 */    45,   46,   56,   57,   45,   46,   33,   65,   66,   33,
+ /*   130 */    33,   52,   24,   54,    4,    5,    4,    5,   45,   46,
+ /*   140 */    33,   45,   46,   46,   33,   52,    3,   54,   52,   52,
+ /*   150 */    54,   54,   45,   46,   24,    3,   24,   46,   33,   52,
+ /*   160 */     6,   54,   33,   52,   21,   54,    3,   24,   33,   45,
+ /*   170 */    46,   46,   26,   21,   64,   46,   24,   52,   24,   54,
+ /*   180 */    60,   52,    2,   54,   45,   46,    6,   24,   48,   54,
+ /*   190 */    17,   65,   66,   66,   50,   46,    3,   16,   53,   51,
+ /*   200 */    67,   24,    3,
 };
-#define YY_SHIFT_USE_DFLT (197)
-#define YY_SHIFT_COUNT    (46)
+#define YY_SHIFT_USE_DFLT (203)
+#define YY_SHIFT_COUNT    (47)
 #define YY_SHIFT_MIN      (0)
-#define YY_SHIFT_MAX      (193)
+#define YY_SHIFT_MAX      (199)
 static const unsigned char yy_shift_ofst[] = {
- /*     0 */    25,    0,  133,  133,  133,  133,  133,  133,  133,  133,
- /*    10 */    71,  146,   72,  135,  135,   97,  162,  116,   78,   78,
- /*    20 */    78,   78,   71,  116,   78,   78,   78,   78,  116,  107,
- /*    30 */   118,  132,  150,   72,   97,  162,  116,  116,  166,  116,
- /*    40 */   173,  187,  107,  138,  178,  169,  193,
+ /*     0 */    26,    0,  163,  163,  163,  163,  163,  163,  163,  163,
+ /*    10 */    73,  130,   82,  108,  108,   81,   74,  113,   90,   90,
+ /*    20 */    90,   90,   73,  113,   90,   90,   90,   90,  113,  146,
+ /*    30 */   143,  152,  132,   82,   81,   74,  146,  113,  113,  173,
+ /*    40 */   113,  181,  193,  146,  154,  180,  177,  199,
 };
 #define YY_REDUCE_USE_DFLT (-46)
-#define YY_REDUCE_COUNT (42)
+#define YY_REDUCE_COUNT (43)
 #define YY_REDUCE_MIN   (-45)
-#define YY_REDUCE_MAX   (142)
+#define YY_REDUCE_MAX   (149)
 static const short yy_reduce_ofst[] = {
- /*     0 */    23,   50,   62,   66,   77,   80,   63,   91,   94,   95,
- /*    10 */    12,  -45,  -36,   11,   99,  104,  117,  123,  119,  119,
- /*    20 */   119,  119,  115,  130,  119,  119,  119,  119,  136,  113,
- /*    30 */    68,   68,  110,  121,  126,  137,  142,  142,  139,  142,
- /*    40 */   140,  127,  129,
+ /*     0 */    25,   62,   79,   93,   96,  107,   97,  111,  125,  129,
+ /*    10 */    14,  -45,  -35,   13,   21,   27,   59,   75,  135,  135,
+ /*    20 */   135,  135,   66,  124,  135,  135,  135,  135,  139,  126,
+ /*    30 */    57,   57,  140,  110,  120,  144,  127,  149,  149,  145,
+ /*    40 */   149,  148,  133,  127,
 };
 static const YYACTIONTYPE yy_default[] = {
- /*     0 */   329,  329,  313,  312,  260,  255,  274,  271,  258,  253,
- /*    10 */   309,  224,  323,  320,  320,  315,  301,  314,  275,  273,
- /*    20 */   272,  270,  267,  292,  259,  257,  254,  252,  263,  223,
- /*    30 */   282,  280,  308,  284,  277,  249,  276,  245,  233,  262,
- /*    40 */   232,  289,  286,  266,  291,  231,  288,
+ /*     0 */   332,  332,  315,  314,  262,  257,  276,  273,  260,  255,
+ /*    10 */   311,  226,  325,  322,  322,  317,  303,  316,  277,  275,
+ /*    20 */   274,  272,  269,  294,  261,  259,  256,  254,  265,  225,
+ /*    30 */   284,  282,  310,  286,  279,  251,  331,  278,  247,  235,
+ /*    40 */   264,  234,  291,  288,  268,  293,  233,  290,
 };
 /********** End of lemon-generated parsing tables *****************************/
 
@@ -521,6 +523,7 @@ static const char *const yyRuleName[] = {
  /* 106 */ "meta_line ::= LINE_CONTINUATION",
  /* 107 */ "defs ::= def",
  /* 108 */ "def_lines ::= LINE_CONTINUATION",
+ /* 109 */ "para ::= defs",
 };
 #endif /* NDEBUG */
 
@@ -978,6 +981,7 @@ static const struct {
   { 64, 1 },
   { 65, 1 },
   { 67, 1 },
+  { 31, 1 },
 };
 
 static void yy_accept(yyParser*);  /* Forward Declaration */
@@ -1290,6 +1294,7 @@ static void yy_reduce(
       /* (106) meta_line ::= LINE_CONTINUATION */ yytestcase(yyruleno==106);
       /* (107) defs ::= def (OPTIMIZED OUT) */ assert(yyruleno!=107);
       /* (108) def_lines ::= LINE_CONTINUATION */ yytestcase(yyruleno==108);
+      /* (109) para ::= defs */ yytestcase(yyruleno==109);
         break;
 /********** End reduce actions ************************************************/
   };
index 9d215991aa516e29077f8a9328d8851bae4edfff..d352b90eacbfe3e501753f804685bea5491d6af4 100644 (file)
@@ -70,7 +70,12 @@ State 0:
           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 ::= * LINE_DEFINITION
           para ::= * table_rows
+          para ::= * defs
 
                     LINE_PLAIN shift        23     
              LINE_INDENTED_TAB shift-reduce 78     indented_line ::= LINE_INDENTED_TAB
@@ -95,14 +100,15 @@ State 0:
                       LINE_TOC shift-reduce 23     block ::= LINE_TOC
                     LINE_EMPTY shift-reduce 80     empty ::= LINE_EMPTY
                      LINE_META shift        12     
+               LINE_DEFINITION shift        42     
                            doc accept
                         blocks shift        1      
                          block shift-reduce 2      blocks ::= block
                           para shift        29     
                  indented_code shift        11     
-                         empty shift        45     
-                 list_bulleted shift        40     
-               list_enumerated shift        38     
+                         empty shift        46     
+                 list_bulleted shift        41     
+               list_enumerated shift        39     
                     blockquote shift-reduce 14     block ::= blockquote
                          table shift-reduce 15     block ::= table
                   def_citation shift-reduce 17     block ::= def_citation
@@ -113,10 +119,12 @@ State 0:
                     meta_block shift-reduce 22     block ::= meta_block
               definition_block shift-reduce 24     block ::= definition_block
                  indented_line shift        11       /* because indented_line==indented_code */
-                 item_bulleted shift        40       /* because item_bulleted==list_bulleted */
-               item_enumerated shift        38       /* because item_enumerated==list_enumerated */
+                 item_bulleted shift        41       /* because item_bulleted==list_bulleted */
+               item_enumerated shift        39       /* because item_enumerated==list_enumerated */
                   table_header shift        10     
-                    table_rows shift        44     
+                    table_rows shift        45     
+                          defs shift        36     
+                           def shift        36       /* because def==defs */
 
 State 1:
       (0) doc ::= blocks *
@@ -189,7 +197,12 @@ State 1:
           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 ::= * LINE_DEFINITION
           para ::= * table_rows
+          para ::= * defs
 
                              $ reduce       0      doc ::= blocks
                     LINE_PLAIN shift        23     
@@ -215,12 +228,13 @@ State 1:
                       LINE_TOC shift-reduce 23     block ::= LINE_TOC
                     LINE_EMPTY shift-reduce 80     empty ::= LINE_EMPTY
                      LINE_META shift        12     
+               LINE_DEFINITION shift        42     
                          block shift-reduce 1      blocks ::= blocks block
                           para shift        29     
                  indented_code shift        11     
-                         empty shift        45     
-                 list_bulleted shift        40     
-               list_enumerated shift        38     
+                         empty shift        46     
+                 list_bulleted shift        41     
+               list_enumerated shift        39     
                     blockquote shift-reduce 14     block ::= blockquote
                          table shift-reduce 15     block ::= table
                   def_citation shift-reduce 17     block ::= def_citation
@@ -231,10 +245,12 @@ State 1:
                     meta_block shift-reduce 22     block ::= meta_block
               definition_block shift-reduce 24     block ::= definition_block
                  indented_line shift        11       /* because indented_line==indented_code */
-                 item_bulleted shift        40       /* because item_bulleted==list_bulleted */
-               item_enumerated shift        38       /* because item_enumerated==list_enumerated */
+                 item_bulleted shift        41       /* because item_bulleted==list_bulleted */
+               item_enumerated shift        39       /* because item_enumerated==list_enumerated */
                   table_header shift        10     
-                    table_rows shift        44     
+                    table_rows shift        45     
+                          defs shift        36     
+                           def shift        36       /* because def==defs */
 
 State 2:
           para_lines ::= * para_lines para_line
@@ -440,7 +456,7 @@ State 10:
 
                     LINE_TABLE shift-reduce 91     table_rows ::= LINE_TABLE
                     LINE_TABLE reduce       89      ** Parsing conflict **
-                    table_rows shift        43     
+                    table_rows shift        44     
                  table_section shift        22       /* because table_section==table_body */
                     table_body shift        22     
                      {default} reduce       89     table ::= table_header
@@ -550,8 +566,8 @@ State 17:
      (94) def_link ::= LINE_DEF_LINK *
 
              LINE_CONTINUATION shift-reduce 74     para_line ::= LINE_CONTINUATION
-                    para_lines shift        36     
-                     para_line shift        36       /* because para_line==para_lines */
+                    para_lines shift        37     
+                     para_line shift        37       /* because para_line==para_lines */
                      {default} reduce       94     def_link ::= LINE_DEF_LINK
 
 State 18:
@@ -624,7 +640,7 @@ State 22:
 
                     LINE_TABLE shift-reduce 91     table_rows ::= LINE_TABLE
                     LINE_TABLE reduce       47      ** Parsing conflict **
-                    table_rows shift        43     
+                    table_rows shift        44     
                  table_section shift-reduce 48     table_body ::= table_body table_section
                      {default} reduce       47     table ::= table_header table_body
 
@@ -636,8 +652,8 @@ State 23:
           para_line ::= * LINE_CONTINUATION
 
              LINE_CONTINUATION shift-reduce 74     para_line ::= LINE_CONTINUATION
-                    para_lines shift        37     
-                     para_line shift        37       /* because para_line==para_lines */
+                    para_lines shift        38     
+                     para_line shift        38       /* because para_line==para_lines */
                      {default} reduce       72     para ::= LINE_PLAIN
 
 State 24:
@@ -708,8 +724,8 @@ State 28:
      (43) cont_block ::= empty indented_line *
 
              LINE_CONTINUATION shift-reduce 74     para_line ::= LINE_CONTINUATION
-                    para_lines shift        39     
-                     para_line shift        39       /* because para_line==para_lines */
+                    para_lines shift        40     
+                     para_line shift        40       /* because para_line==para_lines */
                      {default} reduce       43     cont_block ::= empty indented_line
 
 State 29:
@@ -720,9 +736,10 @@ State 29:
           def ::= * LINE_DEFINITION def_lines
           def ::= * LINE_DEFINITION
 
-               LINE_DEFINITION shift        41     
-                          defs shift        42     
-                           def shift        42       /* because def==defs */
+               LINE_DEFINITION shift        42     
+               LINE_DEFINITION reduce       3       ** Parsing conflict **
+                          defs shift        43     
+                           def shift        43       /* because def==defs */
                      {default} reduce       3      block ::= para
 
 State 30:
@@ -809,6 +826,17 @@ State 35:
                      {default} reduce       29     blockquote ::= LINE_BLOCKQUOTE quote_lines
 
 State 36:
+          defs ::= defs * def
+          def ::= * LINE_DEFINITION def_lines
+          def ::= * LINE_DEFINITION
+    (109) para ::= defs *
+
+               LINE_DEFINITION shift        42     
+               LINE_DEFINITION reduce       109     ** Parsing conflict **
+                           def shift-reduce 67     defs ::= defs def
+                     {default} reduce       109    para ::= defs
+
+State 37:
           para_lines ::= para_lines * para_line
           para_line ::= * LINE_CONTINUATION
      (56) def_link ::= LINE_DEF_LINK para_lines *
@@ -817,7 +845,7 @@ State 36:
                      para_line shift-reduce 26     para_lines ::= para_lines para_line
                      {default} reduce       56     def_link ::= LINE_DEF_LINK para_lines
 
-State 37:
+State 38:
      (25) para ::= LINE_PLAIN para_lines *
           para_lines ::= para_lines * para_line
           para_line ::= * LINE_CONTINUATION
@@ -826,7 +854,7 @@ State 37:
                      para_line shift-reduce 26     para_lines ::= para_lines para_line
                      {default} reduce       25     para ::= LINE_PLAIN para_lines
 
-State 38:
+State 39:
      (13) block ::= list_enumerated *
           list_enumerated ::= list_enumerated * item_enumerated
           item_enumerated ::= * LINE_LIST_ENUMERATED para_lines cont_blocks
@@ -839,7 +867,7 @@ State 38:
                item_enumerated shift-reduce 36     list_enumerated ::= list_enumerated item_enumerated
                      {default} reduce       13     block ::= list_enumerated
 
-State 39:
+State 40:
           para_lines ::= para_lines * para_line
           para_line ::= * LINE_CONTINUATION
      (42) cont_block ::= empty indented_line para_lines *
@@ -848,7 +876,7 @@ State 39:
                      para_line shift-reduce 26     para_lines ::= para_lines para_line
                      {default} reduce       42     cont_block ::= empty indented_line para_lines
 
-State 40:
+State 41:
      (12) block ::= list_bulleted *
           list_bulleted ::= list_bulleted * item_bulleted
           item_bulleted ::= * LINE_LIST_BULLETED para_lines cont_blocks
@@ -861,27 +889,28 @@ State 40:
                  item_bulleted shift-reduce 31     list_bulleted ::= list_bulleted item_bulleted
                      {default} reduce       12     block ::= list_bulleted
 
-State 41:
+State 42:
           def ::= LINE_DEFINITION * def_lines
      (69) def ::= LINE_DEFINITION *
           def_lines ::= * def_lines LINE_CONTINUATION
           def_lines ::= * LINE_CONTINUATION
 
              LINE_CONTINUATION shift-reduce 108    def_lines ::= LINE_CONTINUATION
-                     def_lines shift        46     
+                     def_lines shift        47     
                      {default} reduce       69     def ::= LINE_DEFINITION
 
-State 42:
+State 43:
      (66) definition_block ::= para defs *
           defs ::= defs * def
           def ::= * LINE_DEFINITION def_lines
           def ::= * LINE_DEFINITION
 
-               LINE_DEFINITION shift        41     
+               LINE_DEFINITION shift        42     
+               LINE_DEFINITION reduce       66      ** Parsing conflict **
                            def shift-reduce 67     defs ::= defs def
                      {default} reduce       66     definition_block ::= para defs
 
-State 43:
+State 44:
           table_section ::= table_rows * LINE_EMPTY
      (46) table_section ::= table_rows *
           table_rows ::= table_rows * LINE_TABLE
@@ -892,7 +921,7 @@ State 43:
                     LINE_EMPTY reduce       46      ** Parsing conflict **
                      {default} reduce       46     table_section ::= table_rows
 
-State 44:
+State 45:
           table_header ::= table_rows * LINE_TABLE_SEPARATOR
           table_rows ::= table_rows * LINE_TABLE
      (71) para ::= table_rows *
@@ -902,7 +931,7 @@ State 44:
                     LINE_TABLE reduce       71      ** Parsing conflict **
                      {default} reduce       71     para ::= table_rows
 
-State 45:
+State 46:
      (11) block ::= empty *
           empty ::= empty * LINE_EMPTY
 
@@ -910,7 +939,7 @@ State 45:
                     LINE_EMPTY reduce       11      ** Parsing conflict **
                      {default} reduce       11     block ::= empty
 
-State 46:
+State 47:
      (68) def ::= LINE_DEFINITION def_lines *
           def_lines ::= def_lines * LINE_CONTINUATION
 
@@ -947,10 +976,10 @@ Symbols:
    25: LINE_META
    26: LINE_DEFINITION
    27: error:
-   28: doc: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META
-   29: blocks: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META
-   30: block: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META
-   31: para: LINE_PLAIN LINE_TABLE
+   28: doc: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
+   29: blocks: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
+   30: block: LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE LINE_TABLE LINE_HTML LINE_ATX_1 LINE_ATX_2 LINE_ATX_3 LINE_ATX_4 LINE_ATX_5 LINE_ATX_6 LINE_HR LINE_BLOCKQUOTE LINE_LIST_BULLETED LINE_LIST_ENUMERATED LINE_DEF_CITATION LINE_DEF_FOOTNOTE LINE_DEF_LINK LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START LINE_TOC LINE_EMPTY LINE_META LINE_DEFINITION
+   31: para: LINE_PLAIN LINE_TABLE LINE_DEFINITION
    32: indented_code: LINE_INDENTED_TAB LINE_INDENTED_SPACE
    33: empty: LINE_EMPTY
    34: list_bulleted: LINE_LIST_BULLETED
@@ -963,7 +992,7 @@ Symbols:
    41: html_block: LINE_HTML
    42: fenced_block: LINE_FENCE_BACKTICK LINE_FENCE_BACKTICK_START
    43: meta_block: LINE_META
-   44: definition_block: LINE_PLAIN LINE_TABLE
+   44: definition_block: LINE_PLAIN 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
index 53728df750ab89f8b635182bdf5579bf7b8d2f32..9dc85983d9fef9279f19403923b4895a2289c9eb 100644 (file)
@@ -62,7 +62,7 @@
 
 %extra_argument { mmd_engine * engine }
 
-%fallback LINE_PLAIN LINE_TABLE_SEPARATOR.
+%fallback LINE_PLAIN LINE_TABLE_SEPARATOR .
 
 %fallback LINE_CONTINUATION LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE  LINE_TABLE.
 
@@ -246,8 +246,8 @@ def_lines                   ::= LINE_CONTINUATION.
 // Fallbacks for improper structures
 // para(A)                             ::= table_section(B) LINE_EMPTY(C).                     { A = B; token_chain_append(B, C); }
 // para(A)                             ::= table_section(B) para_lines(C).                     { A = B; token_chain_append(B, C); }
-para(A)                                        ::= table_rows(B).                                              { A = B; }
-
+para(A)                                ::= table_rows(B).                                                      { A = B; }
+para                           ::= defs.
 
 
 //
index 519d7b806ba25bd872afa4d8a1fb5a2539d460e3..32a7c85b8527830e87aeea606f93241928018ef1 100644 (file)
@@ -67,7 +67,8 @@
 
 // Manually copy fallbacks from `parser.y` here
 
-%fallback LINE_PLAIN LINE_TABLE_SEPARATOR LINE_DEFINITION.
+//%fallback LINE_PLAIN LINE_TABLE_SEPARATOR LINE_DEFINITION.
+%fallback LINE_PLAIN LINE_TABLE_SEPARATOR.
 
 %fallback LINE_CONTINUATION LINE_PLAIN LINE_INDENTED_TAB LINE_INDENTED_SPACE  LINE_TABLE.
 
@@ -122,8 +123,8 @@ cont_block ::= empty indented_line para_lines.
 cont_block ::= empty indented_line.
 table_header ::= table_rows LINE_TABLE_SEPARATOR.
 table_section ::= table_rows LINE_EMPTY.
+table_section ::= table_rows.
 table ::= table_header table_body.
-table ::= table_header.
 table_body ::= table_body table_section.
 table_rows ::= table_rows LINE_TABLE.
 def_citation ::= LINE_DEF_CITATION para_lines cont_blocks.
@@ -140,7 +141,6 @@ 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.
-fenced_lines ::= .
 meta_block ::= LINE_META meta_lines.
 meta_lines ::= meta_lines meta_line.
 definition_block ::= para defs.
@@ -166,6 +166,7 @@ list_bulleted ::= item_bulleted.
 list_enumerated ::= item_enumerated.
 cont_blocks ::= cont_block.
 cont_block ::= empty.
+table ::= table_header.
 table_body ::= table_section.
 table_rows ::= LINE_TABLE.
 def_citation ::= LINE_DEF_CITATION.
@@ -176,6 +177,7 @@ html_block_lines ::= html_block_line.
 html_block_line ::= LINE_CONTINUATION.
 html_block_line ::= LINE_HTML.
 fenced_lines ::= fenced_line.
+fenced_lines ::=.
 fenced_line ::= LINE_CONTINUATION.
 fenced_line ::= LINE_EMPTY.
 meta_block ::= LINE_META.
@@ -184,8 +186,7 @@ meta_line ::= LINE_META.
 meta_line ::= LINE_CONTINUATION.
 defs ::= def.
 def_lines ::= LINE_CONTINUATION.
-
-
+para ::= defs.
 
 //
 // Additional Configuration
@@ -204,7 +205,7 @@ def_lines ::= LINE_CONTINUATION.
 
        #define kMaxToken 26
 
-       int i,j,k,l,m;
+       int i,j,k,l,m, n;
 
 int main(int argc, char** argv) {
 
@@ -222,6 +223,7 @@ int main(int argc, char** argv) {
        k = 0;
        l = 0;
        m = 0;
+       n = 0;
 
        for (i = 1; i <= kMaxToken; ++i)
        {
@@ -305,7 +307,7 @@ int main(int argc, char** argv) {
                }
        }
 
-       return(0);
+//     return(0);
 
        fprintf(stderr, "\nFive line tests\n");
 
@@ -338,6 +340,47 @@ int main(int argc, char** argv) {
                        }
                }
        }
+
+       return(0);
+
+       // Six cycles takes quite a while
+
+       fprintf(stderr, "\nSix line tests\n");
+
+       i = 0;
+       j = 0;
+       k = 0;
+       l = 0;
+       m = 0;
+       n = 0;
+
+       for (i = 1; i <= kMaxToken; ++i)
+       {
+               fprintf(stderr, "%d\n", i);
+               
+               for (j = 1; j <= kMaxToken; ++j) {
+
+                       for (k = 1; k <= kMaxToken; ++k) {
+
+                               for (l = 1; l <= kMaxToken; ++l) {
+
+                                       for (m = 1; m <= kMaxToken; ++m) {      
+
+                                               for (n = 1; n <= kMaxToken; ++n) {      
+                                                       Parse(pParser, i, NULL);
+                                                       Parse(pParser, j, NULL);
+                                                       Parse(pParser, k, NULL);
+                                                       Parse(pParser, l, NULL);
+                                                       Parse(pParser, m, NULL);
+                                                       Parse(pParser, n, NULL);
+
+                                                       Parse(pParser, 0, NULL);
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
 }
 
 }
@@ -360,6 +403,6 @@ int main(int argc, char** argv) {
 }
 
 %parse_failure {
-       fprintf(stderr, "%d:%d:%d:%d:%d Parser failed to successfully parse.\n", i, j, k, l, m);
+       fprintf(stderr, "%d:%d:%d:%d:%d:%d Parser failed to successfully parse.\n", i, j, k, l, m, n);
 }