diff --git a/Sources/libMultiMarkdown/include/libMultiMarkdown.h b/Sources/libMultiMarkdown/include/libMultiMarkdown.h
index 8da8be5..6ee276b 100644
--- a/Sources/libMultiMarkdown/include/libMultiMarkdown.h
+++ b/Sources/libMultiMarkdown/include/libMultiMarkdown.h
@@ -471,6 +471,7 @@ enum token_types {
TEXT_EMPTY,
TEXT_HASH,
TEXT_LINEBREAK,
+ TEXT_LINEBREAK_SP,
TEXT_NL,
TEXT_NL_SP,
TEXT_NUMBER_POSS_LIST,
diff --git a/Sources/libMultiMarkdown/lexer.c b/Sources/libMultiMarkdown/lexer.c
index de74f2f..3d62918 100644
--- a/Sources/libMultiMarkdown/lexer.c
+++ b/Sources/libMultiMarkdown/lexer.c
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Sun Jul 23 08:32:21 2017 */
+/* Generated by re2c 0.14.3 on Sun Jul 23 17:28:33 2017 */
/**
MultiMarkdown 6 -- Lightweight markup processor to produce HTML, LaTeX, and more.
@@ -80,6 +80,7 @@ int scan(Scanner * s, const char * stop) {
{
YYCTYPE yych;
unsigned int yyaccept = 0;
+
yych = *YYCURSOR;
switch (yych) {
case 0x00:
@@ -168,24 +169,24 @@ int scan(Scanner * s, const char * stop) {
case 'y':
case 'z':
case 0x7F: goto yy66;
- case '\t': goto yy49;
+ case '\t': goto yy51;
case '\n': goto yy3;
case '\r': goto yy5;
- case ' ': goto yy51;
- case '!': goto yy22;
- case '"': goto yy32;
+ case ' ': goto yy6;
+ case '!': goto yy25;
+ case '"': goto yy34;
case '#': goto yy53;
- case '$': goto yy45;
+ case '$': goto yy47;
case '%': goto yy55;
- case '&': goto yy39;
- case '\'': goto yy34;
- case '(': goto yy24;
- case ')': goto yy26;
+ case '&': goto yy41;
+ case '\'': goto yy36;
+ case '(': goto yy26;
+ case ')': goto yy28;
case '*': goto yy58;
- case '+': goto yy8;
- case '-': goto yy10;
- case '.': goto yy36;
- case '/': goto yy41;
+ case '+': goto yy11;
+ case '-': goto yy13;
+ case '.': goto yy38;
+ case '/': goto yy43;
case '0':
case '1':
case '2':
@@ -196,21 +197,21 @@ int scan(Scanner * s, const char * stop) {
case '7':
case '8':
case '9': goto yy57;
- case ':': goto yy37;
- case '<': goto yy12;
- case '=': goto yy16;
- case '>': goto yy28;
- case '[': goto yy18;
- case '\\': goto yy43;
- case ']': goto yy20;
- case '^': goto yy47;
+ case ':': goto yy39;
+ case '<': goto yy15;
+ case '=': goto yy19;
+ case '>': goto yy30;
+ case '[': goto yy21;
+ case '\\': goto yy45;
+ case ']': goto yy23;
+ case '^': goto yy49;
case '_': goto yy60;
case '`': goto yy62;
- case '{': goto yy6;
+ case '{': goto yy9;
case '|': goto yy64;
- case '}': goto yy30;
- case '~': goto yy14;
- case 0xC2: goto yy52;
+ case '}': goto yy32;
+ case '~': goto yy17;
+ case 0xC2: goto yy8;
case 0xC3:
case 0xC4:
case 0xC5:
@@ -268,12 +269,12 @@ yy2:
switch (yyaccept) {
case 0: goto yy4;
case 1: goto yy7;
- case 2: goto yy9;
- case 3: goto yy13;
- case 4: goto yy15;
- case 5: goto yy17;
- case 6: goto yy23;
- case 7: goto yy40;
+ case 2: goto yy10;
+ case 3: goto yy12;
+ case 4: goto yy16;
+ case 5: goto yy18;
+ case 6: goto yy20;
+ case 7: goto yy42;
case 8: goto yy54;
case 9: goto yy81;
case 10: goto yy89;
@@ -282,15 +283,16 @@ yy2:
case 13: goto yy112;
case 14: goto yy121;
case 15: goto yy128;
- case 16: goto yy135;
- case 17: goto yy145;
- default: goto yy303;
+ case 16: goto yy284;
+ case 17: goto yy307;
+ case 18: goto yy314;
+ default: goto yy326;
}
yy3:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
- case ' ': goto yy324;
+ case ' ': goto yy333;
default: goto yy4;
}
yy4:
@@ -300,274 +302,24 @@ yy5:
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '\n': goto yy3;
- case ' ': goto yy324;
+ case ' ': goto yy333;
default: goto yy4;
}
yy6:
+ YYCTXMARKER = YYCURSOR + 1;
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
- case '+': goto yy307;
- case '-': goto yy306;
- case '=': goto yy300;
- case '>': goto yy305;
- case '{': goto yy302;
- case '~': goto yy304;
+ case '\t': goto yy309;
+ case '\n': goto yy331;
+ case '\r': goto yy332;
+ case ' ': goto yy306;
+ case 0xC2: goto yy308;
default: goto yy7;
}
yy7:
- { return TEXT_BRACE_LEFT; }
-yy8:
- yyaccept = 2;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '+': goto yy297;
- default: goto yy9;
- }
-yy9:
- { return PLUS; }
-yy10:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '-': goto yy289;
- default: goto yy11;
- }
-yy11:
- { return DASH_N; }
-yy12:
- yyaccept = 3;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '!': goto yy282;
- case '<': goto yy283;
- default: goto yy13;
- }
-yy13:
- { return ANGLE_LEFT; }
-yy14:
- yyaccept = 4;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '>': goto yy278;
- case '~': goto yy277;
- default: goto yy15;
- }
-yy15:
- { return SUBSCRIPT; }
-yy16:
- yyaccept = 5;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '=': goto yy274;
- default: goto yy17;
- }
-yy17:
- { return EQUAL; }
-yy18:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '#': goto yy270;
- case '%': goto yy264;
- case '>': goto yy272;
- case '?': goto yy266;
- case '^': goto yy268;
- default: goto yy19;
- }
-yy19:
- { return BRACKET_LEFT; }
-yy20:
- ++YYCURSOR;
- { return BRACKET_RIGHT; }
-yy22:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '[': goto yy262;
- default: goto yy23;
- }
-yy23:
{ goto scan; }
-yy24:
- ++YYCURSOR;
- { return PAREN_LEFT; }
-yy26:
- ++YYCURSOR;
- { return PAREN_RIGHT; }
-yy28:
- ++YYCURSOR;
- { return ANGLE_RIGHT; }
-yy30:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '}': goto yy260;
- default: goto yy31;
- }
-yy31:
- { return TEXT_BRACE_RIGHT; }
-yy32:
- ++YYCURSOR;
- { return QUOTE_DOUBLE; }
-yy34:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '\'': goto yy258;
- default: goto yy35;
- }
-yy35:
- { return QUOTE_SINGLE; }
-yy36:
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case ' ': goto yy250;
- case '.': goto yy251;
- default: goto yy23;
- }
-yy37:
- ++YYCURSOR;
- { return COLON; }
-yy39:
- yyaccept = 7;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '#': goto yy234;
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- case 'G':
- case 'H':
- case 'I':
- case 'J':
- case 'K':
- case 'L':
- case 'M':
- case 'N':
- case 'O':
- case 'P':
- case 'Q':
- case 'R':
- case 'S':
- case 'T':
- case 'U':
- case 'V':
- case 'W':
- case 'X':
- case 'Y':
- case 'Z':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- case 'g':
- case 'h':
- case 'i':
- case 'j':
- case 'k':
- case 'l':
- case 'm':
- case 'n':
- case 'o':
- case 'p':
- case 'q':
- case 'r':
- case 's':
- case 't':
- case 'u':
- case 'v':
- case 'w':
- case 'x':
- case 'y':
- case 'z': goto yy231;
- case 'A':
- case 'a': goto yy233;
- default: goto yy40;
- }
-yy40:
- { return AMPERSAND; }
-yy41:
- ++YYCURSOR;
- { return SLASH; }
-yy43:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '\n': goto yy154;
- case '\r': goto yy156;
- case ' ': goto yy159;
- case '!': goto yy219;
- case '"': goto yy209;
- case '#': goto yy189;
- case '$': goto yy187;
- case '%': goto yy185;
- case '&': goto yy173;
- case '\'': goto yy207;
- case '(': goto yy201;
- case ')': goto yy199;
- case '*': goto yy165;
- case '+': goto yy183;
- case ',': goto yy215;
- case '-': goto yy181;
- case '.': goto yy221;
- case '/': goto yy169;
- case ':': goto yy211;
- case ';': goto yy213;
- case '<': goto yy177;
- case '=': goto yy179;
- case '>': goto yy175;
- case '?': goto yy217;
- case '@': goto yy171;
- case '[': goto yy193;
- case '\\': goto yy157;
- case ']': goto yy191;
- case '^': goto yy167;
- case '_': goto yy163;
- case '`': goto yy205;
- case '{': goto yy197;
- case '|': goto yy161;
- case '}': goto yy195;
- case '~': goto yy203;
- default: goto yy44;
- }
-yy44:
- { return TEXT_BACKSLASH; }
-yy45:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '$': goto yy152;
- default: goto yy46;
- }
-yy46:
- { return MATH_DOLLAR_SINGLE; }
-yy47:
- ++YYCURSOR;
- { return SUPERSCRIPT; }
-yy49:
- ++YYCURSOR;
- { return INDENT_TAB; }
-yy51:
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- YYCTXMARKER = YYCURSOR;
- switch (yych) {
- case '\t': goto yy137;
- case '\n': goto yy150;
- case '\r': goto yy151;
- case ' ': goto yy134;
- case 0xC2: goto yy136;
- default: goto yy23;
- }
-yy52:
+yy8:
yych = *++YYCURSOR;
switch (yych) {
case 0x80:
@@ -633,13 +385,263 @@ yy52:
case 0xBD:
case 0xBE:
case 0xBF: goto yy66;
- case 0xA0: goto yy133;
+ case 0xA0: goto yy305;
default: goto yy2;
}
+yy9:
+ yyaccept = 2;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '+': goto yy288;
+ case '-': goto yy287;
+ case '=': goto yy281;
+ case '>': goto yy286;
+ case '{': goto yy283;
+ case '~': goto yy285;
+ default: goto yy10;
+ }
+yy10:
+ { return TEXT_BRACE_LEFT; }
+yy11:
+ yyaccept = 3;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '+': goto yy278;
+ default: goto yy12;
+ }
+yy12:
+ { return PLUS; }
+yy13:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '-': goto yy270;
+ default: goto yy14;
+ }
+yy14:
+ { return DASH_N; }
+yy15:
+ yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '!': goto yy263;
+ case '<': goto yy264;
+ default: goto yy16;
+ }
+yy16:
+ { return ANGLE_LEFT; }
+yy17:
+ yyaccept = 5;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '>': goto yy259;
+ case '~': goto yy258;
+ default: goto yy18;
+ }
+yy18:
+ { return SUBSCRIPT; }
+yy19:
+ yyaccept = 6;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '=': goto yy255;
+ default: goto yy20;
+ }
+yy20:
+ { return EQUAL; }
+yy21:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '#': goto yy251;
+ case '%': goto yy245;
+ case '>': goto yy253;
+ case '?': goto yy247;
+ case '^': goto yy249;
+ default: goto yy22;
+ }
+yy22:
+ { return BRACKET_LEFT; }
+yy23:
+ ++YYCURSOR;
+ { return BRACKET_RIGHT; }
+yy25:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '[': goto yy243;
+ default: goto yy7;
+ }
+yy26:
+ ++YYCURSOR;
+ { return PAREN_LEFT; }
+yy28:
+ ++YYCURSOR;
+ { return PAREN_RIGHT; }
+yy30:
+ ++YYCURSOR;
+ { return ANGLE_RIGHT; }
+yy32:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '}': goto yy241;
+ default: goto yy33;
+ }
+yy33:
+ { return TEXT_BRACE_RIGHT; }
+yy34:
+ ++YYCURSOR;
+ { return QUOTE_DOUBLE; }
+yy36:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '\'': goto yy239;
+ default: goto yy37;
+ }
+yy37:
+ { return QUOTE_SINGLE; }
+yy38:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case ' ': goto yy231;
+ case '.': goto yy232;
+ default: goto yy7;
+ }
+yy39:
+ ++YYCURSOR;
+ { return COLON; }
+yy41:
+ yyaccept = 7;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '#': goto yy215;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z': goto yy212;
+ case 'A':
+ case 'a': goto yy214;
+ default: goto yy42;
+ }
+yy42:
+ { return AMPERSAND; }
+yy43:
+ ++YYCURSOR;
+ { return SLASH; }
+yy45:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '\n': goto yy135;
+ case '\r': goto yy137;
+ case ' ': goto yy140;
+ case '!': goto yy200;
+ case '"': goto yy190;
+ case '#': goto yy170;
+ case '$': goto yy168;
+ case '%': goto yy166;
+ case '&': goto yy154;
+ case '\'': goto yy188;
+ case '(': goto yy182;
+ case ')': goto yy180;
+ case '*': goto yy146;
+ case '+': goto yy164;
+ case ',': goto yy196;
+ case '-': goto yy162;
+ case '.': goto yy202;
+ case '/': goto yy150;
+ case ':': goto yy192;
+ case ';': goto yy194;
+ case '<': goto yy158;
+ case '=': goto yy160;
+ case '>': goto yy156;
+ case '?': goto yy198;
+ case '@': goto yy152;
+ case '[': goto yy174;
+ case '\\': goto yy138;
+ case ']': goto yy172;
+ case '^': goto yy148;
+ case '_': goto yy144;
+ case '`': goto yy186;
+ case '{': goto yy178;
+ case '|': goto yy142;
+ case '}': goto yy176;
+ case '~': goto yy184;
+ default: goto yy46;
+ }
+yy46:
+ { return TEXT_BACKSLASH; }
+yy47:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '$': goto yy133;
+ default: goto yy48;
+ }
+yy48:
+ { return MATH_DOLLAR_SINGLE; }
+yy49:
+ ++YYCURSOR;
+ { return SUPERSCRIPT; }
+yy51:
+ ++YYCURSOR;
+ { return INDENT_TAB; }
yy53:
+ YYCTXMARKER = YYCURSOR + 1;
yyaccept = 8;
yych = *(YYMARKER = ++YYCURSOR);
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -655,7 +657,7 @@ yy55:
++YYCURSOR;
{ return TEXT_PERCENT; }
yy57:
- yyaccept = 6;
+ yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
case '.': goto yy77;
@@ -669,7 +671,7 @@ yy57:
case '7':
case '8':
case '9': goto yy78;
- default: goto yy23;
+ default: goto yy7;
}
yy58:
++YYCURSOR;
@@ -691,7 +693,7 @@ yy65:
{ return PIPE; }
yy66:
yych = *++YYCURSOR;
- goto yy23;
+ goto yy7;
yy67:
yych = *++YYCURSOR;
switch (yych) {
@@ -1027,8 +1029,8 @@ yy76:
default: goto yy63;
}
yy77:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case ' ': goto yy83;
@@ -1083,8 +1085,8 @@ yy85:
default: goto yy2;
}
yy86:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -1161,8 +1163,8 @@ yy100:
default: goto yy99;
}
yy101:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -1173,8 +1175,8 @@ yy101:
default: goto yy2;
}
yy102:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -1251,8 +1253,8 @@ yy116:
default: goto yy115;
}
yy117:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -1263,8 +1265,8 @@ yy117:
default: goto yy2;
}
yy118:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
switch (yych) {
case '\t':
case '\n':
@@ -1340,243 +1342,141 @@ yy132:
default: goto yy131;
}
yy133:
- yyaccept = 6;
- yych = *(YYMARKER = ++YYCURSOR);
- YYCTXMARKER = YYCURSOR;
- switch (yych) {
- case '\t': goto yy137;
- case ' ': goto yy134;
- case 0xC2: goto yy136;
- default: goto yy23;
- }
-yy134:
- yyaccept = 16;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '\n': goto yy141;
- case '\r': goto yy143;
- case ' ': goto yy139;
- case 0xC2: goto yy140;
- default: goto yy135;
- }
-yy135:
- { return NON_INDENT_SPACE; }
-yy136:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0xA0: goto yy134;
- default: goto yy2;
- }
-yy137:
- ++YYCURSOR;
- YYCURSOR = YYCTXMARKER;
- { return NON_INDENT_SPACE; }
-yy139:
- yyaccept = 16;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '\n': goto yy141;
- case '\r': goto yy143;
- case ' ': goto yy144;
- case 0xC2: goto yy146;
- default: goto yy135;
- }
-yy140:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0xA0: goto yy139;
- default: goto yy2;
- }
-yy141:
- ++YYCURSOR;
-yy142:
- { return TEXT_LINEBREAK; }
-yy143:
- yych = *++YYCURSOR;
- switch (yych) {
- case '\n': goto yy141;
- default: goto yy142;
- }
-yy144:
- yyaccept = 17;
- yych = *(YYMARKER = ++YYCURSOR);
- switch (yych) {
- case '\n': goto yy141;
- case '\r': goto yy143;
- case ' ': goto yy147;
- case 0xC2: goto yy149;
- default: goto yy145;
- }
-yy145:
- { return INDENT_SPACE; }
-yy146:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0xA0: goto yy144;
- default: goto yy2;
- }
-yy147:
- ++YYCURSOR;
- yych = *YYCURSOR;
- switch (yych) {
- case '\n': goto yy141;
- case '\r': goto yy143;
- case ' ': goto yy147;
- case 0xC2: goto yy149;
- default: goto yy2;
- }
-yy149:
- ++YYCURSOR;
- yych = *YYCURSOR;
- switch (yych) {
- case 0xA0: goto yy147;
- default: goto yy2;
- }
-yy150:
- yych = *++YYCURSOR;
- goto yy4;
-yy151:
- yych = *++YYCURSOR;
- switch (yych) {
- case '\n': goto yy150;
- default: goto yy4;
- }
-yy152:
++YYCURSOR;
{ return MATH_DOLLAR_DOUBLE; }
-yy154:
+yy135:
++YYCURSOR;
-yy155:
+yy136:
{ return TEXT_LINEBREAK; }
-yy156:
+yy137:
yych = *++YYCURSOR;
switch (yych) {
- case '\n': goto yy154;
- default: goto yy155;
+ case '\n': goto yy135;
+ default: goto yy136;
}
-yy157:
+yy138:
++YYCURSOR;
switch ((yych = *YYCURSOR)) {
- case '(': goto yy223;
- case ')': goto yy225;
- case '[': goto yy227;
- case ']': goto yy229;
- default: goto yy158;
+ case '(': goto yy204;
+ case ')': goto yy206;
+ case '[': goto yy208;
+ case ']': goto yy210;
+ default: goto yy139;
}
+yy139:
+ { return ESCAPED_CHARACTER; }
+yy140:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy142:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy144:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy146:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy148:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy150:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy152:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy154:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
+yy156:
+ ++YYCURSOR;
+ { return ESCAPED_CHARACTER; }
yy158:
- { return ESCAPED_CHARACTER; }
-yy159:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy161:
+yy160:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy163:
+yy162:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy165:
+yy164:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy167:
+yy166:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy169:
+yy168:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy171:
+yy170:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy173:
+yy172:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy175:
+yy174:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy177:
+yy176:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy179:
+yy178:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy181:
+yy180:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy183:
+yy182:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy185:
+yy184:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy187:
+yy186:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy189:
+yy188:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy191:
+yy190:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy193:
+yy192:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy195:
+yy194:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy197:
+yy196:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy199:
+yy198:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy201:
+yy200:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy203:
+yy202:
++YYCURSOR;
{ return ESCAPED_CHARACTER; }
-yy205:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy207:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy209:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy211:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy213:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy215:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy217:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy219:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy221:
- ++YYCURSOR;
- { return ESCAPED_CHARACTER; }
-yy223:
+yy204:
++YYCURSOR;
{ return MATH_PAREN_OPEN; }
-yy225:
+yy206:
++YYCURSOR;
{ return MATH_PAREN_CLOSE; }
-yy227:
+yy208:
++YYCURSOR;
{ return MATH_BRACKET_OPEN; }
-yy229:
+yy210:
++YYCURSOR;
{ return MATH_BRACKET_CLOSE; }
-yy231:
+yy212:
++YYCURSOR;
yych = *YYCURSOR;
-yy232:
+yy213:
switch (yych) {
case '0':
case '1':
@@ -1639,18 +1539,18 @@ yy232:
case 'w':
case 'x':
case 'y':
- case 'z': goto yy231;
- case ';': goto yy245;
+ case 'z': goto yy212;
+ case ';': goto yy226;
default: goto yy2;
}
-yy233:
+yy214:
yych = *++YYCURSOR;
switch (yych) {
case 'M':
- case 'm': goto yy244;
- default: goto yy232;
+ case 'm': goto yy225;
+ default: goto yy213;
}
-yy234:
+yy215:
yych = *++YYCURSOR;
switch (yych) {
case '0':
@@ -1662,18 +1562,18 @@ yy234:
case '6':
case '7':
case '8':
- case '9': goto yy236;
+ case '9': goto yy217;
case 'X':
- case 'x': goto yy235;
+ case 'x': goto yy216;
default: goto yy2;
}
-yy235:
+yy216:
yych = *++YYCURSOR;
switch (yych) {
case ';': goto yy2;
- default: goto yy241;
+ default: goto yy222;
}
-yy236:
+yy217:
++YYCURSOR;
yych = *YYCURSOR;
switch (yych) {
@@ -1686,17 +1586,17 @@ yy236:
case '6':
case '7':
case '8':
- case '9': goto yy236;
- case ';': goto yy238;
+ case '9': goto yy217;
+ case ';': goto yy219;
default: goto yy2;
}
-yy238:
+yy219:
++YYCURSOR;
{ return HTML_ENTITY; }
-yy240:
+yy221:
++YYCURSOR;
yych = *YYCURSOR;
-yy241:
+yy222:
switch (yych) {
case '0':
case '1':
@@ -1745,246 +1645,311 @@ yy241:
case 'c':
case 'd':
case 'e':
- case 'f': goto yy240;
- case ';': goto yy242;
+ case 'f': goto yy221;
+ case ';': goto yy223;
default: goto yy2;
}
-yy242:
+yy223:
++YYCURSOR;
{ return HTML_ENTITY; }
-yy244:
+yy225:
yych = *++YYCURSOR;
switch (yych) {
case 'P':
- case 'p': goto yy247;
- default: goto yy232;
+ case 'p': goto yy228;
+ default: goto yy213;
}
-yy245:
+yy226:
++YYCURSOR;
{ return HTML_ENTITY; }
-yy247:
+yy228:
yych = *++YYCURSOR;
switch (yych) {
- case ';': goto yy248;
- default: goto yy232;
+ case ';': goto yy229;
+ default: goto yy213;
}
-yy248:
+yy229:
++YYCURSOR;
{ return AMPERSAND_LONG; }
-yy250:
+yy231:
yych = *++YYCURSOR;
switch (yych) {
- case '.': goto yy254;
+ case '.': goto yy235;
default: goto yy2;
}
-yy251:
+yy232:
yych = *++YYCURSOR;
switch (yych) {
- case '.': goto yy252;
+ case '.': goto yy233;
default: goto yy2;
}
-yy252:
+yy233:
++YYCURSOR;
{ return ELLIPSIS; }
-yy254:
+yy235:
yych = *++YYCURSOR;
switch (yych) {
- case ' ': goto yy255;
+ case ' ': goto yy236;
default: goto yy2;
}
+yy236:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '.': goto yy237;
+ default: goto yy2;
+ }
+yy237:
+ ++YYCURSOR;
+ { return ELLIPSIS; }
+yy239:
+ ++YYCURSOR;
+ { return QUOTE_RIGHT_ALT; }
+yy241:
+ ++YYCURSOR;
+ { return BRACE_DOUBLE_RIGHT; }
+yy243:
+ ++YYCURSOR;
+ { return BRACKET_IMAGE_LEFT; }
+yy245:
+ ++YYCURSOR;
+ { return BRACKET_VARIABLE_LEFT; }
+yy247:
+ ++YYCURSOR;
+ { return BRACKET_GLOSSARY_LEFT; }
+yy249:
+ ++YYCURSOR;
+ { return BRACKET_FOOTNOTE_LEFT; }
+yy251:
+ ++YYCURSOR;
+ { return BRACKET_CITATION_LEFT; }
+yy253:
+ ++YYCURSOR;
+ { return BRACKET_ABBREVIATION_LEFT; }
yy255:
yych = *++YYCURSOR;
switch (yych) {
- case '.': goto yy256;
+ case '}': goto yy256;
default: goto yy2;
}
yy256:
- ++YYCURSOR;
- { return ELLIPSIS; }
-yy258:
- ++YYCURSOR;
- { return QUOTE_RIGHT_ALT; }
-yy260:
- ++YYCURSOR;
- { return BRACE_DOUBLE_RIGHT; }
-yy262:
- ++YYCURSOR;
- { return BRACKET_IMAGE_LEFT; }
-yy264:
- ++YYCURSOR;
- { return BRACKET_VARIABLE_LEFT; }
-yy266:
- ++YYCURSOR;
- { return BRACKET_GLOSSARY_LEFT; }
-yy268:
- ++YYCURSOR;
- { return BRACKET_FOOTNOTE_LEFT; }
-yy270:
- ++YYCURSOR;
- { return BRACKET_CITATION_LEFT; }
-yy272:
- ++YYCURSOR;
- { return BRACKET_ABBREVIATION_LEFT; }
-yy274:
- yych = *++YYCURSOR;
- switch (yych) {
- case '}': goto yy275;
- default: goto yy2;
- }
-yy275:
++YYCURSOR;
{ return CRITIC_HI_CLOSE; }
-yy277:
+yy258:
yych = *++YYCURSOR;
switch (yych) {
- case '}': goto yy280;
+ case '}': goto yy261;
default: goto yy2;
}
-yy278:
+yy259:
++YYCURSOR;
{ return CRITIC_SUB_DIV; }
-yy280:
+yy261:
++YYCURSOR;
{ return CRITIC_SUB_CLOSE; }
-yy282:
+yy263:
yych = *++YYCURSOR;
switch (yych) {
- case '-': goto yy286;
+ case '-': goto yy267;
default: goto yy2;
}
-yy283:
+yy264:
yych = *++YYCURSOR;
switch (yych) {
- case '}': goto yy284;
+ case '}': goto yy265;
default: goto yy2;
}
-yy284:
+yy265:
++YYCURSOR;
{ return CRITIC_COM_CLOSE; }
+yy267:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '-': goto yy268;
+ default: goto yy2;
+ }
+yy268:
+ ++YYCURSOR;
+ { return HTML_COMMENT_START; }
+yy270:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '-': goto yy276;
+ case '>': goto yy274;
+ case '}': goto yy272;
+ default: goto yy271;
+ }
+yy271:
+ { return DASH_N; }
+yy272:
+ ++YYCURSOR;
+ { return CRITIC_DEL_CLOSE; }
+yy274:
+ ++YYCURSOR;
+ { return HTML_COMMENT_STOP; }
+yy276:
+ ++YYCURSOR;
+ { return DASH_M; }
+yy278:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '}': goto yy279;
+ default: goto yy2;
+ }
+yy279:
+ ++YYCURSOR;
+ { return CRITIC_ADD_CLOSE; }
+yy281:
+ ++YYCURSOR;
+ switch ((yych = *YYCURSOR)) {
+ case '=': goto yy303;
+ default: goto yy282;
+ }
+yy282:
+ { return RAW_FILTER_LEFT; }
+yy283:
+ yyaccept = 16;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case 'T': goto yy297;
+ default: goto yy284;
+ }
+yy284:
+ { return BRACE_DOUBLE_LEFT; }
+yy285:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '~': goto yy295;
+ default: goto yy2;
+ }
yy286:
yych = *++YYCURSOR;
switch (yych) {
- case '-': goto yy287;
+ case '>': goto yy293;
default: goto yy2;
}
yy287:
- ++YYCURSOR;
- { return HTML_COMMENT_START; }
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '-': goto yy291;
+ default: goto yy2;
+ }
+yy288:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '+': goto yy289;
+ default: goto yy2;
+ }
yy289:
++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '-': goto yy295;
- case '>': goto yy293;
- case '}': goto yy291;
- default: goto yy290;
- }
-yy290:
- { return DASH_N; }
+ { return CRITIC_ADD_OPEN; }
yy291:
++YYCURSOR;
- { return CRITIC_DEL_CLOSE; }
+ { return CRITIC_DEL_OPEN; }
yy293:
++YYCURSOR;
- { return HTML_COMMENT_STOP; }
+ { return CRITIC_COM_OPEN; }
yy295:
++YYCURSOR;
- { return DASH_M; }
+ { return CRITIC_SUB_OPEN; }
yy297:
yych = *++YYCURSOR;
switch (yych) {
- case '}': goto yy298;
+ case 'O': goto yy298;
default: goto yy2;
}
yy298:
- ++YYCURSOR;
- { return CRITIC_ADD_CLOSE; }
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 'C': goto yy299;
+ default: goto yy2;
+ }
+yy299:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '}': goto yy300;
+ default: goto yy2;
+ }
yy300:
- ++YYCURSOR;
- switch ((yych = *YYCURSOR)) {
- case '=': goto yy322;
- default: goto yy301;
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '}': goto yy301;
+ default: goto yy2;
}
yy301:
- { return RAW_FILTER_LEFT; }
-yy302:
+ ++YYCURSOR;
+ { return TOC; }
+yy303:
+ ++YYCURSOR;
+ { return CRITIC_HI_OPEN; }
+yy305:
+ YYCTXMARKER = YYCURSOR + 1;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\t': goto yy309;
+ case ' ': goto yy306;
+ case 0xC2: goto yy308;
+ default: goto yy7;
+ }
+yy306:
+ yyaccept = 17;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\n': goto yy313;
+ case '\r': goto yy315;
+ case ' ': goto yy311;
+ case 0xC2: goto yy312;
+ default: goto yy307;
+ }
+yy307:
+ { return NON_INDENT_SPACE; }
+yy308:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0xA0: goto yy306;
+ default: goto yy2;
+ }
+yy309:
+ ++YYCURSOR;
+ YYCURSOR = YYCTXMARKER;
+ { return NON_INDENT_SPACE; }
+yy311:
+ yyaccept = 17;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\n': goto yy313;
+ case '\r': goto yy315;
+ case ' ': goto yy325;
+ case 0xC2: goto yy327;
+ default: goto yy307;
+ }
+yy312:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0xA0: goto yy311;
+ default: goto yy2;
+ }
+yy313:
yyaccept = 18;
yych = *(YYMARKER = ++YYCURSOR);
switch (yych) {
- case 'T': goto yy316;
- default: goto yy303;
+ case ' ': goto yy316;
+ default: goto yy314;
}
-yy303:
- { return BRACE_DOUBLE_LEFT; }
-yy304:
- yych = *++YYCURSOR;
- switch (yych) {
- case '~': goto yy314;
- default: goto yy2;
- }
-yy305:
- yych = *++YYCURSOR;
- switch (yych) {
- case '>': goto yy312;
- default: goto yy2;
- }
-yy306:
- yych = *++YYCURSOR;
- switch (yych) {
- case '-': goto yy310;
- default: goto yy2;
- }
-yy307:
- yych = *++YYCURSOR;
- switch (yych) {
- case '+': goto yy308;
- default: goto yy2;
- }
-yy308:
- ++YYCURSOR;
- { return CRITIC_ADD_OPEN; }
-yy310:
- ++YYCURSOR;
- { return CRITIC_DEL_OPEN; }
-yy312:
- ++YYCURSOR;
- { return CRITIC_COM_OPEN; }
yy314:
- ++YYCURSOR;
- { return CRITIC_SUB_OPEN; }
+ { return TEXT_LINEBREAK; }
+yy315:
+ yyaccept = 18;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\n': goto yy313;
+ case ' ': goto yy316;
+ default: goto yy314;
+ }
yy316:
+ YYCTXMARKER = YYCURSOR + 1;
yych = *++YYCURSOR;
switch (yych) {
- case 'O': goto yy317;
- default: goto yy2;
- }
-yy317:
- yych = *++YYCURSOR;
- switch (yych) {
- case 'C': goto yy318;
- default: goto yy2;
- }
-yy318:
- yych = *++YYCURSOR;
- switch (yych) {
- case '}': goto yy319;
- default: goto yy2;
- }
-yy319:
- yych = *++YYCURSOR;
- switch (yych) {
- case '}': goto yy320;
- default: goto yy2;
- }
-yy320:
- ++YYCURSOR;
- { return TOC; }
-yy322:
- ++YYCURSOR;
- { return CRITIC_HI_OPEN; }
-yy324:
- yych = *++YYCURSOR;
- YYCTXMARKER = YYCURSOR;
- switch (yych) {
case 0x00:
case 0x01:
case 0x02:
@@ -2108,7 +2073,7 @@ yy324:
case '|':
case '}':
case '~':
- case 0x7F: goto yy325;
+ case 0x7F: goto yy317;
case 0xC2:
case 0xC3:
case 0xC4:
@@ -2138,8 +2103,8 @@ yy324:
case 0xDC:
case 0xDD:
case 0xDE:
- case 0xDF: goto yy327;
- case 0xE0: goto yy328;
+ case 0xDF: goto yy319;
+ case 0xE0: goto yy320;
case 0xE1:
case 0xE2:
case 0xE3:
@@ -2154,247 +2119,566 @@ yy324:
case 0xEC:
case 0xED:
case 0xEE:
- case 0xEF: goto yy329;
- case 0xF0: goto yy330;
+ case 0xEF: goto yy321;
+ case 0xF0: goto yy322;
case 0xF1:
case 0xF2:
- case 0xF3: goto yy331;
- case 0xF4: goto yy332;
+ case 0xF3: goto yy323;
+ case 0xF4: goto yy324;
+ default: goto yy2;
+ }
+yy317:
+ ++YYCURSOR;
+ YYCURSOR = YYCTXMARKER;
+ { return TEXT_LINEBREAK_SP; }
+yy319:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy317;
+ default: goto yy2;
+ }
+yy320:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy319;
+ default: goto yy2;
+ }
+yy321:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy319;
+ default: goto yy2;
+ }
+yy322:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy321;
+ default: goto yy2;
+ }
+yy323:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy321;
+ default: goto yy2;
+ }
+yy324:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F: goto yy321;
default: goto yy2;
}
yy325:
- ++YYCURSOR;
- YYCURSOR = YYCTXMARKER;
- { return TEXT_NL_SP; }
+ yyaccept = 19;
+ yych = *(YYMARKER = ++YYCURSOR);
+ switch (yych) {
+ case '\n': goto yy313;
+ case '\r': goto yy315;
+ case ' ': goto yy328;
+ case 0xC2: goto yy330;
+ default: goto yy326;
+ }
+yy326:
+ { return INDENT_SPACE; }
yy327:
yych = *++YYCURSOR;
switch (yych) {
- case 0x80:
- case 0x81:
- case 0x82:
- case 0x83:
- case 0x84:
- case 0x85:
- case 0x86:
- case 0x87:
- case 0x88:
- case 0x89:
- case 0x8A:
- case 0x8B:
- case 0x8C:
- case 0x8D:
- case 0x8E:
- case 0x8F:
- case 0x90:
- case 0x91:
- case 0x92:
- case 0x93:
- case 0x94:
- case 0x95:
- case 0x96:
- case 0x97:
- case 0x98:
- case 0x99:
- case 0x9A:
- case 0x9B:
- case 0x9C:
- case 0x9D:
- case 0x9E:
- case 0x9F:
- case 0xA0:
- case 0xA1:
- case 0xA2:
- case 0xA3:
- case 0xA4:
- case 0xA5:
- case 0xA6:
- case 0xA7:
- case 0xA8:
- case 0xA9:
- case 0xAA:
- case 0xAB:
- case 0xAC:
- case 0xAD:
- case 0xAE:
- case 0xAF:
- case 0xB0:
- case 0xB1:
- case 0xB2:
- case 0xB3:
- case 0xB4:
- case 0xB5:
- case 0xB6:
- case 0xB7:
- case 0xB8:
- case 0xB9:
- case 0xBA:
- case 0xBB:
- case 0xBC:
- case 0xBD:
- case 0xBE:
- case 0xBF: goto yy325;
+ case 0xA0: goto yy325;
default: goto yy2;
}
yy328:
- yych = *++YYCURSOR;
+ ++YYCURSOR;
+ yych = *YYCURSOR;
switch (yych) {
- case 0xA0:
- case 0xA1:
- case 0xA2:
- case 0xA3:
- case 0xA4:
- case 0xA5:
- case 0xA6:
- case 0xA7:
- case 0xA8:
- case 0xA9:
- case 0xAA:
- case 0xAB:
- case 0xAC:
- case 0xAD:
- case 0xAE:
- case 0xAF:
- case 0xB0:
- case 0xB1:
- case 0xB2:
- case 0xB3:
- case 0xB4:
- case 0xB5:
- case 0xB6:
- case 0xB7:
- case 0xB8:
- case 0xB9:
- case 0xBA:
- case 0xBB:
- case 0xBC:
- case 0xBD:
- case 0xBE:
- case 0xBF: goto yy327;
- default: goto yy2;
- }
-yy329:
- yych = *++YYCURSOR;
- switch (yych) {
- case 0x80:
- case 0x81:
- case 0x82:
- case 0x83:
- case 0x84:
- case 0x85:
- case 0x86:
- case 0x87:
- case 0x88:
- case 0x89:
- case 0x8A:
- case 0x8B:
- case 0x8C:
- case 0x8D:
- case 0x8E:
- case 0x8F:
- case 0x90:
- case 0x91:
- case 0x92:
- case 0x93:
- case 0x94:
- case 0x95:
- case 0x96:
- case 0x97:
- case 0x98:
- case 0x99:
- case 0x9A:
- case 0x9B:
- case 0x9C:
- case 0x9D:
- case 0x9E:
- case 0x9F:
- case 0xA0:
- case 0xA1:
- case 0xA2:
- case 0xA3:
- case 0xA4:
- case 0xA5:
- case 0xA6:
- case 0xA7:
- case 0xA8:
- case 0xA9:
- case 0xAA:
- case 0xAB:
- case 0xAC:
- case 0xAD:
- case 0xAE:
- case 0xAF:
- case 0xB0:
- case 0xB1:
- case 0xB2:
- case 0xB3:
- case 0xB4:
- case 0xB5:
- case 0xB6:
- case 0xB7:
- case 0xB8:
- case 0xB9:
- case 0xBA:
- case 0xBB:
- case 0xBC:
- case 0xBD:
- case 0xBE:
- case 0xBF: goto yy327;
+ case '\n': goto yy313;
+ case '\r': goto yy315;
+ case ' ': goto yy328;
+ case 0xC2: goto yy330;
default: goto yy2;
}
yy330:
- yych = *++YYCURSOR;
+ ++YYCURSOR;
+ yych = *YYCURSOR;
switch (yych) {
- case 0x90:
- case 0x91:
- case 0x92:
- case 0x93:
- case 0x94:
- case 0x95:
- case 0x96:
- case 0x97:
- case 0x98:
- case 0x99:
- case 0x9A:
- case 0x9B:
- case 0x9C:
- case 0x9D:
- case 0x9E:
- case 0x9F:
- case 0xA0:
- case 0xA1:
- case 0xA2:
- case 0xA3:
- case 0xA4:
- case 0xA5:
- case 0xA6:
- case 0xA7:
- case 0xA8:
- case 0xA9:
- case 0xAA:
- case 0xAB:
- case 0xAC:
- case 0xAD:
- case 0xAE:
- case 0xAF:
- case 0xB0:
- case 0xB1:
- case 0xB2:
- case 0xB3:
- case 0xB4:
- case 0xB5:
- case 0xB6:
- case 0xB7:
- case 0xB8:
- case 0xB9:
- case 0xBA:
- case 0xBB:
- case 0xBC:
- case 0xBD:
- case 0xBE:
- case 0xBF: goto yy329;
+ case 0xA0: goto yy328;
default: goto yy2;
}
yy331:
+ yych = *++YYCURSOR;
+ goto yy4;
+yy332:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case '\n': goto yy331;
+ default: goto yy4;
+ }
+yy333:
+ YYCTXMARKER = YYCURSOR + 1;
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x00:
+ case 0x01:
+ case 0x02:
+ case 0x03:
+ case 0x04:
+ case 0x05:
+ case 0x06:
+ case 0x07:
+ case 0x08:
+ case '\v':
+ case '\f':
+ case 0x0E:
+ case 0x0F:
+ case 0x10:
+ case 0x11:
+ case 0x12:
+ case 0x13:
+ case 0x14:
+ case 0x15:
+ case 0x16:
+ case 0x17:
+ case 0x18:
+ case 0x19:
+ case 0x1A:
+ case 0x1B:
+ case 0x1C:
+ case 0x1D:
+ case 0x1E:
+ case 0x1F:
+ case '!':
+ case '"':
+ case '#':
+ case '$':
+ case '%':
+ case '&':
+ case '\'':
+ case '(':
+ case ')':
+ case '*':
+ case '+':
+ case ',':
+ case '-':
+ case '.':
+ case '/':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ case ':':
+ case ';':
+ case '<':
+ case '=':
+ case '>':
+ case '?':
+ case '@':
+ case 'A':
+ case 'B':
+ case 'C':
+ case 'D':
+ case 'E':
+ case 'F':
+ case 'G':
+ case 'H':
+ case 'I':
+ case 'J':
+ case 'K':
+ case 'L':
+ case 'M':
+ case 'N':
+ case 'O':
+ case 'P':
+ case 'Q':
+ case 'R':
+ case 'S':
+ case 'T':
+ case 'U':
+ case 'V':
+ case 'W':
+ case 'X':
+ case 'Y':
+ case 'Z':
+ case '[':
+ case '\\':
+ case ']':
+ case '^':
+ case '_':
+ case '`':
+ case 'a':
+ case 'b':
+ case 'c':
+ case 'd':
+ case 'e':
+ case 'f':
+ case 'g':
+ case 'h':
+ case 'i':
+ case 'j':
+ case 'k':
+ case 'l':
+ case 'm':
+ case 'n':
+ case 'o':
+ case 'p':
+ case 'q':
+ case 'r':
+ case 's':
+ case 't':
+ case 'u':
+ case 'v':
+ case 'w':
+ case 'x':
+ case 'y':
+ case 'z':
+ case '{':
+ case '|':
+ case '}':
+ case '~':
+ case 0x7F: goto yy334;
+ case 0xC2:
+ case 0xC3:
+ case 0xC4:
+ case 0xC5:
+ case 0xC6:
+ case 0xC7:
+ case 0xC8:
+ case 0xC9:
+ case 0xCA:
+ case 0xCB:
+ case 0xCC:
+ case 0xCD:
+ case 0xCE:
+ case 0xCF:
+ case 0xD0:
+ case 0xD1:
+ case 0xD2:
+ case 0xD3:
+ case 0xD4:
+ case 0xD5:
+ case 0xD6:
+ case 0xD7:
+ case 0xD8:
+ case 0xD9:
+ case 0xDA:
+ case 0xDB:
+ case 0xDC:
+ case 0xDD:
+ case 0xDE:
+ case 0xDF: goto yy336;
+ case 0xE0: goto yy337;
+ case 0xE1:
+ case 0xE2:
+ case 0xE3:
+ case 0xE4:
+ case 0xE5:
+ case 0xE6:
+ case 0xE7:
+ case 0xE8:
+ case 0xE9:
+ case 0xEA:
+ case 0xEB:
+ case 0xEC:
+ case 0xED:
+ case 0xEE:
+ case 0xEF: goto yy338;
+ case 0xF0: goto yy339;
+ case 0xF1:
+ case 0xF2:
+ case 0xF3: goto yy340;
+ case 0xF4: goto yy341;
+ default: goto yy2;
+ }
+yy334:
+ ++YYCURSOR;
+ YYCURSOR = YYCTXMARKER;
+ { return TEXT_NL_SP; }
+yy336:
yych = *++YYCURSOR;
switch (yych) {
case 0x80:
@@ -2460,10 +2744,238 @@ yy331:
case 0xBC:
case 0xBD:
case 0xBE:
- case 0xBF: goto yy329;
+ case 0xBF: goto yy334;
default: goto yy2;
}
-yy332:
+yy337:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy336;
+ default: goto yy2;
+ }
+yy338:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy336;
+ default: goto yy2;
+ }
+yy339:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy338;
+ default: goto yy2;
+ }
+yy340:
+ yych = *++YYCURSOR;
+ switch (yych) {
+ case 0x80:
+ case 0x81:
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85:
+ case 0x86:
+ case 0x87:
+ case 0x88:
+ case 0x89:
+ case 0x8A:
+ case 0x8B:
+ case 0x8C:
+ case 0x8D:
+ case 0x8E:
+ case 0x8F:
+ case 0x90:
+ case 0x91:
+ case 0x92:
+ case 0x93:
+ case 0x94:
+ case 0x95:
+ case 0x96:
+ case 0x97:
+ case 0x98:
+ case 0x99:
+ case 0x9A:
+ case 0x9B:
+ case 0x9C:
+ case 0x9D:
+ case 0x9E:
+ case 0x9F:
+ case 0xA0:
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ case 0xA6:
+ case 0xA7:
+ case 0xA8:
+ case 0xA9:
+ case 0xAA:
+ case 0xAB:
+ case 0xAC:
+ case 0xAD:
+ case 0xAE:
+ case 0xAF:
+ case 0xB0:
+ case 0xB1:
+ case 0xB2:
+ case 0xB3:
+ case 0xB4:
+ case 0xB5:
+ case 0xB6:
+ case 0xB7:
+ case 0xB8:
+ case 0xB9:
+ case 0xBA:
+ case 0xBB:
+ case 0xBC:
+ case 0xBD:
+ case 0xBE:
+ case 0xBF: goto yy338;
+ default: goto yy2;
+ }
+yy341:
++YYCURSOR;
switch ((yych = *YYCURSOR)) {
case 0x80:
@@ -2481,7 +2993,7 @@ yy332:
case 0x8C:
case 0x8D:
case 0x8E:
- case 0x8F: goto yy329;
+ case 0x8F: goto yy338;
default: goto yy2;
}
}
diff --git a/Sources/libMultiMarkdown/lexer.re b/Sources/libMultiMarkdown/lexer.re
index db280f1..291f270 100644
--- a/Sources/libMultiMarkdown/lexer.re
+++ b/Sources/libMultiMarkdown/lexer.re
@@ -97,7 +97,7 @@ int scan(Scanner * s, const char * stop) {
// NL with single space -- this would otherwise be wrapped into a TEXT_PLAIN
NL ' ' / [^ \t\r\n] { return TEXT_NL_SP; }
-
+ TEXT_LINEBREAK ' ' / [^ \t\r\n] { return TEXT_LINEBREAK_SP; }
"{{TOC}}" { return TOC; }
diff --git a/Sources/libMultiMarkdown/mmd.c b/Sources/libMultiMarkdown/mmd.c
index aae9858..8a2bce7 100644
--- a/Sources/libMultiMarkdown/mmd.c
+++ b/Sources/libMultiMarkdown/mmd.c
@@ -374,26 +374,30 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
const char * source = e->dstr->str;
token * t = NULL;
+ token * first_child = line->child;
+
short temp_short;
size_t scan_len;
// Skip non-indenting space
- if (line->child->type == NON_INDENT_SPACE) {
- token_remove_first_child(line);
- } else if (line->child->type == TEXT_PLAIN && line->child->len == 1) {
- if (source[line->child->start] == ' ') {
- token_remove_first_child(line);
+ if (first_child->type == NON_INDENT_SPACE) {
+ //token_remove_first_child(line);
+ first_child = first_child->next;
+ } else if (first_child->type == TEXT_PLAIN && first_child->len == 1) {
+ if (source[first_child->start] == ' ') {
+ //token_remove_first_child(line);
+ first_child = first_child->next;
}
}
- if (line->child == NULL) {
+ if (first_child == NULL) {
line->type = LINE_EMPTY;
return;
}
- switch (line->child->type) {
+ switch (first_child->type) {
case INDENT_TAB:
- if (line_is_empty(line->child)) {
+ if (line_is_empty(first_child)) {
line->type = LINE_EMPTY;
e->allow_meta = false;
} else {
@@ -403,7 +407,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
case INDENT_SPACE:
- if (line_is_empty(line->child)) {
+ if (line_is_empty(first_child)) {
line->type = LINE_EMPTY;
e->allow_meta = false;
} else {
@@ -423,7 +427,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case ANGLE_RIGHT:
line->type = LINE_BLOCKQUOTE;
- line->child->type = MARKER_BLOCKQUOTE;
+ first_child->type = MARKER_BLOCKQUOTE;
break;
case BACKTICK:
@@ -432,10 +436,10 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
}
- scan_len = scan_fence_end(&source[line->child->start]);
+ scan_len = scan_fence_end(&source[first_child->start]);
if (scan_len) {
- switch (line->child->len) {
+ switch (first_child->len) {
case 3:
line->type = LINE_FENCE_BACKTICK_3;
break;
@@ -451,10 +455,10 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
} else {
- scan_len = scan_fence_start(&source[line->child->start]);
+ scan_len = scan_fence_start(&source[first_child->start]);
if (scan_len) {
- switch (line->child->len) {
+ switch (first_child->len) {
case 3:
line->type = LINE_FENCE_BACKTICK_START_3;
break;
@@ -482,7 +486,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
}
- if (scan_definition(&source[line->child->start])) {
+ if (scan_definition(&source[first_child->start])) {
line->type = LINE_DEFINITION;
}
@@ -494,12 +498,12 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case HASH4:
case HASH5:
case HASH6:
- if (scan_atx(&source[line->child->start])) {
- line->type = (line->child->type - HASH1) + LINE_ATX_1;
- line->child->type = (line->type - LINE_ATX_1) + MARKER_H1;
+ if (scan_atx(&source[first_child->start])) {
+ line->type = (first_child->type - HASH1) + LINE_ATX_1;
+ first_child->type = (line->type - LINE_ATX_1) + MARKER_H1;
// Strip trailing whitespace from '#' sequence
- line->child->len = line->child->type - MARKER_H1 + 1;
+ first_child->len = first_child->type - MARKER_H1 + 1;
// Strip trailing '#' sequence if present
if (line->child->tail->type == TEXT_NL) {
@@ -522,7 +526,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
case HTML_COMMENT_START:
- if (!line->child->next || !line->child->next->next) {
+ if (!first_child->next || !first_child->next->next) {
line->type = LINE_START_COMMENT;
} else {
line->type = LINE_PLAIN;
@@ -531,7 +535,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
case HTML_COMMENT_STOP:
- if (!line->child->next || !line->child->next->next) {
+ if (!first_child->next || !first_child->next->next) {
line->type = LINE_STOP_COMMENT;
} else {
line->type = LINE_PLAIN;
@@ -540,19 +544,19 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
case TEXT_NUMBER_POSS_LIST:
- switch (source[line->child->next->start]) {
+ switch (source[first_child->next->start]) {
case ' ':
case '\t':
line->type = LINE_LIST_ENUMERATED;
- line->child->type = MARKER_LIST_ENUMERATOR;
+ first_child->type = MARKER_LIST_ENUMERATOR;
- switch (line->child->next->type) {
+ switch (first_child->next->type) {
case TEXT_PLAIN:
// Strip whitespace between bullet and text
- while (char_is_whitespace(source[line->child->next->start])) {
- line->child->next->start++;
- line->child->next->len--;
+ while (char_is_whitespace(source[first_child->next->start])) {
+ first_child->next->start++;
+ first_child->next->len--;
}
break;
@@ -560,7 +564,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case INDENT_SPACE:
case INDENT_TAB:
case NON_INDENT_SPACE:
- t = line->child;
+ t = first_child;
while (t->next && ((t->next->type == INDENT_SPACE) ||
(t->next->type == INDENT_TAB) ||
@@ -575,7 +579,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
default:
line->type = LINE_PLAIN;
- line->child->type = TEXT_PLAIN;
+ first_child->type = TEXT_PLAIN;
break;
}
@@ -584,7 +588,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case EQUAL:
// Could this be a setext heading marker?
- if (scan_setext(&source[line->child->start])) {
+ if (scan_setext(&source[first_child->start])) {
line->type = LINE_SETEXT_1;
} else {
line->type = LINE_PLAIN;
@@ -594,7 +598,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case DASH_N:
case DASH_M:
- if (scan_setext(&source[line->child->start])) {
+ if (scan_setext(&source[first_child->start])) {
line->type = LINE_SETEXT_2;
break;
}
@@ -602,14 +606,14 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case STAR:
case UL:
// Could this be a horizontal rule?
- t = line->child->next;
- temp_short = line->child->len;
+ t = first_child->next;
+ temp_short = first_child->len;
while (t) {
switch (t->type) {
case DASH_N:
case DASH_M:
- if (t->type == line->child->type) {
+ if (t->type == first_child->type) {
t = t->next;
if (t) {
@@ -624,7 +628,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case STAR:
case UL:
- if (t->type == line->child->type) {
+ if (t->type == first_child->type) {
t = t->next;
temp_short++;
} else {
@@ -668,7 +672,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
break;
}
- if (line->child->type == UL) {
+ if (first_child->type == UL) {
// Revert to plain for this type
line->type = LINE_PLAIN;
break;
@@ -676,29 +680,29 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
// If longer than 1 character, then it can't be a list marker, so it's a
// plain line
- if (line->child->len > 1) {
+ if (first_child->len > 1) {
line->type = LINE_PLAIN;
break;
}
case PLUS:
- if (!line->child->next) {
+ if (!first_child->next) {
// TODO: Should this be an empty list item instead??
line->type = LINE_PLAIN;
} else {
- switch (source[line->child->next->start]) {
+ switch (source[first_child->next->start]) {
case ' ':
case '\t':
line->type = LINE_LIST_BULLETED;
- line->child->type = MARKER_LIST_BULLET;
+ first_child->type = MARKER_LIST_BULLET;
- switch (line->child->next->type) {
+ switch (first_child->next->type) {
case TEXT_PLAIN:
// Strip whitespace between bullet and text
- while (char_is_whitespace(source[line->child->next->start])) {
- line->child->next->start++;
- line->child->next->len--;
+ while (char_is_whitespace(source[first_child->next->start])) {
+ first_child->next->start++;
+ first_child->next->len--;
}
break;
@@ -706,7 +710,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
case INDENT_SPACE:
case INDENT_TAB:
case NON_INDENT_SPACE:
- t = line->child;
+ t = first_child;
while (t->next && ((t->next->type == INDENT_SPACE) ||
(t->next->type == INDENT_TAB) ||
@@ -821,7 +825,7 @@ void mmd_assign_line_type(mmd_engine * e, token * line) {
if ((line->type == LINE_PLAIN) &&
!(e->extensions & EXT_COMPATIBILITY)) {
// Check if this is a potential table line
- token * walker = line->child;
+ token * walker = first_child;
while (walker != NULL) {
if (walker->type == PIPE) {
@@ -1014,12 +1018,24 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_
break;
case TEXT_NL_SP:
- t = token_new(TEXT_NL, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start - 1));
+ case TEXT_LINEBREAK_SP:
case TEXT_LINEBREAK:
case TEXT_NL:
+
// We hit the end of a line
- if (type != TEXT_NL_SP)
- t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start));
+ switch (type) {
+ case TEXT_NL_SP:
+ t = token_new(TEXT_NL, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start) - 1);
+ break;
+
+ case TEXT_LINEBREAK_SP:
+ t = token_new(TEXT_LINEBREAK, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start) - 1);
+ break;
+
+ default:
+ t = token_new(type, (size_t)(s.start - e->dstr->str), (size_t)(s.cur - s.start));
+ break;
+ }
token_append_child(line, t);
@@ -1043,13 +1059,23 @@ token * mmd_tokenize_string(mmd_engine * e, size_t start, size_t len, bool stop_
}
}
- if (type == TEXT_NL_SP) {
- line = token_new(0, s.cur - e->dstr->str - 1, 0);
- t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
- token_append_child(line, t);
- } else {
- line = token_new(0, s.cur - e->dstr->str, 0);
- }
+ switch (type) {
+ case TEXT_NL_SP:
+ line = token_new(0, s.cur - e->dstr->str - 1, 0);
+ t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
+ token_append_child(line, t);
+ break;
+
+ case TEXT_LINEBREAK_SP:
+ line = token_new(0, s.cur - e->dstr->str - 1, 0);
+ t = token_new(NON_INDENT_SPACE, (size_t)(s.cur - e->dstr->str - 1), 1);
+ token_append_child(line, t);
+ break;
+
+ default:
+ line = token_new(0, s.cur - e->dstr->str, 0);
+ break;
+ }
break;
@@ -1961,7 +1987,7 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
#ifndef NDEBUG
fprintf(stderr, "Strip line tokens from %d (%lu:%lu) (child %d)\n", block->type, block->start, block->len, block->child->type);
- token_tree_describe(block, NULL);
+ token_tree_describe(block, e->dstr->str);
#endif
token * l = block->child;
@@ -1997,6 +2023,11 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
// Move contents of line directly into the parent block
while (l != NULL) {
+ // Remove leading non-indent space from line
+ if (block->type != BLOCK_CODE_FENCED && l->child && l->child->type == NON_INDENT_SPACE) {
+ token_remove_first_child(l);
+ }
+
switch (l->type) {
case LINE_SETEXT_1:
case LINE_SETEXT_2:
@@ -2036,11 +2067,6 @@ void strip_line_tokens_from_block(mmd_engine * e, token * block) {
case LINE_STOP_COMMENT:
handle_line:
- // Remove leading non-indent space from line
- if (block->type != BLOCK_CODE_FENCED && l->child && l->child->type == NON_INDENT_SPACE) {
- token_remove_first_child(l);
- }
-
case LINE_INDENTED_TAB:
case LINE_INDENTED_SPACE:
diff --git a/tests/MMD6Tests/Fenced Code Blocks.fodt b/tests/MMD6Tests/Fenced Code Blocks.fodt
index aad64e7..f674b0d 100644
--- a/tests/MMD6Tests/Fenced Code Blocks.fodt
+++ b/tests/MMD6Tests/Fenced Code Blocks.fodt
@@ -303,7 +303,7 @@ office:mimetype="application/vnd.oasis.opendocument.text">
<p>foo</p>
-foobarbar foo
+foobar bar foo
foo
diff --git a/tests/MMD6Tests/Fenced Code Blocks.html b/tests/MMD6Tests/Fenced Code Blocks.html
index b048f38..e52a091 100644
--- a/tests/MMD6Tests/Fenced Code Blocks.html
+++ b/tests/MMD6Tests/Fenced Code Blocks.html
@@ -42,7 +42,7 @@ bar
bar
-bar
+ bar
foo
diff --git a/tests/MMD6Tests/Fenced Code Blocks.tex b/tests/MMD6Tests/Fenced Code Blocks.tex
index c770be1..4a710c3 100644
--- a/tests/MMD6Tests/Fenced Code Blocks.tex
+++ b/tests/MMD6Tests/Fenced Code Blocks.tex
@@ -48,7 +48,7 @@ foo
bar
-bar
+ bar
foo
\end{verbatim}