From 8b5a6adfa81d0c1f2cb44497077e7ee99a2f6943 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Sun, 7 Aug 2016 08:08:00 +0200 Subject: [PATCH] DIRECTOR: Lingo: Fixed string parsing --- engines/director/lingo/lingo-lex.cpp | 48 ++++++++++++++-------------- engines/director/lingo/lingo-lex.l | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp index 873aa845650..7a940dab2dd 100644 --- a/engines/director/lingo/lingo-lex.cpp +++ b/engines/director/lingo/lingo-lex.cpp @@ -433,21 +433,21 @@ static yyconst flex_int32_t yy_ec[256] = static yyconst flex_int32_t yy_meta[61] = { 0, - 1, 2, 3, 4, 2, 1, 1, 1, 1, 1, - 5, 1, 1, 1, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 + 1, 2, 3, 3, 2, 1, 1, 1, 1, 1, + 4, 1, 1, 1, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } ; static yyconst flex_int16_t yy_base[202] = { 0, - 0, 59, 187, 469, 63, 67, 71, 75, 169, 469, + 0, 59, 187, 465, 63, 67, 71, 75, 169, 465, 152, 140, 52, 68, 130, 56, 0, 56, 57, 67, 72, 68, 68, 69, 112, 70, 104, 111, 80, 118, - 130, 143, 175, 180, 189, 469, 193, 167, 197, 80, - 136, 469, 469, 0, 93, 90, 469, 469, 469, 0, + 130, 143, 175, 180, 189, 465, 193, 167, 197, 80, + 136, 465, 465, 0, 93, 90, 465, 465, 465, 0, 104, 82, 176, 108, 112, 165, 187, 190, 117, 133, 0, 175, 180, 192, 190, 183, 184, 183, 188, 0, 202, 0, 207, 204, 193, 198, 200, 205, 221, 220, @@ -459,13 +459,13 @@ static yyconst flex_int16_t yy_base[202] = 303, 0, 0, 0, 0, 283, 304, 311, 308, 308, 0, 0, 311, 325, 315, 322, 0, 0, 0, 321, 330, 316, 317, 169, 0, 0, 327, 328, 212, 329, - 324, 0, 330, 469, 325, 0, 334, 340, 0, 332, + 324, 0, 330, 465, 325, 0, 334, 340, 0, 332, 331, 348, 342, 252, 0, 347, 382, 353, 348, 0, 369, 358, 0, 359, 0, 0, 0, 393, 0, 373, - 368, 0, 377, 0, 369, 381, 469, 0, 372, 0, - 404, 376, 409, 0, 414, 469, 444, 446, 452, 457, + 368, 0, 377, 0, 369, 381, 465, 0, 372, 0, + 404, 376, 409, 0, 414, 465, 444, 446, 451, 455, - 462 + 459 } ; static yyconst flex_int16_t yy_def[202] = @@ -495,7 +495,7 @@ static yyconst flex_int16_t yy_def[202] = 196 } ; -static yyconst flex_int16_t yy_nxt[530] = +static yyconst flex_int16_t yy_nxt[526] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 13, 14, 10, 15, 16, 17, 18, 19, 20, 21, @@ -545,19 +545,19 @@ static yyconst flex_int16_t yy_nxt[530] = 193, 183, 184, 193, 185, 196, 187, 189, 196, 196, 186, 188, 190, 196, 191, 196, 192, 196, 180, 194, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 186, 41, 41, 196, 41, 41, 41, - 50, 50, 87, 87, 196, 196, 87, 87, 164, 196, - 196, 196, 164, 195, 196, 196, 196, 195, 3, 196, + 196, 196, 196, 186, 41, 41, 196, 41, 41, 50, + 50, 87, 87, 196, 87, 87, 164, 196, 196, 164, + 195, 196, 196, 195, 3, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196 + 196, 196, 196, 196, 196 } ; -static yyconst flex_int16_t yy_chk[530] = +static yyconst flex_int16_t yy_chk[526] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -607,16 +607,16 @@ static yyconst flex_int16_t yy_chk[530] = 193, 171, 172, 193, 174, 195, 180, 183, 195, 0, 178, 181, 185, 0, 186, 0, 189, 0, 167, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 178, 197, 197, 0, 197, 197, 197, - 198, 198, 199, 199, 0, 0, 199, 199, 200, 0, - 0, 0, 200, 201, 0, 0, 0, 201, 196, 196, + 0, 0, 0, 178, 197, 197, 0, 197, 197, 198, + 198, 199, 199, 0, 199, 199, 200, 0, 0, 200, + 201, 0, 0, 201, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196 + 196, 196, 196, 196, 196 } ; static yy_state_type yy_last_accepting_state; @@ -938,7 +938,7 @@ yy_match: yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 469 ); + while ( yy_base[yy_current_state] != 465 ); yy_find_action: yy_act = yy_accept[yy_current_state]; diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index cc3b48b593d..005d78b455e 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -61,7 +61,7 @@ static void countnl() { identifier [_[:alpha:]][_[:alnum:]]* constfloat [[:digit:]]+\.[[:digit:]]* constinteger [[:digit:]]+ -conststring \"[^\"\n]*\" +conststring \"[^\"\r\n]*\" operator [-+*/%=^:,()><&] newline [ \t]*[\n\r] whitespace [\t ]