aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-gr.cpp
diff options
context:
space:
mode:
authorEugene Sandulenko2016-07-01 12:56:13 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit610075cc153411e945cda54b43974e7c7a5becfe (patch)
tree7ac8f0b4f6c4a027f0493a80939cd2cb3c19deff /engines/director/lingo/lingo-gr.cpp
parent8cc88b6fcad2195883f058a2cd0cb3f7c2414acd (diff)
downloadscummvm-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.cpp230
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: