From 1b53a2ce75c0bd693d0a3f6c26805b0ea8f2fc15 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Wed, 8 Feb 2017 10:53:27 +0100 Subject: DIRECTOR: Lingo: Fix 'when..then' statement --- engines/director/lingo/lingo-gr.cpp | 184 ++++++++++++++++++------------------ engines/director/lingo/lingo-gr.y | 2 +- 2 files changed, 93 insertions(+), 93 deletions(-) (limited to 'engines') diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index e25e206024..2bafc1e513 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -621,7 +621,7 @@ static const yytype_int16 yyrhs[] = 124, -1, 105, -1, 107, -1, 114, 93, 113, 94, 120, 119, 28, -1, 115, 85, 123, 119, 49, 123, 119, 120, 119, 28, -1, 115, 85, 123, 119, 30, - 49, 123, 119, 120, 119, 28, -1, 121, 123, 119, + 49, 123, 119, 120, 119, 28, -1, 121, 105, 119, -1, 122, 123, 102, 120, 119, 28, -1, 122, 123, 49, 123, -1, 116, 113, 48, 102, 120, 119, 28, -1, 116, 113, 48, 102, 120, 119, 53, 120, 119, @@ -841,39 +841,39 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -278 static const yytype_int16 yypact[] = { - 294, -76, -278, -278, 902, -278, -278, 902, 902, 902, - 32, -278, 902, 960, -278, -278, -278, -21, 40, 807, - -278, 48, 902, 45, 46, 50, 56, 66, 902, 865, - 74, 902, 902, 902, 902, 902, 902, -278, 75, -62, - 902, 902, 902, 902, 2, -278, -278, -278, -278, -278, - 8, 15, 997, 902, 902, 1506, -278, -278, -278, -278, - -278, -278, -278, 21, 902, 1506, 1506, 1506, 1506, 26, - 902, 1506, 902, 26, 902, -278, -278, 47, 902, -278, - 902, -278, 104, -278, 1506, 25, -278, -278, 1026, 125, - -278, -38, 902, -37, 102, -278, -278, 1346, -278, 25, - -278, -278, 52, -45, 1058, 1090, 1122, 1154, 1378, -278, - 130, -45, -45, 1442, 1506, 24, -278, 381, 997, 902, - 997, 107, 1474, 1506, 706, 902, 902, 902, 902, 902, + 294, -36, -278, -278, 902, -278, -278, 902, 902, 902, + 7, -278, 902, 960, -278, -278, -278, 18, 46, 807, + -278, 54, 902, 52, 48, 63, 66, 68, 902, 865, + 70, 902, 902, 902, 902, 902, 902, -278, 73, -17, + 902, 902, 902, 902, 6, -278, -278, -278, -278, -278, + 8, 14, 997, 729, 902, 1506, -278, -278, -278, -278, + -278, -278, -278, 29, 902, 1506, 1506, 1506, 1506, 17, + 902, 1506, 902, 17, 902, -278, -278, 24, 902, -278, + 902, -278, 77, -278, 1506, 25, -278, -278, 1026, 101, + -278, -45, 902, -38, 95, -278, -278, 1346, -278, 25, + -278, -278, 49, -13, 1058, 1090, 1122, 1154, 1378, -278, + 121, -13, -13, 1442, 1506, 12, -278, 381, 997, 902, + 997, 102, 1474, -278, 706, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, - 902, 902, 1026, 902, 59, 1442, -77, 59, 137, 1506, - 1506, 902, -278, -278, 140, 902, 902, -278, 902, 902, - 1314, 902, 902, -278, -278, 902, -278, 141, 902, 902, - 902, 902, 902, 902, 902, 902, 902, 902, -278, 19, - -278, -278, 902, -278, 73, 1506, 85, 1410, -76, 902, - -278, 902, -278, 16, 16, 16, -45, -45, -45, 1506, - 16, 16, 20, 197, 197, -45, -45, 1506, 1506, 1506, - -278, -278, 1506, 157, -278, 1506, 1506, 1506, 1506, 902, - 902, 1506, 1506, 157, 1506, -278, 1506, 1186, 1506, 1218, + 902, 902, 1026, 902, 50, 1442, -78, 50, 127, 1506, + 1506, 902, -278, -278, 130, 902, 902, -278, 902, 902, + 1314, 902, 902, -278, -278, 902, -278, 131, 902, 902, + 902, 902, 902, 902, 902, 902, 902, 902, -278, -77, + -278, -278, 902, -278, 64, 1506, 67, 1410, -36, 902, + -278, 902, -278, 19, 19, 19, -13, -13, -13, 1506, + 19, 19, 197, 140, 140, -13, -13, 1506, 1506, 1506, + -278, -278, 1506, 141, -278, 1506, 1506, 1506, 1506, 902, + 902, 1506, 1506, 141, 1506, -278, 1506, 1186, 1506, 1218, 1506, 1250, 1506, 1282, 1506, 1506, -278, -278, 902, 1506, - -278, 27, -278, -278, 729, 1506, 1506, 555, -278, -73, - 1506, 1506, -73, 902, 902, 902, 902, 157, 49, 555, - 133, 902, 555, -278, -278, -278, 160, 161, 90, 90, - 1506, 1506, 1506, 1506, -73, -278, 165, 902, 1506, -7, - 7, -278, -278, 170, -278, -278, 90, -278, 1506, -278, - -278, -278, 164, -278, -278, 164, -278, 997, -278, 555, - 555, -278, -278, 555, 555, 164, 164, -278, 997, 729, - -278, 146, 152, 468, 555, 176, 177, -278, 178, 159, - -278, -278, -278, -278, -278, 180, -278, -278, -278, -278, + -278, 9, -278, -278, 729, 1506, 1506, 555, -278, -73, + 1506, 1506, -73, 902, 902, 902, 902, 141, -10, 555, + 115, 902, 555, -278, -278, -278, 139, 155, 82, 82, + 1506, 1506, 1506, 1506, -73, -278, 154, 902, 1506, -3, + -5, -278, -278, 160, -278, -278, 82, -278, 1506, -278, + -278, -278, 153, -278, -278, 153, -278, 997, -278, 555, + 555, -278, -278, 555, 555, 153, 153, -278, 997, 729, + -278, 134, 146, 468, 555, 161, 168, -278, 171, 152, + -278, -278, -278, -278, -278, 176, -278, -278, -278, -278, -278, 729, -278, 642, -278, 642, -278, -278, 555, -278, -278 }; @@ -881,11 +881,11 @@ static const yytype_int16 yypact[] = /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -278, -278, 23, 92, -278, -240, 0, -278, -278, -278, - -70, -211, -93, -117, -278, -278, -278, -277, -126, -61, - -56, -278, -278, 1, -278, -278, -278, -278, 185, -22, - -278, -278, -278, -278, -278, -278, -278, -217, -208, -278, - -25, 202 + -278, -278, 23, 71, -278, -51, 0, -278, -278, -278, + -75, -226, -97, -117, -278, -278, -278, -277, -126, -61, + -189, -278, -278, 1, -278, -278, -278, -278, 181, -22, + -278, -278, -278, -278, -278, -278, -278, -211, -212, -278, + -25, 201 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -895,35 +895,35 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -7 static const yytype_int16 yytable[] = { - 48, 184, 116, 186, 263, 65, 252, 100, 66, 67, - 68, 158, 161, 71, 68, 308, 61, 210, 115, 61, - 84, 290, 182, 88, 62, 75, 267, 131, 308, 97, - 84, 110, 103, 104, 105, 106, 107, 108, 223, 293, - 274, 111, 112, 113, 114, 144, 291, 159, 162, 147, - 139, 140, 236, 122, 123, 124, 70, 260, 91, 92, - 294, 285, 244, 152, 76, 142, 80, 117, 82, 320, - 93, 114, 87, 145, 94, 114, 261, 166, 301, 149, - 95, 150, 128, 129, 310, 130, 128, 129, 131, 130, - 96, 336, 131, 160, 61, 310, 89, 90, 101, 109, - 119, 118, 134, 135, 136, 137, 138, 135, 136, 137, - 138, 139, 140, 237, 141, 139, 140, 48, 238, 122, - 185, 187, 181, 182, 241, 143, 193, 194, 195, 196, + 48, 184, 123, 186, 158, 65, 116, 100, 66, 67, + 68, 161, 252, 71, 68, 308, 210, 237, 115, 61, + 84, 182, 238, 88, 62, 290, 267, 293, 308, 97, + 84, 70, 103, 104, 105, 106, 107, 108, 223, 260, + 159, 111, 112, 113, 114, 144, 274, 162, 294, 147, + 291, 259, 236, 122, 262, 124, 61, 285, 261, 131, + 91, 92, 244, 152, 75, 142, 80, 117, 82, 310, + 76, 114, 93, 145, 301, 114, 110, 166, 87, 149, + 310, 150, 139, 140, 275, 128, 129, 94, 130, 182, + 95, 131, 96, 160, 101, 299, 300, 109, 61, 119, + 303, 118, 304, 89, 90, 134, 135, 136, 137, 138, + 181, 182, 313, 314, 139, 140, 143, 48, 151, 122, + 185, 187, 141, 148, 241, 157, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 114, 275, 209, 151, 148, 192, 182, 157, - 163, 167, 212, 292, 179, 188, 215, 216, 182, 217, - 218, 211, 221, 222, 214, 225, 224, 240, 309, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 242, - 312, 248, 277, 239, 259, 282, 266, 262, 281, 283, - 245, 319, 246, 287, 298, 331, 293, 333, 276, 321, - 323, 279, 280, 335, 326, 327, 328, 329, 334, 183, - 295, 243, 317, 258, 99, 73, 0, 289, 0, 0, - 250, 251, 0, 0, 0, 0, 0, 302, 299, 300, - 0, 0, 0, 303, 311, 304, 0, 0, 0, 114, - 0, 0, 315, 316, 318, 313, 314, 0, 0, 0, - 0, 0, 0, 325, 270, 271, 272, 273, 0, 330, + 207, 208, 114, 163, 209, 179, 338, 192, 167, 182, + 188, 211, 212, 292, 214, 225, 215, 216, 240, 217, + 218, 242, 221, 222, 277, 248, 224, 281, 309, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 282, + 312, 283, 287, 239, 298, 293, 266, 321, 183, 326, + 245, 319, 246, 263, 323, 331, 327, 333, 276, 328, + 329, 279, 280, 335, 334, 295, 128, 129, 317, 130, + 99, 243, 131, 258, 73, 0, 0, 289, 0, 0, + 250, 251, 0, 0, 0, 0, 0, 302, 0, 137, + 138, 0, 0, 0, 311, 139, 140, 0, 0, 114, + 0, 0, 315, 316, 318, 0, 0, 0, 0, 0, + 0, 0, 0, 325, 270, 271, 272, 273, 320, 330, 0, 332, 278, 128, 129, 0, 130, 0, 0, 131, - 0, 0, 268, 0, 0, 269, 339, 340, 288, 338, - 0, 0, 0, 0, 0, 0, 137, 138, 0, 0, + 0, 0, 268, 0, 0, 269, 339, 340, 288, 0, + 336, 0, 0, 0, 135, 136, 137, 138, 0, 0, 0, 0, 139, 140, -6, 1, 0, 286, 122, 0, 0, 0, 0, 0, 0, 2, 3, 4, 5, 122, 6, 7, 8, 9, 10, 0, 11, 12, 13, 14, @@ -1060,35 +1060,35 @@ static const yytype_int16 yytable[] = static const yytype_int16 yycheck[] = { - 0, 118, 0, 120, 244, 4, 223, 29, 7, 8, - 9, 49, 49, 12, 13, 292, 92, 94, 43, 92, - 19, 28, 99, 22, 1, 46, 99, 72, 305, 28, - 29, 93, 31, 32, 33, 34, 35, 36, 164, 32, - 257, 40, 41, 42, 43, 70, 53, 85, 85, 74, - 95, 96, 178, 52, 53, 54, 24, 30, 12, 13, - 53, 269, 188, 85, 24, 64, 41, 44, 43, 309, - 24, 70, 24, 72, 24, 74, 49, 99, 286, 78, - 24, 80, 66, 67, 295, 69, 66, 67, 72, 69, - 24, 331, 72, 92, 92, 306, 51, 52, 24, 24, - 85, 93, 86, 87, 88, 89, 90, 87, 88, 89, - 90, 95, 96, 94, 93, 95, 96, 117, 99, 118, - 119, 120, 98, 99, 185, 99, 125, 126, 127, 128, + 0, 118, 53, 120, 49, 4, 0, 29, 7, 8, + 9, 49, 223, 12, 13, 292, 94, 94, 43, 92, + 19, 99, 99, 22, 1, 28, 99, 32, 305, 28, + 29, 24, 31, 32, 33, 34, 35, 36, 164, 30, + 85, 40, 41, 42, 43, 70, 257, 85, 53, 74, + 53, 240, 178, 52, 243, 54, 92, 269, 49, 72, + 12, 13, 188, 85, 46, 64, 41, 44, 43, 295, + 24, 70, 24, 72, 286, 74, 93, 99, 24, 78, + 306, 80, 95, 96, 94, 66, 67, 24, 69, 99, + 24, 72, 24, 92, 24, 284, 285, 24, 92, 85, + 289, 93, 291, 51, 52, 86, 87, 88, 89, 90, + 98, 99, 301, 302, 95, 96, 99, 117, 41, 118, + 119, 120, 93, 99, 185, 24, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 94, 143, 41, 99, 124, 99, 24, - 48, 99, 151, 279, 24, 48, 155, 156, 99, 158, - 159, 24, 161, 162, 24, 24, 165, 94, 294, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 94, - 297, 24, 49, 182, 240, 24, 247, 243, 28, 99, - 189, 308, 191, 28, 24, 321, 32, 323, 259, 53, - 48, 262, 263, 329, 28, 28, 28, 48, 28, 117, - 280, 188, 305, 238, 29, 13, -1, 278, -1, -1, - 219, 220, -1, -1, -1, -1, -1, 288, 284, 285, - -1, -1, -1, 289, 295, 291, -1, -1, -1, 238, - -1, -1, 303, 304, 305, 301, 302, -1, -1, -1, - -1, -1, -1, 314, 253, 254, 255, 256, -1, 320, + 139, 140, 141, 48, 143, 24, 335, 124, 99, 99, + 48, 24, 151, 279, 24, 24, 155, 156, 94, 158, + 159, 94, 161, 162, 49, 24, 165, 28, 294, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 24, + 297, 99, 28, 182, 24, 32, 247, 53, 117, 28, + 189, 308, 191, 244, 48, 321, 28, 323, 259, 28, + 48, 262, 263, 329, 28, 280, 66, 67, 305, 69, + 29, 188, 72, 238, 13, -1, -1, 278, -1, -1, + 219, 220, -1, -1, -1, -1, -1, 288, -1, 89, + 90, -1, -1, -1, 295, 95, 96, -1, -1, 238, + -1, -1, 303, 304, 305, -1, -1, -1, -1, -1, + -1, -1, -1, 314, 253, 254, 255, 256, 309, 320, -1, 322, 261, 66, 67, -1, 69, -1, -1, 72, - -1, -1, 249, -1, -1, 252, 337, 338, 277, 335, - -1, -1, -1, -1, -1, -1, 89, 90, -1, -1, + -1, -1, 249, -1, -1, 252, 337, 338, 277, -1, + 331, -1, -1, -1, 87, 88, 89, 90, -1, -1, -1, -1, 95, 96, 0, 1, -1, 274, 297, -1, -1, -1, -1, -1, -1, 11, 12, 13, 14, 308, 16, 17, 18, 19, 20, -1, 22, 23, 24, 25, @@ -1239,7 +1239,7 @@ static const yytype_uint8 yystos[] = 52, 12, 13, 24, 24, 24, 24, 123, 58, 128, 129, 24, 126, 123, 123, 123, 123, 123, 123, 24, 93, 123, 123, 123, 123, 140, 0, 102, 93, 85, - 93, 113, 123, 123, 123, 60, 61, 65, 66, 67, + 93, 113, 123, 105, 123, 60, 61, 65, 66, 67, 69, 72, 73, 74, 86, 87, 88, 89, 90, 95, 96, 93, 123, 99, 140, 123, 140, 140, 99, 123, 123, 41, 129, 133, 38, 70, 71, 24, 49, 85, diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index 39cb8a2c0d..f20c4e8d30 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -240,7 +240,7 @@ stmt: stmtoneliner (*g_lingo->_currentScript)[$1 + 5] = end; /* end, if cond fails */ checkEnd($11, "repeat", true); } - | when expr end { + | when stmtoneliner end { inst end = 0; WRITE_UINT32(&end, $3); g_lingo->code1(STOP); -- cgit v1.2.3