]> granicus.if.org Git - multimarkdown/commitdiff
UPDATED: Update parser to track headers, even in compatibility mode
authorFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 3 Jul 2017 11:47:14 +0000 (07:47 -0400)
committerFletcher T. Penney <fletcher@fletcherpenney.net>
Mon, 3 Jul 2017 11:47:14 +0000 (07:47 -0400)
Sources/libMultiMarkdown/parser.c
Sources/libMultiMarkdown/parser.y
Sources/libMultiMarkdown/update

index 44ef0f45b8f11a800cd869443c295e73ed8a6b54..ebcf23cd79dae4deb6c2c29cef380eb82cc9c7c9 100644 (file)
@@ -1199,27 +1199,27 @@ static void yy_reduce(
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H1); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H2); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H3); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H4); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H5); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       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); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_H6); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       case 9: /* block ::= LINE_HR */
@@ -1292,11 +1292,11 @@ static void yy_reduce(
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       case 27: /* block ::= setext_1 */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_1); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       case 28: /* block ::= setext_2 */
-{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, yylhsminor.yy0); }
+{ yylhsminor.yy0 = token_new_parent(yymsp[0].minor.yy0, BLOCK_SETEXT_2); stack_push(engine->header_stack, yylhsminor.yy0); }
   yymsp[0].minor.yy0 = yylhsminor.yy0;
         break;
       case 29: /* block ::= table */
index 710e8e2a230837a717c9a4b318f19b4947d64a55..b152601f48389827bf6ec8948073902904000a88 100644 (file)
@@ -103,12 +103,12 @@ blocks(A)                 ::= block(B).
 
 // Single line blocks
 
-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)                       ::= LINE_ATX_1(B).                      { A = token_new_parent(B, BLOCK_H1); stack_push(engine->header_stack, A); }
+block(A)                       ::= LINE_ATX_2(B).                      { A = token_new_parent(B, BLOCK_H2); stack_push(engine->header_stack, A); }
+block(A)                       ::= LINE_ATX_3(B).                      { A = token_new_parent(B, BLOCK_H3); stack_push(engine->header_stack, A); }
+block(A)                       ::= LINE_ATX_4(B).                      { A = token_new_parent(B, BLOCK_H4); stack_push(engine->header_stack, A); }
+block(A)                       ::= LINE_ATX_5(B).                      { A = token_new_parent(B, BLOCK_H5); stack_push(engine->header_stack, A); }
+block(A)                       ::= LINE_ATX_6(B).                      { A = token_new_parent(B, BLOCK_H6); stack_push(engine->header_stack, A); }
 
 block(A)                       ::= LINE_HR(B).                         { A = token_new_parent(B, BLOCK_HR); }
 
@@ -133,8 +133,8 @@ block(A)                    ::= list_bullet(B).                     { A = token_new_parent(B, BLOCK_LIST_BULLETED);
 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)                       ::= setext_1(B).                        { A = token_new_parent(B, BLOCK_SETEXT_1); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
-block(A)                       ::= setext_2(B).                        { A = token_new_parent(B, BLOCK_SETEXT_2); if (!(engine->extensions & EXT_NO_LABELS)) stack_push(engine->header_stack, A); }
+block(A)                       ::= setext_1(B).                        { A = token_new_parent(B, BLOCK_SETEXT_1); stack_push(engine->header_stack, A); }
+block(A)                       ::= setext_2(B).                        { A = token_new_parent(B, BLOCK_SETEXT_2); stack_push(engine->header_stack, A); }
 block(A)                       ::= table(B).                           { A = token_new_parent(B, BLOCK_TABLE); stack_push(engine->table_stack, A); }
 
 
index 335108fc700d0bcba7b94aa8104fad84f6a7c011..65a0d98c5795be1664b6131f3e32cc7b0fca836b 100755 (executable)
@@ -8,4 +8,7 @@ re2c -i -8 lexer.re > lexer.c
 
 re2c -i -8 scanners.re > scanners.c
 
-lemon -l parser.y
+# It seems that some other versions of lemon don't create valid 
+# parsers?? Using the version included here works
+# lemon -l parser.y
+../../lemon/build/lemon -l parser.y