diff options
author | Eugene Sandulenko | 2016-07-01 12:56:13 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-08-03 23:40:36 +0200 |
commit | 610075cc153411e945cda54b43974e7c7a5becfe (patch) | |
tree | 7ac8f0b4f6c4a027f0493a80939cd2cb3c19deff /engines/director/lingo/lingo-gr.cpp | |
parent | 8cc88b6fcad2195883f058a2cd0cb3f7c2414acd (diff) | |
download | scummvm-rg350-610075cc153411e945cda54b43974e7c7a5becfe.tar.gz scummvm-rg350-610075cc153411e945cda54b43974e7c7a5becfe.tar.bz2 scummvm-rg350-610075cc153411e945cda54b43974e7c7a5becfe.zip |
DIRECTOR: Lingo: Make built-in functions work (sometimes)
Diffstat (limited to 'engines/director/lingo/lingo-gr.cpp')
-rw-r--r-- | engines/director/lingo/lingo-gr.cpp | 230 |
1 files changed, 115 insertions, 115 deletions
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp index 01329d468b..77d99e3f99 100644 --- a/engines/director/lingo/lingo-gr.cpp +++ b/engines/director/lingo/lingo-gr.cpp @@ -433,7 +433,7 @@ union yyalloc /* YYNRULES -- Number of rules. */ #define YYNRULES 79 /* YYNRULES -- Number of states. */ -#define YYNSTATES 163 +#define YYNSTATES 162 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -485,8 +485,8 @@ static const yytype_uint16 yyprhs[] = 0, 0, 3, 7, 9, 10, 12, 14, 16, 18, 20, 22, 27, 32, 37, 39, 41, 49, 60, 69, 81, 94, 96, 100, 104, 107, 111, 113, 114, 115, - 116, 119, 122, 124, 126, 128, 132, 136, 140, 144, - 148, 152, 156, 160, 164, 167, 170, 174, 179, 182, + 116, 119, 122, 124, 129, 131, 133, 137, 141, 145, + 149, 153, 157, 161, 165, 169, 172, 175, 179, 182, 185, 188, 190, 192, 195, 197, 201, 204, 207, 210, 213, 217, 220, 224, 227, 230, 232, 236, 239, 243, 244, 253, 254, 256, 260, 265, 266, 270, 271, 273 @@ -507,12 +507,12 @@ static const yytype_int8 yyrhs[] = 63, 13, 29, -1, 65, -1, 65, 41, 65, -1, 48, 58, 49, -1, 29, 34, -1, 29, 33, 8, -1, 18, -1, -1, -1, -1, 64, 47, -1, 64, - 57, -1, 6, -1, 8, -1, 56, -1, 65, 42, - 65, -1, 65, 43, 65, -1, 65, 44, 65, -1, - 65, 45, 65, -1, 65, 50, 65, -1, 65, 51, - 65, -1, 65, 40, 65, -1, 65, 35, 65, -1, - 65, 36, 65, -1, 42, 65, -1, 43, 65, -1, - 48, 65, 49, -1, 8, 48, 76, 49, -1, 22, + 57, -1, 6, -1, 8, 48, 76, 49, -1, 8, + -1, 56, -1, 65, 42, 65, -1, 65, 43, 65, + -1, 65, 44, 65, -1, 65, 45, 65, -1, 65, + 50, 65, -1, 65, 51, 65, -1, 65, 40, 65, + -1, 65, 35, 65, -1, 65, 36, 65, -1, 42, + 65, -1, 43, 65, -1, 48, 65, 49, -1, 22, 9, -1, 23, 8, -1, 28, 65, -1, 68, -1, 14, -1, 16, 67, -1, 8, -1, 67, 52, 8, -1, 17, 20, -1, 17, 25, -1, 17, 27, -1, @@ -531,8 +531,8 @@ static const yytype_uint16 yyrline[] = 0, 92, 92, 93, 96, 97, 98, 99, 100, 101, 102, 105, 111, 117, 125, 126, 127, 133, 145, 156, 172, 186, 187, 188, 190, 192, 198, 200, 202, 204, - 205, 206, 209, 214, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 232, 235, 236, + 205, 206, 209, 214, 217, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 235, 236, 237, 238, 239, 240, 243, 244, 255, 256, 257, 258, 263, 269, 276, 277, 278, 279, 282, 283, 284, 312, 312, 318, 319, 320, 321, 323, 326, 334, 335, 336 @@ -578,7 +578,7 @@ static const yytype_uint8 yyr1[] = 55, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 59, 60, 61, 62, 63, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, + 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 67, 67, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 70, 70, 70, 72, 71, 73, 73, 73, 73, 74, 75, 76, 76, 76 @@ -590,8 +590,8 @@ static const yytype_uint8 yyr2[] = 0, 2, 3, 1, 0, 1, 1, 1, 1, 1, 1, 4, 4, 4, 1, 1, 7, 10, 8, 11, 12, 1, 3, 3, 2, 3, 1, 0, 0, 0, - 2, 2, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 2, 2, 3, 4, 2, 2, + 2, 2, 1, 4, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 3, 2, 2, 2, 1, 1, 2, 1, 3, 2, 2, 2, 2, 3, 2, 3, 2, 2, 1, 3, 2, 3, 0, 8, 0, 1, 3, 4, 0, 3, 0, 1, 3 @@ -603,30 +603,30 @@ static const yytype_uint8 yyr2[] = static const yytype_uint8 yydefact[] = { 0, 10, 32, 27, 52, 0, 0, 26, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 34, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 35, 9, 0, 0, 0, 14, 6, 51, 5, 7, 77, 77, 54, 53, 65, 0, 56, 0, 57, 0, 58, - 0, 59, 61, 69, 48, 49, 33, 0, 34, 50, - 0, 24, 0, 44, 45, 0, 1, 0, 0, 0, + 0, 59, 61, 69, 48, 49, 34, 0, 35, 50, + 0, 24, 0, 45, 46, 0, 1, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 76, 0, 63, 67, 0, 64, 0, 0, 0, 60, 27, 0, 0, 25, 0, 0, - 46, 2, 0, 28, 0, 0, 29, 0, 42, 43, - 41, 35, 36, 37, 38, 39, 40, 47, 0, 55, + 47, 2, 0, 28, 0, 0, 29, 0, 43, 44, + 42, 36, 37, 38, 39, 40, 41, 33, 0, 55, 66, 62, 68, 71, 11, 13, 12, 29, 0, 23, - 28, 22, 79, 72, 0, 28, 0, 0, 33, 30, - 31, 0, 15, 75, 0, 0, 0, 28, 29, 0, - 0, 29, 73, 0, 28, 29, 28, 16, 74, 70, - 18, 29, 28, 0, 28, 0, 0, 0, 0, 17, - 0, 19, 20 + 28, 22, 79, 72, 0, 28, 0, 0, 30, 31, + 0, 15, 75, 0, 0, 0, 28, 29, 0, 0, + 29, 73, 0, 28, 29, 28, 16, 74, 70, 18, + 29, 28, 0, 28, 0, 0, 0, 0, 17, 0, + 19, 20 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 17, 18, 48, 130, 61, 21, 22, 23, 30, - 118, 120, 24, 132, 32, 26, 41, 42, 27, 84, - 124, 141, 28, 73 + -1, 17, 18, 48, 129, 61, 21, 22, 23, 30, + 118, 120, 24, 131, 32, 26, 41, 42, 27, 84, + 124, 140, 28, 73 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -634,65 +634,65 @@ static const yytype_int16 yydefgoto[] = #define YYPACT_NINF -117 static const yytype_int16 yypact[] = { - 66, -117, -117, 192, -117, 26, 151, -117, 29, 32, - 36, 3, -13, 42, 3, 3, 3, 62, 28, 14, - -117, 25, 38, 63, 180, -117, -117, -117, -117, 3, + 66, -117, -117, 192, -117, 19, 151, -117, 24, 29, + 42, 3, 9, 54, 3, 3, 3, 16, 26, 14, + -117, 27, 38, 63, 180, -117, -117, -117, -117, 3, 3, -117, 33, -117, 72, -117, 81, -117, 68, -117, - 15, 44, -117, -117, -117, -117, -117, 3, -117, 119, - 92, -117, -15, -8, -8, 156, -117, 66, 63, 3, - 63, 70, 168, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 180, -36, 50, 95, -117, -117, 98, -117, - 106, 108, 80, -117, -117, 119, 111, -117, 3, 3, - -117, -117, 74, 180, 79, 144, -117, 3, 180, 180, - 180, 209, 209, -8, -8, 180, 180, -117, 3, -117, - -117, -117, -117, 122, -117, 180, 180, -117, -9, -117, - 104, 180, 180, -117, -37, 104, 99, 3, 87, -117, - -117, 86, -117, 84, 129, 126, 3, 180, -117, 124, - 132, -117, -117, 114, 180, -117, 104, -117, -117, 104, - -117, -117, 104, 131, 104, 136, 127, 140, 128, -117, - 138, -117, -117 + 20, 44, -117, -117, -117, -117, 52, 3, -117, 119, + 93, -117, -19, -10, -10, 156, -117, 66, 63, 3, + 63, 71, 168, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 180, -32, 51, 96, -117, -117, 98, -117, + 106, 108, 95, -117, -117, 119, 115, -117, 3, 3, + -117, -117, 79, 180, 80, 144, -117, 3, 180, 180, + 180, 209, 209, -10, -10, 180, 180, -117, 3, -117, + -117, -117, -117, 123, -117, 180, 180, -117, -9, -117, + 104, 180, 180, -117, -37, 104, 103, 3, -117, -117, + 86, -117, 84, 129, 126, 3, 180, -117, 122, 134, + -117, -117, 114, 180, -117, 104, -117, -117, 104, -117, + -117, 104, 131, 104, 132, 135, 136, 128, -117, 138, + -117, -117 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -117, 115, -117, 6, 7, -20, -117, -117, -117, 89, - 4, -116, -11, 8, -117, -117, -117, 133, -117, -117, - -117, -117, -117, 135 + -117, 111, -117, 6, 7, -21, -117, -117, -117, 88, + 5, -116, -11, 8, -117, -117, -117, 124, -117, -117, + -117, -117, -117, 143 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -34 +#define YYTABLE_NINF -35 static const yytype_int16 yytable[] = { 49, 125, 126, 53, 54, 55, 19, 20, 25, 2, - 133, 46, 62, 107, -8, 134, 108, 88, 72, 72, - 50, 51, 146, 127, 79, 149, 89, 63, 64, 152, - 80, 47, 65, 13, 31, 154, 85, 43, 92, 81, - 94, 44, 70, 71, 45, 14, 15, 62, 93, 95, - 52, 16, 98, 99, 100, 101, 102, 103, 104, 105, - 106, -8, 56, 19, 20, 25, -4, 1, 36, 2, - 38, 46, 2, 58, 3, 57, 82, 115, 116, 59, + 132, 46, 62, 88, -8, 133, 56, 107, 72, 72, + 108, 145, 89, 127, 148, 63, 64, 31, 151, 79, + 65, 47, 43, 13, 153, 80, 85, 92, 44, 94, + 70, 71, 50, 51, 81, 14, 15, 62, 93, 95, + 45, 16, 98, 99, 100, 101, 102, 103, 104, 105, + 106, -8, 52, 19, 20, 25, -4, 1, 36, 2, + 38, 46, 2, 57, 3, 58, 82, 115, 116, 59, 4, 76, 5, 6, 7, 75, 121, 8, 9, 10, - 77, 47, 78, 13, 11, 12, 13, 122, 138, 139, - 87, 96, 108, 109, 81, 14, 15, 110, 14, 15, - 2, 60, 128, -4, 16, 111, 137, 112, 4, 114, - 5, 6, 7, 117, 131, 144, 9, 10, 119, 135, - 123, 136, 11, 12, 13, 29, 140, 142, 86, 143, - 148, 145, 147, 150, 156, 159, 14, 15, 151, 158, - 153, 129, 16, 160, 63, 64, 155, 161, 157, 65, - 33, 66, 67, 68, 69, 74, 34, 162, 0, 70, - 71, 35, 91, 113, 83, 36, 37, 38, 39, 63, + 77, 47, 78, 13, 11, 12, 13, 122, 137, 138, + 29, 87, 96, 108, 109, 14, 15, 110, 14, 15, + 2, 60, 46, -4, 16, 111, 136, 112, 4, 81, + 5, 6, 7, 114, 143, 130, 9, 10, 117, 119, + 134, 123, 11, 12, 13, 135, 139, 141, 86, 142, + 146, 144, 147, 149, 155, 157, 14, 15, 150, 159, + 152, 128, 16, 158, 63, 64, 154, 160, 156, 65, + 33, 66, 67, 68, 69, 83, 34, 161, 91, 70, + 71, 35, 113, 74, 0, 36, 37, 38, 39, 63, 64, 0, 0, 40, 65, 97, 66, 67, 68, 69, 0, 63, 64, 90, 70, 71, 65, 0, 66, 67, 68, 69, 0, 63, 64, 90, 70, 71, 65, 97, 66, 67, 68, 69, 0, 63, 64, 0, 70, 71, - 65, 0, 66, 67, 68, 69, 0, -33, -33, 0, - 70, 71, -33, 0, 0, 0, -33, -33, 0, 0, - 29, 0, -33, -33, 63, 64, 0, 0, 0, 65, + 65, 0, 66, 67, 68, 69, 0, -34, -34, 0, + 70, 71, -34, 0, 0, 0, -34, -34, 0, 0, + 29, 0, -34, -34, 63, 64, 0, 0, 0, 65, 0, 0, 0, 68, 69, 0, 0, 0, 0, 70, 71 }; @@ -700,23 +700,23 @@ static const yytype_int16 yytable[] = static const yytype_int16 yycheck[] = { 11, 117, 11, 14, 15, 16, 0, 0, 0, 6, - 47, 8, 23, 49, 0, 52, 52, 32, 29, 30, - 33, 34, 138, 32, 9, 141, 41, 35, 36, 145, - 15, 28, 40, 30, 8, 151, 47, 8, 58, 24, - 60, 9, 50, 51, 8, 42, 43, 58, 59, 60, + 47, 8, 23, 32, 0, 52, 0, 49, 29, 30, + 52, 137, 41, 32, 140, 35, 36, 8, 144, 9, + 40, 28, 8, 30, 150, 15, 47, 58, 9, 60, + 50, 51, 33, 34, 24, 42, 43, 58, 59, 60, 8, 48, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 47, 0, 57, 57, 57, 0, 1, 24, 6, - 26, 8, 6, 48, 8, 47, 32, 88, 89, 41, + 71, 47, 8, 57, 57, 57, 0, 1, 24, 6, + 26, 8, 6, 47, 8, 48, 32, 88, 89, 41, 14, 9, 16, 17, 18, 52, 97, 21, 22, 23, 9, 28, 24, 30, 28, 29, 30, 108, 12, 13, - 8, 31, 52, 8, 24, 42, 43, 9, 42, 43, - 6, 48, 8, 47, 48, 9, 127, 9, 14, 8, - 16, 17, 18, 49, 120, 136, 22, 23, 49, 125, - 8, 32, 28, 29, 30, 48, 52, 8, 19, 13, - 8, 137, 18, 29, 13, 18, 42, 43, 144, 13, - 146, 47, 48, 13, 35, 36, 152, 29, 154, 40, - 9, 42, 43, 44, 45, 30, 15, 29, -1, 50, - 51, 20, 57, 84, 41, 24, 25, 26, 27, 35, + 48, 8, 31, 52, 8, 42, 43, 9, 42, 43, + 6, 48, 8, 47, 48, 9, 127, 9, 14, 24, + 16, 17, 18, 8, 135, 120, 22, 23, 49, 49, + 125, 8, 28, 29, 30, 32, 52, 8, 19, 13, + 18, 136, 8, 29, 13, 13, 42, 43, 143, 13, + 145, 47, 48, 18, 35, 36, 151, 29, 153, 40, + 9, 42, 43, 44, 45, 41, 15, 29, 57, 50, + 51, 20, 84, 30, -1, 24, 25, 26, 27, 35, 36, -1, -1, 32, 40, 41, 42, 43, 44, 45, -1, 35, 36, 49, 50, 51, 40, -1, 42, 43, 44, 45, -1, 35, 36, 49, 50, 51, 40, 41, @@ -744,11 +744,11 @@ static const yytype_uint8 yystos[] = 49, 54, 58, 65, 58, 65, 31, 41, 65, 65, 65, 65, 65, 65, 65, 65, 65, 49, 52, 8, 9, 9, 9, 62, 8, 65, 65, 49, 63, 49, - 64, 65, 65, 8, 73, 64, 11, 32, 8, 47, - 57, 63, 66, 47, 52, 63, 32, 65, 12, 13, - 52, 74, 8, 13, 65, 63, 64, 18, 8, 64, - 29, 63, 64, 63, 64, 63, 13, 63, 13, 18, - 13, 29, 29 + 64, 65, 65, 8, 73, 64, 11, 32, 47, 57, + 63, 66, 47, 52, 63, 32, 65, 12, 13, 52, + 74, 8, 13, 65, 63, 64, 18, 8, 64, 29, + 63, 64, 63, 64, 63, 13, 63, 13, 18, 13, + 29, 29 }; #define yyerrok (yyerrstatus = 0) @@ -1727,75 +1727,75 @@ yyreduce: case 33: #line 214 "engines/director/lingo/lingo-gr.y" { - (yyval.code) = g_lingo->codeId(*(yyvsp[(1) - (1)].s)); - delete (yyvsp[(1) - (1)].s); ;} + (yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); + delete (yyvsp[(1) - (4)].s); ;} break; - case 35: -#line 218 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_add); ;} + case 34: +#line 217 "engines/director/lingo/lingo-gr.y" + { + (yyval.code) = g_lingo->codeId(*(yyvsp[(1) - (1)].s)); + delete (yyvsp[(1) - (1)].s); ;} break; case 36: -#line 219 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_sub); ;} +#line 221 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_add); ;} break; case 37: -#line 220 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_mul); ;} +#line 222 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_sub); ;} break; case 38: -#line 221 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_div); ;} +#line 223 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_mul); ;} break; case 39: -#line 222 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_gt); ;} +#line 224 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_div); ;} break; case 40: -#line 223 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_lt); ;} +#line 225 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_gt); ;} break; case 41: -#line 224 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_neq); ;} +#line 226 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_lt); ;} break; case 42: -#line 225 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_ge); ;} +#line 227 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_neq); ;} break; case 43: -#line 226 "engines/director/lingo/lingo-gr.y" - { g_lingo->code1(g_lingo->c_le); ;} +#line 228 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_ge); ;} break; case 44: -#line 227 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); ;} +#line 229 "engines/director/lingo/lingo-gr.y" + { g_lingo->code1(g_lingo->c_le); ;} break; case 45: -#line 228 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} +#line 230 "engines/director/lingo/lingo-gr.y" + { (yyval.code) = (yyvsp[(2) - (2)].code); ;} break; case 46: -#line 229 "engines/director/lingo/lingo-gr.y" - { (yyval.code) = (yyvsp[(2) - (3)].code); ;} +#line 231 "engines/director/lingo/lingo-gr.y" + { (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;} break; case 47: #line 232 "engines/director/lingo/lingo-gr.y" - { - g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg)); - delete (yyvsp[(1) - (4)].s); ;} + { (yyval.code) = (yyvsp[(2) - (3)].code); ;} break; case 48: |