aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorEugene Sandulenko2016-08-04 15:52:24 +0200
committerEugene Sandulenko2016-08-04 15:52:24 +0200
commit266e8e6611950e02a9c9feb8492c0a552deee702 (patch)
treeeb1547da7985d5f0f7c1bab61ee480b3c3f992be /engines
parente7cc065c6ce646acb291d1d7784f20dffa3929d2 (diff)
downloadscummvm-rg350-266e8e6611950e02a9c9feb8492c0a552deee702.tar.gz
scummvm-rg350-266e8e6611950e02a9c9feb8492c0a552deee702.tar.bz2
scummvm-rg350-266e8e6611950e02a9c9feb8492c0a552deee702.zip
DIRECTOR: Lingo: Add prefix 'v' to all Symbol types.
Helps WinCE backend which has lots of them defined.
Diffstat (limited to 'engines')
-rw-r--r--engines/director/lingo/lingo-builtins.cpp20
-rw-r--r--engines/director/lingo/lingo-code.cpp116
-rw-r--r--engines/director/lingo/lingo-codegen.cpp6
-rw-r--r--engines/director/lingo/lingo-gr.cpp712
-rw-r--r--engines/director/lingo/lingo-gr.h68
-rw-r--r--engines/director/lingo/lingo-gr.y48
-rw-r--r--engines/director/lingo/lingo-lex.cpp18
-rw-r--r--engines/director/lingo/lingo-lex.l18
-rw-r--r--engines/director/lingo/lingo-the.cpp26
-rw-r--r--engines/director/lingo/lingo.cpp56
-rw-r--r--engines/director/lingo/lingo.h16
11 files changed, 553 insertions, 551 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp
index e44fc69c51..d4acc1a182 100644
--- a/engines/director/lingo/lingo-builtins.cpp
+++ b/engines/director/lingo/lingo-builtins.cpp
@@ -62,7 +62,7 @@ void Lingo::initBuiltIns() {
sym->name = (char *)calloc(strlen(blt->name) + 1, 1);
Common::strlcpy(sym->name, blt->name, strlen(blt->name));
- sym->type = BLTIN;
+ sym->type = vBLTIN;
sym->nargs = blt->nparams;
sym->u.func = blt->func;
@@ -76,9 +76,9 @@ void Lingo::initBuiltIns() {
void Lingo::b_abs() {
Datum d = g_lingo->pop();
- if (d.type == INT)
+ if (d.type == vINT)
d.u.i = ABS(d.u.i);
- else if (d.type == FLOAT)
+ else if (d.type == vFLOAT)
d.u.f = ABS(d.u.f);
g_lingo->push(d);
@@ -148,7 +148,7 @@ void Lingo::b_random() {
max.toInt();
res.u.i = g_lingo->_vm->_rnd.getRandomNumber(max.u.i);
- res.type = INT;
+ res.type = vINT;
g_lingo->push(res);
}
@@ -182,7 +182,7 @@ void Lingo::b_chars() {
Datum from = g_lingo->pop();
Datum s = g_lingo->pop();
- if (s.type != STRING)
+ if (s.type != vSTRING)
error("Incorrect type for 'chars' function: %s", s.type2str());
to.toInt();
@@ -197,21 +197,21 @@ void Lingo::b_chars() {
delete s.u.s;
s.u.s = res;
- s.type = STRING;
+ s.type = vSTRING;
g_lingo->push(s);
}
void Lingo::b_length() {
Datum d = g_lingo->pop();
- if (d.type != STRING)
+ if (d.type != vSTRING)
error("Incorrect type for 'length' function: %s", d.type2str());
int len = strlen(d.u.s->c_str());
delete d.u.s;
d.u.i = len;
- d.type = INT;
+ d.type = vINT;
g_lingo->push(d);
}
@@ -235,7 +235,7 @@ void Lingo::b_updatestage() {
void Lingo::b_ilk() {
Datum d = g_lingo->pop();
d.u.i = d.type;
- d.type = SYMBOL;
+ d.type = vSYMBOL;
g_lingo->push(d);
}
@@ -254,7 +254,7 @@ void Lingo::b_point() {
d.u.arr->push_back(x.u.f);
d.u.arr->push_back(y.u.f);
- d.type = POINT;
+ d.type = vPOINT;
g_lingo->push(d);
}
diff --git a/engines/director/lingo/lingo-code.cpp b/engines/director/lingo/lingo-code.cpp
index f48f29ad50..b0099dc1b9 100644
--- a/engines/director/lingo/lingo-code.cpp
+++ b/engines/director/lingo/lingo-code.cpp
@@ -58,7 +58,7 @@ void Lingo::push(Datum d) {
void Lingo::pushVoid() {
Datum d;
d.u.i = 0;
- d.type = VOIDVAL;
+ d.type = vVOID;
push(d);
}
@@ -80,16 +80,16 @@ void Lingo::c_printtop(void) {
Datum d = g_lingo->pop();
switch (d.type) {
- case VOIDVAL:
+ case vVOID:
warning("Void");
break;
- case INT:
+ case vINT:
warning("%d", d.u.i);
break;
- case FLOAT:
+ case vFLOAT:
warning(g_lingo->_floatPrecisionFormat.c_str(), d.u.f);
break;
- case VAR:
+ case vVAR:
if (!d.u.sym) {
warning("Inconsistent stack: var, val: %d", d.u.i);
} else {
@@ -99,13 +99,13 @@ void Lingo::c_printtop(void) {
warning("Nameless var. val: %d", d.u.sym->u.i);
}
break;
- case STRING:
+ case vSTRING:
warning("%s", d.u.s->c_str());
break;
- case POINT:
+ case vPOINT:
warning("point(%d, %d)", (int)((*d.u.arr)[0]), (int)((*d.u.arr)[1]));
break;
- case SYMBOL:
+ case vSYMBOL:
warning("%s", d.type2str(true));
break;
default:
@@ -117,7 +117,7 @@ void Lingo::c_constpush() {
Datum d;
inst i = (*g_lingo->_currentScript)[g_lingo->_pc++];
d.u.i = READ_UINT32(&i);
- d.type = INT;
+ d.type = vINT;
g_lingo->push(d);
}
@@ -125,7 +125,7 @@ void Lingo::c_fconstpush() {
Datum d;
inst i = (*g_lingo->_currentScript)[g_lingo->_pc];
d.u.f = *((double *)&i);
- d.type = FLOAT;
+ d.type = vFLOAT;
g_lingo->_pc += g_lingo->calcCodeAlignment(sizeof(double));
@@ -138,7 +138,7 @@ void Lingo::c_stringpush() {
g_lingo->_pc += g_lingo->calcStringAlignment(s);
d.u.s = new Common::String(s);
- d.type = STRING;
+ d.type = vSTRING;
g_lingo->push(d);
}
@@ -147,15 +147,15 @@ void Lingo::c_varpush() {
Datum d;
d.u.sym = g_lingo->lookupVar(name);
- if (d.u.sym->type == CASTREF) {
- d.type = INT;
+ if (d.u.sym->type == vCASTREF) {
+ d.type = vINT;
int val = d.u.sym->u.i;
delete d.u.sym;
d.u.i = val;
} else {
- d.type = VAR;
+ d.type = vVAR;
}
g_lingo->_pc += g_lingo->calcStringAlignment(name);
@@ -168,34 +168,34 @@ void Lingo::c_assign() {
d1 = g_lingo->pop();
d2 = g_lingo->pop();
- if (d1.type != VAR) {
+ if (d1.type != vVAR) {
warning("assignment to non-variable");
return;
}
- if (d1.u.sym->type != INT && d1.u.sym->type != VOIDVAL &&
- d1.u.sym->type != FLOAT && d1.u.sym->type != STRING) {
+ if (d1.u.sym->type != vINT && d1.u.sym->type != vVOID &&
+ d1.u.sym->type != vFLOAT && d1.u.sym->type != vSTRING) {
warning("assignment to non-variable '%s'", d1.u.sym->name);
return;
}
- if (d1.u.sym->type == STRING) // Free memory if needed
+ if (d1.u.sym->type == vSTRING) // Free memory if needed
delete d1.u.sym->u.s;
- if (d1.u.sym->type == POINT || d1.u.sym->type == RECT || d1.u.sym->type == ARRAY)
+ if (d1.u.sym->type == vPOINT || d1.u.sym->type == vRECT || d1.u.sym->type == vARRAY)
delete d1.u.sym->u.arr;
- if (d2.type == INT) {
+ if (d2.type == vINT) {
d1.u.sym->u.i = d2.u.i;
- } else if (d2.type == FLOAT) {
+ } else if (d2.type == vFLOAT) {
d1.u.sym->u.f = d2.u.f;
- } else if (d2.type == STRING) {
+ } else if (d2.type == vSTRING) {
d1.u.sym->u.s = new Common::String(*d2.u.s);
delete d2.u.s;
- } else if (d2.type == POINT) {
+ } else if (d2.type == vPOINT) {
d1.u.sym->u.arr = new FloatArray(*d2.u.arr);
delete d2.u.arr;
- } else if (d2.type == SYMBOL) {
+ } else if (d2.type == vSYMBOL) {
d1.u.sym->u.i = d2.u.i;
} else {
warning("c_assign: unhandled type: %s", d2.type2str());
@@ -207,13 +207,13 @@ void Lingo::c_assign() {
}
bool Lingo::verify(Symbol *s) {
- if (s->type != INT && s->type != VOIDVAL && s->type != FLOAT && s->type != STRING && s->type != POINT) {
+ if (s->type != vINT && s->type != vVOID && s->type != vFLOAT && s->type != vSTRING && s->type != vPOINT) {
warning("attempt to evaluate non-variable '%s'", s->name);
return false;
}
- if (s->type == VOIDVAL)
+ if (s->type == vVOID)
warning("Variable used before assigning a value '%s'", s->name);
return true;
@@ -225,7 +225,7 @@ void Lingo::c_eval() {
Datum d;
d = g_lingo->pop();
- if (d.type != VAR) { // It could be cast ref
+ if (d.type != vVAR) { // It could be cast ref
g_lingo->push(d);
return;
}
@@ -235,15 +235,15 @@ void Lingo::c_eval() {
d.type = d.u.sym->type;
- if (d.u.sym->type == INT)
+ if (d.u.sym->type == vINT)
d.u.i = d.u.sym->u.i;
- else if (d.u.sym->type == FLOAT)
+ else if (d.u.sym->type == vFLOAT)
d.u.f = d.u.sym->u.f;
- else if (d.u.sym->type == STRING)
+ else if (d.u.sym->type == vSTRING)
d.u.s = new Common::String(*d.u.sym->u.s);
- else if (d.u.sym->type == POINT)
+ else if (d.u.sym->type == vPOINT)
d.u.arr = d.u.sym->u.arr;
- else if (d.u.sym->type == SYMBOL)
+ else if (d.u.sym->type == vSYMBOL)
d.u.i = d.u.sym->u.i;
else
warning("c_eval: unhandled type: %s", d.type2str());
@@ -288,7 +288,7 @@ void Lingo::c_add() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.f += d2.u.f;
} else {
d1.u.i += d2.u.i;
@@ -300,7 +300,7 @@ void Lingo::c_sub() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.f -= d2.u.f;
} else {
d1.u.i -= d2.u.i;
@@ -312,7 +312,7 @@ void Lingo::c_mul() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.f *= d2.u.f;
} else {
d1.u.i *= d2.u.i;
@@ -323,13 +323,13 @@ void Lingo::c_mul() {
void Lingo::c_div() {
Datum d2 = g_lingo->pop();
- if ((d2.type == INT && d2.u.i == 0) ||
- (d2.type == FLOAT && d2.u.f == 0.0))
+ if ((d2.type == vINT && d2.u.i == 0) ||
+ (d2.type == vFLOAT && d2.u.f == 0.0))
error("division by zero");
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.f /= d2.u.f;
} else {
d1.u.i /= d2.u.i;
@@ -340,9 +340,9 @@ void Lingo::c_div() {
void Lingo::c_negate() {
Datum d = g_lingo->pop();
- if (d.type == INT)
+ if (d.type == vINT)
d.u.i = -d.u.i;
- else if (d.type == FLOAT)
+ else if (d.type == vFLOAT)
d.u.f = -d.u.f;
g_lingo->push(d);
@@ -394,7 +394,7 @@ void Lingo::c_contains() {
delete s1;
delete s2;
- d1.type = INT;
+ d1.type = vINT;
d1.u.i = res;
g_lingo->push(d1);
@@ -417,7 +417,7 @@ void Lingo::c_starts() {
delete s1;
delete s2;
- d1.type = INT;
+ d1.type = vINT;
d1.u.i = res;
g_lingo->push(d1);
@@ -479,9 +479,9 @@ void Lingo::c_eq() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f == d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i == d2.u.i) ? 1 : 0;
}
@@ -492,9 +492,9 @@ void Lingo::c_neq() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f != d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i != d2.u.i) ? 1 : 0;
}
@@ -505,9 +505,9 @@ void Lingo::c_gt() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f > d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i > d2.u.i) ? 1 : 0;
}
@@ -518,9 +518,9 @@ void Lingo::c_lt() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f < d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i < d2.u.i) ? 1 : 0;
}
@@ -531,9 +531,9 @@ void Lingo::c_ge() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f >= d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i >= d2.u.i) ? 1 : 0;
}
@@ -544,9 +544,9 @@ void Lingo::c_le() {
Datum d2 = g_lingo->pop();
Datum d1 = g_lingo->pop();
- if (g_lingo->alignTypes(d1, d2) == FLOAT) {
+ if (g_lingo->alignTypes(d1, d2) == vFLOAT) {
d1.u.i = (d1.u.f <= d2.u.f) ? 1 : 0;
- d1.type = INT;
+ d1.type = vINT;
} else {
d1.u.i = (d1.u.i <= d2.u.i) ? 1 : 0;
}
@@ -590,7 +590,7 @@ void Lingo::c_repeatwithcode(void) {
Common::String countername((char *)&(*g_lingo->_currentScript)[savepc + 5]);
Symbol *counter = g_lingo->lookupVar(countername.c_str());
- if (counter->type == CASTREF) {
+ if (counter->type == vCASTREF) {
error("Cast ref used as index: %s", countername.c_str());
}
@@ -598,7 +598,7 @@ void Lingo::c_repeatwithcode(void) {
d = g_lingo->pop();
d.toInt();
counter->u.i = d.u.i;
- counter->type = INT;
+ counter->type = vINT;
while (true) {
g_lingo->execute(body); /* body */
@@ -714,7 +714,7 @@ void Lingo::c_call() {
g_lingo->pop();
}
- if (sym->type == BLTIN) {
+ if (sym->type == vBLTIN) {
if (sym->nargs > 0 && nargs < sym->nargs) {
warning("Too few arguments for function %s. Expecting %d but got %d", name.c_str(), sym->nargs, nargs);
for (int i = 0; i < nargs; i++)
@@ -733,7 +733,7 @@ void Lingo::c_call() {
Datum d;
d.u.i = 0;
- d.type = VOIDVAL;
+ d.type = vVOID;
g_lingo->push(d);
}
diff --git a/engines/director/lingo/lingo-codegen.cpp b/engines/director/lingo/lingo-codegen.cpp
index 885b6a2a55..6c5b5e6bc7 100644
--- a/engines/director/lingo/lingo-codegen.cpp
+++ b/engines/director/lingo/lingo-codegen.cpp
@@ -80,7 +80,7 @@ Symbol *Lingo::lookupVar(const char *name, bool create, bool putInGlobalList) {
int val = (tolower(name[0]) - 'a') * 64 + (name[1] - '1') * 8 + (name[2] - '1') + 1;
sym = new Symbol;
- sym->type = CASTREF;
+ sym->type = vCASTREF;
sym->u.i = val;
return sym;
@@ -95,7 +95,7 @@ Symbol *Lingo::lookupVar(const char *name, bool create, bool putInGlobalList) {
sym = new Symbol;
sym->name = (char *)calloc(strlen(name) + 1, 1);
Common::strlcpy(sym->name, name, strlen(name) + 1);
- sym->type = VOIDVAL;
+ sym->type = vVOID;
sym->u.i = 0;
(*_localvars)[name] = sym;
@@ -136,7 +136,7 @@ void Lingo::define(Common::String &name, int start, int nargs, Common::String *p
sym->name = (char *)calloc(name.size() + 1, 1);
Common::strlcpy(sym->name, name.c_str(), name.size() + 1);
- sym->type = HANDLER;
+ sym->type = vHANDLER;
_handlers[name] = sym;
} else {
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index 58789d2ae3..ce6e11b295 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -66,23 +66,23 @@
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
- CASTREF = 258,
- UNARY = 259,
- VOIDVAL = 260,
- VAR = 261,
- POINT = 262,
- RECT = 263,
- ARRAY = 264,
- SYMBOL = 265,
- INT = 266,
- THEENTITY = 267,
- THEENTITYWITHID = 268,
- FLOAT = 269,
- BLTIN = 270,
- BLTINNOARGS = 271,
- ID = 272,
- STRING = 273,
- HANDLER = 274,
+ UNARY = 258,
+ vCASTREF = 259,
+ vVOID = 260,
+ vVAR = 261,
+ vPOINT = 262,
+ vRECT = 263,
+ vARRAY = 264,
+ vSYMBOL = 265,
+ vINT = 266,
+ vTHEENTITY = 267,
+ vTHEENTITYWITHID = 268,
+ vFLOAT = 269,
+ vBLTIN = 270,
+ vBLTINNOARGS = 271,
+ vSTRING = 272,
+ vHANDLER = 273,
+ ID = 274,
tDOWN = 275,
tELSE = 276,
tNLELSIF = 277,
@@ -130,23 +130,23 @@
};
#endif
/* Tokens. */
-#define CASTREF 258
-#define UNARY 259
-#define VOIDVAL 260
-#define VAR 261
-#define POINT 262
-#define RECT 263
-#define ARRAY 264
-#define SYMBOL 265
-#define INT 266
-#define THEENTITY 267
-#define THEENTITYWITHID 268
-#define FLOAT 269
-#define BLTIN 270
-#define BLTINNOARGS 271
-#define ID 272
-#define STRING 273
-#define HANDLER 274
+#define UNARY 258
+#define vCASTREF 259
+#define vVOID 260
+#define vVAR 261
+#define vPOINT 262
+#define vRECT 263
+#define vARRAY 264
+#define vSYMBOL 265
+#define vINT 266
+#define vTHEENTITY 267
+#define vTHEENTITYWITHID 268
+#define vFLOAT 269
+#define vBLTIN 270
+#define vBLTINNOARGS 271
+#define vSTRING 272
+#define vHANDLER 273
+#define ID 274
#define tDOWN 275
#define tELSE 276
#define tNLELSIF 277
@@ -476,7 +476,7 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 77
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 712
+#define YYLAST 719
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 77
@@ -555,15 +555,15 @@ static const yytype_int8 yyrhs[] =
{
78, 0, -1, 78, 79, 80, -1, 80, -1, 1,
70, -1, 70, -1, -1, 104, -1, 99, -1, 109,
- -1, 81, -1, 83, -1, 38, 98, 29, 17, -1,
- 40, 17, 64, 98, -1, 40, 12, 64, 98, -1,
- 40, 13, 98, 64, 98, -1, 40, 17, 42, 98,
+ -1, 81, -1, 83, -1, 38, 98, 29, 19, -1,
+ 40, 19, 64, 98, -1, 40, 12, 64, 98, -1,
+ 40, 13, 98, 64, 98, -1, 40, 19, 42, 98,
-1, 40, 12, 42, 98, -1, 40, 13, 98, 42,
98, -1, 98, -1, 99, -1, 82, -1, 84, -1,
91, 71, 90, 72, 97, 96, 23, 39, -1, 92,
64, 98, 96, 42, 98, 96, 97, 96, 23, 39,
-1, 92, 64, 98, 96, 20, 42, 98, 96, 97,
- 96, 23, 39, -1, 43, 17, 41, 98, -1, 93,
+ 96, 23, 39, -1, 43, 19, 41, 98, -1, 93,
90, 41, 79, 97, 96, 23, 28, -1, 93, 90,
41, 79, 97, 96, 46, 97, 96, 23, 28, -1,
93, 90, 41, 79, 97, 96, 95, 86, 96, 23,
@@ -574,10 +574,10 @@ static const yytype_int8 yyrhs[] =
-1, 87, 88, -1, 88, -1, 94, 90, 41, 95,
83, 96, -1, 87, -1, 94, 90, 41, 97, 96,
-1, 98, -1, 98, 64, 98, -1, 71, 90, 72,
- -1, 39, 45, -1, 39, 44, 17, -1, 28, -1,
+ -1, 39, 45, -1, 39, 44, 19, -1, 28, -1,
22, -1, -1, -1, -1, 97, 79, -1, 97, 83,
- -1, 11, -1, 14, -1, 18, -1, 16, -1, 17,
- 71, 110, 72, -1, 17, -1, 12, -1, 13, 98,
+ -1, 11, -1, 14, -1, 17, -1, 16, -1, 19,
+ 71, 110, 72, -1, 19, -1, 12, -1, 13, 98,
-1, 81, -1, 98, 65, 98, -1, 98, 66, 98,
-1, 98, 67, 98, -1, 98, 68, 98, -1, 98,
73, 98, -1, 98, 74, 98, -1, 98, 54, 98,
@@ -586,35 +586,35 @@ static const yytype_int8 yyrhs[] =
98, 75, 98, -1, 98, 58, 98, -1, 98, 59,
98, -1, 98, 60, 98, -1, 65, 98, -1, 66,
98, -1, 71, 98, 72, -1, 61, 98, 62, 98,
- -1, 61, 98, 63, 98, -1, 32, 18, -1, 33,
- 17, -1, 38, 98, -1, 101, -1, 24, -1, 26,
- 100, -1, 17, -1, 100, 76, 17, -1, 27, 30,
+ -1, 61, 98, 63, 98, -1, 32, 17, -1, 33,
+ 19, -1, 38, 98, -1, 101, -1, 24, -1, 26,
+ 100, -1, 19, -1, 100, 76, 19, -1, 27, 30,
-1, 27, 35, -1, 27, 37, -1, 27, 102, -1,
- 27, 102, 103, -1, 27, 103, -1, 42, 25, 18,
- -1, 25, 18, -1, 42, 18, -1, 18, -1, 36,
- 34, 18, -1, 34, 18, -1, 42, 34, 18, -1,
- -1, 31, 17, 105, 95, 107, 79, 108, 97, -1,
- 47, 17, -1, -1, 48, 17, 106, 95, 107, 79,
- 108, 97, -1, -1, 17, -1, 107, 76, 17, -1,
- 107, 79, 76, 17, -1, -1, 17, 95, 110, -1,
+ 27, 102, 103, -1, 27, 103, -1, 42, 25, 17,
+ -1, 25, 17, -1, 42, 17, -1, 17, -1, 36,
+ 34, 17, -1, 34, 17, -1, 42, 34, 17, -1,
+ -1, 31, 19, 105, 95, 107, 79, 108, 97, -1,
+ 47, 19, -1, -1, 48, 19, 106, 95, 107, 79,
+ 108, 97, -1, -1, 19, -1, 107, 76, 19, -1,
+ 107, 79, 76, 19, -1, -1, 19, 95, 110, -1,
-1, 98, -1, 110, 76, 98, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 102, 102, 103, 104, 107, 112, 113, 114, 115,
- 116, 117, 120, 126, 132, 140, 148, 154, 162, 171,
- 172, 174, 175, 180, 191, 207, 219, 224, 231, 240,
- 249, 259, 269, 280, 281, 284, 285, 288, 289, 292,
- 300, 301, 309, 310, 311, 313, 315, 321, 327, 334,
- 336, 338, 339, 340, 343, 348, 351, 354, 358, 361,
- 365, 372, 378, 379, 380, 381, 382, 383, 384, 385,
- 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
- 396, 397, 398, 399, 402, 403, 404, 405, 406, 408,
- 411, 412, 423, 424, 425, 426, 431, 437, 444, 445,
- 446, 447, 450, 451, 452, 480, 480, 486, 489, 489,
- 495, 496, 497, 498, 500, 504, 512, 513, 514
+ 0, 104, 104, 105, 106, 109, 114, 115, 116, 117,
+ 118, 119, 122, 128, 134, 142, 150, 156, 164, 173,
+ 174, 176, 177, 182, 193, 209, 221, 226, 233, 242,
+ 251, 261, 271, 282, 283, 286, 287, 290, 291, 294,
+ 302, 303, 311, 312, 313, 315, 317, 323, 329, 336,
+ 338, 340, 341, 342, 345, 350, 353, 356, 360, 363,
+ 367, 374, 380, 381, 382, 383, 384, 385, 386, 387,
+ 388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
+ 398, 399, 400, 401, 404, 405, 406, 407, 408, 410,
+ 413, 414, 425, 426, 427, 428, 433, 439, 446, 447,
+ 448, 449, 452, 453, 454, 482, 482, 488, 491, 491,
+ 497, 498, 499, 500, 502, 506, 514, 515, 516
};
#endif
@@ -623,18 +623,18 @@ static const yytype_uint16 yyrline[] =
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "CASTREF", "UNARY", "VOIDVAL", "VAR",
- "POINT", "RECT", "ARRAY", "SYMBOL", "INT", "THEENTITY",
- "THEENTITYWITHID", "FLOAT", "BLTIN", "BLTINNOARGS", "ID", "STRING",
- "HANDLER", "tDOWN", "tELSE", "tNLELSIF", "tEND", "tEXIT", "tFRAME",
- "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMCI", "tMCIWAIT",
- "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT", "tSET",
- "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE", "tFACTORY",
- "tMETHOD", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND", "tOR",
- "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", "tSPRITE", "tINTERSECTS",
- "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('",
- "')'", "'>'", "'<'", "'&'", "','", "$accept", "program", "nl",
- "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",
+ "$end", "error", "$undefined", "UNARY", "vCASTREF", "vVOID", "vVAR",
+ "vPOINT", "vRECT", "vARRAY", "vSYMBOL", "vINT", "vTHEENTITY",
+ "vTHEENTITYWITHID", "vFLOAT", "vBLTIN", "vBLTINNOARGS", "vSTRING",
+ "vHANDLER", "ID", "tDOWN", "tELSE", "tNLELSIF", "tEND", "tEXIT",
+ "tFRAME", "tGLOBAL", "tGO", "tIF", "tINTO", "tLOOP", "tMACRO", "tMCI",
+ "tMCIWAIT", "tMOVIE", "tNEXT", "tOF", "tPREVIOUS", "tPUT", "tREPEAT",
+ "tSET", "tTHEN", "tTO", "tWHEN", "tWITH", "tWHILE", "tNLELSE",
+ "tFACTORY", "tMETHOD", "tGE", "tLE", "tGT", "tLT", "tEQ", "tNEQ", "tAND",
+ "tOR", "tNOT", "tCONCAT", "tCONTAINS", "tSTARTS", "tSPRITE",
+ "tINTERSECTS", "tWITHIN", "'='", "'+'", "'-'", "'*'", "'/'", "'%'",
+ "'\\n'", "'('", "')'", "'>'", "'<'", "'&'", "','", "$accept", "program",
+ "nl", "programline", "asgn", "stmtoneliner", "stmt", "ifstmt",
"elsestmtoneliner", "elseifstmt", "elseifstmtoneliner",
"elseifstmtoneliner1", "elseifstmt1", "cond", "repeatwhile",
"repeatwith", "if", "elseif", "begin", "end", "stmtlist", "expr", "func",
@@ -698,7 +698,7 @@ static const yytype_uint8 yyr2[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 54, 60, 0, 55, 57, 49, 56, 88,
+ 0, 0, 54, 60, 0, 55, 57, 56, 49, 88,
0, 0, 47, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 3, 62,
21, 11, 22, 0, 0, 0, 19, 8, 87, 7,
@@ -737,44 +737,44 @@ static const yytype_int16 yydefgoto[] =
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -189
+#define YYPACT_NINF -187
static const yytype_int16 yypact[] =
{
- 201, -49, -189, -189, 420, -189, -189, 610, -189, -189,
- 6, 17, -189, 15, 18, 48, 420, 29, 59, 50,
- 52, 58, 420, 420, 420, 420, 420, 10, -189, 16,
- -189, -189, -189, 7, 39, 432, 588, -189, -189, -189,
- -189, -189, 35, 420, -189, 588, 420, 420, -189, 36,
- -189, 99, -189, 100, -189, 87, -189, 30, 24, -189,
- -189, -189, -189, 446, 115, -189, -27, 420, -20, 92,
- -189, -189, 55, 490, 55, 55, 539, -189, -189, 262,
- 432, 420, 432, 93, 566, 420, 420, 420, 420, 420,
- 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
- 446, 588, -52, 60, 121, -189, -189, 124, -189, 126,
- 127, 105, -189, -189, 129, -189, 420, 420, 468, 420,
- 420, 420, -189, 420, 420, -189, -189, 75, 588, 76,
- 512, 79, 420, 588, 588, 588, 588, 588, 588, 588,
- 588, 637, 637, 55, 55, 588, 588, 588, -189, 420,
- -189, -189, -189, -189, 136, -189, 588, 588, 420, 420,
- 588, 588, 588, 136, 588, 588, -189, 21, -189, -189,
- 390, 588, 588, -189, -8, 588, 588, -8, 318, 113,
- 420, 318, -189, -189, 139, 81, 81, -189, -189, 137,
- 420, 588, -12, -13, -189, 142, -189, -189, 125, 588,
- -189, 135, -189, 144, -189, -189, 144, -189, 432, -189,
- 318, 318, -189, -189, 318, -189, 318, 144, 144, -189,
- 432, 390, -189, 122, 128, 318, 147, 148, -189, 149,
- 133, -189, -189, -189, -189, 154, 140, 150, 152, -9,
- -189, 390, -189, 354, 143, -189, -189, -189, 318, -189,
- -189, -189, -189, -189
+ 188, -39, -187, -187, 407, -187, -187, -187, 617, -187,
+ 40, 122, -187, 43, 26, 48, 407, 28, 52, 49,
+ 51, 55, 407, 407, 407, 407, 407, 15, -187, 33,
+ -187, -187, -187, 4, 13, 439, 595, -187, -187, -187,
+ -187, -187, 34, 407, -187, 595, 407, 407, -187, 5,
+ -187, 91, -187, 92, -187, 76, -187, 17, 24, -187,
+ -187, -187, -187, 453, 93, -187, -29, 407, -23, 70,
+ -187, -187, 121, 497, 121, 121, 546, -187, -187, 249,
+ 439, 407, 439, 72, 573, 407, 407, 407, 407, 407,
+ 407, 407, 407, 407, 407, 407, 407, 407, 407, 407,
+ 453, 595, -22, 38, 97, -187, -187, 100, -187, 103,
+ 110, 94, -187, -187, 114, -187, 407, 407, 475, 407,
+ 407, 407, -187, 407, 407, -187, -187, 57, 595, 64,
+ 519, 68, 407, 595, 595, 595, 595, 595, 595, 595,
+ 595, 644, 644, 121, 121, 595, 595, 595, -187, 407,
+ -187, -187, -187, -187, 124, -187, 595, 595, 407, 407,
+ 595, 595, 595, 124, 595, 595, -187, 10, -187, -187,
+ 377, 595, 595, -187, -54, 595, 595, -54, 305, 98,
+ 407, 305, -187, -187, 125, 65, 65, -187, -187, 123,
+ 407, 595, -6, -8, -187, 126, -187, -187, 115, 595,
+ -187, 127, -187, 140, -187, -187, 140, -187, 439, -187,
+ 305, 305, -187, -187, 305, -187, 305, 140, 140, -187,
+ 439, 377, -187, 117, 108, 305, 142, 143, -187, 144,
+ 128, -187, -187, -187, -187, 145, 133, 150, 155, -13,
+ -187, 377, -187, 341, 134, -187, -187, -187, 305, -187,
+ -187, -187, -187, -187
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -189, -189, -23, 88, 2, -164, 0, -189, -189, -189,
- -5, -188, -36, -77, -189, -189, -189, -186, -6, -41,
- -157, 3, 8, -189, -189, -189, 131, -189, -189, -189,
- 22, 1, -189, 151
+ -187, -187, -24, 105, 7, -165, 0, -187, -187, -187,
+ -3, -186, -31, -78, -187, -187, -187, -164, -7, -170,
+ -65, 2, 23, -187, -187, -187, 129, -187, -187, -187,
+ 30, 11, -187, 156
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -784,181 +784,181 @@ static const yytype_int16 yypgoto[] =
#define YYTABLE_NINF -60
static const yytype_int16 yytable[] =
{
- 31, 47, 29, 127, 79, 129, 182, 45, 37, 204,
- 77, 201, 181, -51, -51, 116, -10, 220, 222, 63,
- 148, 41, 119, 48, 149, 72, 73, 74, 75, 76,
- 222, 220, 60, 205, 202, 50, 61, 117, 84, 210,
- 211, 179, 51, 214, 120, 216, 100, 52, 108, 101,
- 101, 53, 54, 55, 56, 109, 225, 231, 53, 57,
- 55, -51, 78, 180, 110, 62, 111, 69, 184, 70,
- 118, 66, 67, 64, 65, 71, 68, 249, 80, 31,
- 78, 29, 248, 84, 128, 130, -10, 37, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 81, 85, 86, 46, 154, 169, 87,
- 88, 89, 104, 90, 91, 92, 163, 105, 106, 156,
- 157, 107, 160, 161, 162, 170, 164, 165, 97, 98,
- 99, 224, 115, 121, 131, 171, 149, 189, 150, 110,
- 192, 193, 151, 230, 152, 153, 155, 166, 168, 78,
- 200, 185, 172, 173, 186, 190, 194, 195, 213, 209,
- 198, 175, 176, 215, 212, 223, 204, 126, 232, 234,
- 236, 237, 238, 226, 239, 227, 229, 244, 246, 245,
- 247, 228, 251, 191, 235, 177, 203, 197, 206, 112,
- 240, 0, 242, 199, 0, 0, 0, 0, 103, 221,
- 0, -6, 1, 0, 0, 0, 0, 252, 0, 253,
- 0, 84, 2, 3, 4, 5, 0, 6, 7, 8,
- 0, 0, 0, 84, 0, 9, 241, 10, 11, 12,
- 0, 0, 13, 14, 15, 0, 0, 0, 0, 16,
- 17, 18, 0, 250, 19, 0, 0, 0, 20, 21,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
- 0, 0, 23, 0, 0, 0, 24, 25, 0, 0,
- 0, -6, 26, 2, 3, 4, 5, 0, 6, 7,
- 8, 0, 0, 0, 0, 0, 9, 0, 10, 11,
- 12, 0, 0, 13, 14, 15, 0, 0, 0, 0,
- 16, 17, 18, 0, 0, 19, 0, 0, 0, 20,
- 21, 0, 0, 0, 0, 0, 0, 0, 0, 22,
- 0, 0, 0, 23, 0, 0, 0, 24, 25, 2,
- 3, 4, 5, 26, 6, 42, 8, 0, 0, 0,
- 0, 0, 9, 0, 10, 11, 12, 0, 0, 0,
- 14, 15, 0, 0, 0, 0, 16, 17, 18, 0,
- 0, 19, 0, 0, 0, 2, 3, 4, 5, 0,
- 6, 42, 8, 0, 0, 22, 0, 0, 9, 23,
- 10, 11, 12, 24, 25, 0, 14, 15, 78, 26,
- 0, 0, 16, 17, 18, 0, 0, 19, 0, 0,
- 0, 2, 3, 4, 5, 0, 6, 42, 8, 0,
- 0, 22, 0, 0, 9, 23, 10, 11, 0, 24,
- 25, 0, 14, 15, 0, 26, 0, 0, 16, 0,
- 18, 2, 3, 4, 5, 0, 6, 42, 8, 0,
- 0, 0, 0, 2, 3, 4, 5, 22, 6, 42,
- 8, 23, 0, 0, 0, 24, 25, 0, 43, 0,
- 18, 26, 0, 0, 0, 0, 0, 0, 0, 0,
- 43, 0, 18, 0, 0, 114, 0, 22, 0, 0,
- 0, 23, 0, 0, 0, 24, 25, 0, 0, 22,
- 0, 26, 0, 23, 0, 85, 86, 24, 25, 0,
- 87, 88, 89, 82, 90, 91, 92, 0, 0, 0,
- 158, 93, 94, 95, 96, 0, 0, 85, 86, 97,
- 98, 99, 87, 88, 89, 0, 90, 91, 92, 0,
- 0, 0, 159, 93, 94, 95, 96, 0, 0, 85,
- 86, 97, 98, 99, 87, 88, 89, 0, 90, 91,
- 92, 0, 123, 124, 0, 93, 94, 95, 96, 0,
- 0, 85, 86, 97, 98, 99, 87, 88, 89, 0,
- 90, 91, 92, 0, 0, 0, 132, 93, 94, 95,
- 96, 0, 0, 0, 125, 97, 98, 99, 85, 86,
- 0, 0, 0, 87, 88, 89, 0, 90, 91, 92,
- 0, 0, 0, 0, 93, 94, 95, 96, 0, 0,
+ 31, 47, 127, 79, 129, 182, 45, 29, 189, -51,
+ -51, 192, 193, 116, 204, 77, 78, 201, 63, 119,
+ 222, 200, 184, 37, 72, 73, 74, 75, 76, 213,
+ 179, 41, 222, -10, 108, 117, 223, 84, 205, 220,
+ 202, 120, 109, 61, 226, 100, 227, 229, 101, 101,
+ 148, 110, 180, 220, 149, 235, 231, -51, 53, 48,
+ 55, 240, 60, 242, 66, 67, 111, 62, 69, 118,
+ 70, 68, 64, 65, 71, 80, 249, 81, 252, 31,
+ 253, 104, 84, 128, 130, 78, 29, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 37, -10, 181, 46, 154, 169, 105, 106,
+ 107, 121, 115, 131, 149, 163, 150, 151, 156, 157,
+ 152, 160, 161, 162, 170, 164, 165, 153, 110, 166,
+ 224, 210, 211, 155, 171, 214, 168, 216, 78, 50,
+ 190, 195, 230, 173, 194, 209, 198, 51, 225, 234,
+ 185, 172, 52, 186, 212, 215, 53, 54, 55, 56,
+ 175, 176, 204, 232, 57, 236, 237, 238, 244, 239,
+ 85, 86, 245, 251, 248, 87, 88, 89, 246, 90,
+ 91, 92, 191, 247, 126, 203, 228, 112, -6, 1,
+ 206, 0, 199, 177, 97, 98, 99, 197, 221, 2,
+ 3, 4, 5, 103, 6, 7, 0, 8, 0, 0,
+ 84, 0, 9, 0, 10, 11, 12, 0, 0, 13,
+ 14, 15, 84, 0, 0, 241, 16, 17, 18, 0,
+ 0, 19, 0, 0, 0, 20, 21, 0, 0, 0,
+ 0, 0, 0, 250, 0, 22, 0, 0, 0, 23,
+ 0, 0, 0, 24, 25, 0, 0, 0, -6, 26,
+ 2, 3, 4, 5, 0, 6, 7, 0, 8, 0,
+ 0, 0, 0, 9, 0, 10, 11, 12, 0, 0,
+ 13, 14, 15, 0, 0, 0, 0, 16, 17, 18,
+ 0, 0, 19, 0, 0, 0, 20, 21, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 23, 0, 0, 0, 24, 25, 2, 3, 4, 5,
+ 26, 6, 7, 0, 42, 0, 0, 0, 0, 9,
+ 0, 10, 11, 12, 0, 0, 0, 14, 15, 0,
+ 0, 0, 0, 16, 17, 18, 0, 0, 19, 0,
+ 0, 0, 2, 3, 4, 5, 0, 6, 7, 0,
+ 42, 0, 22, 0, 0, 9, 23, 10, 11, 12,
+ 24, 25, 0, 14, 15, 78, 26, 0, 0, 16,
+ 17, 18, 0, 0, 19, 0, 0, 0, 2, 3,
+ 4, 5, 0, 6, 7, 0, 42, 0, 22, 0,
+ 0, 9, 23, 10, 11, 0, 24, 25, 0, 14,
+ 15, 0, 26, 0, 0, 16, 0, 18, 2, 3,
+ 4, 5, 0, 6, 7, 0, 42, 0, 0, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 23, 0,
+ 0, 0, 24, 25, 0, 43, 0, 18, 26, 0,
+ 2, 3, 4, 5, 0, 6, 7, 0, 42, 0,
+ 0, 0, 0, 0, 22, 0, 0, 0, 23, 0,
+ 0, 0, 24, 25, 0, 0, 0, 43, 26, 18,
+ 0, 0, 114, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 23, 0, 85, 86, 24, 25, 0, 87, 88, 89,
+ 82, 90, 91, 92, 0, 0, 0, 158, 93, 94,
+ 95, 96, 0, 0, 85, 86, 97, 98, 99, 87,
+ 88, 89, 0, 90, 91, 92, 0, 0, 0, 159,
+ 93, 94, 95, 96, 0, 0, 85, 86, 97, 98,
+ 99, 87, 88, 89, 0, 90, 91, 92, 0, 123,
+ 124, 0, 93, 94, 95, 96, 0, 0, 85, 86,
+ 97, 98, 99, 87, 88, 89, 0, 90, 91, 92,
+ 0, 0, 0, 132, 93, 94, 95, 96, 0, 0,
0, 125, 97, 98, 99, 85, 86, 0, 0, 0,
87, 88, 89, 0, 90, 91, 92, 0, 0, 0,
- 132, 93, 94, 95, 96, 0, 0, 85, 86, 97,
- 98, 99, 87, 88, 89, 0, 90, 91, 92, 0,
- 0, 0, 0, 93, 94, 95, 96, 0, 0, -59,
- -59, 97, 98, 99, -59, -59, -59, 0, -59, -59,
- -59, 0, 0, 0, 0, 0, 0, -59, -59, 0,
- 0, 46, 0, -59, -59, -59, 85, 86, 0, 0,
- 0, 87, 88, 89, 0, 90, 91, 92, 0, 0,
- 0, 0, 0, 0, 95, 96, 0, 0, 0, 0,
- 97, 98, 99
+ 0, 93, 94, 95, 96, 0, 0, 0, 125, 97,
+ 98, 99, 85, 86, 0, 0, 0, 87, 88, 89,
+ 0, 90, 91, 92, 0, 0, 0, 132, 93, 94,
+ 95, 96, 0, 0, 85, 86, 97, 98, 99, 87,
+ 88, 89, 0, 90, 91, 92, 0, 0, 0, 0,
+ 93, 94, 95, 96, 0, 0, -59, -59, 97, 98,
+ 99, -59, -59, -59, 0, -59, -59, -59, 0, 0,
+ 0, 0, 0, 0, -59, -59, 0, 0, 46, 0,
+ -59, -59, -59, 85, 86, 0, 0, 0, 87, 88,
+ 89, 0, 90, 91, 92, 0, 0, 0, 0, 0,
+ 0, 95, 96, 0, 0, 0, 0, 97, 98, 99
};
static const yytype_int16 yycheck[] =
{
- 0, 7, 0, 80, 27, 82, 170, 4, 0, 22,
- 0, 23, 169, 22, 23, 42, 0, 203, 206, 16,
- 72, 70, 42, 17, 76, 22, 23, 24, 25, 26,
- 218, 217, 17, 46, 46, 18, 18, 64, 35, 196,
- 197, 20, 25, 200, 64, 202, 43, 30, 18, 46,
- 47, 34, 35, 36, 37, 25, 213, 221, 34, 42,
- 36, 70, 70, 42, 34, 17, 42, 17, 76, 17,
- 67, 12, 13, 44, 45, 17, 17, 241, 71, 79,
- 70, 79, 239, 80, 81, 82, 70, 79, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 64, 49, 50, 71, 113, 131, 54,
- 55, 56, 76, 58, 59, 60, 122, 18, 18, 116,
- 117, 34, 119, 120, 121, 131, 123, 124, 73, 74,
- 75, 208, 17, 41, 41, 132, 76, 178, 17, 34,
- 181, 182, 18, 220, 18, 18, 17, 72, 72, 70,
- 191, 174, 149, 17, 177, 42, 17, 76, 199, 17,
- 23, 158, 159, 28, 39, 206, 22, 79, 46, 41,
- 23, 23, 23, 214, 41, 216, 217, 23, 28, 39,
- 28, 217, 39, 180, 225, 163, 192, 186, 193, 58,
- 231, -1, 233, 190, -1, -1, -1, -1, 47, 205,
- -1, 0, 1, -1, -1, -1, -1, 248, -1, 250,
- -1, 208, 11, 12, 13, 14, -1, 16, 17, 18,
- -1, -1, -1, 220, -1, 24, 232, 26, 27, 28,
- -1, -1, 31, 32, 33, -1, -1, -1, -1, 38,
- 39, 40, -1, 243, 43, -1, -1, -1, 47, 48,
- -1, -1, -1, -1, -1, -1, -1, -1, 57, -1,
- -1, -1, 61, -1, -1, -1, 65, 66, -1, -1,
- -1, 70, 71, 11, 12, 13, 14, -1, 16, 17,
- 18, -1, -1, -1, -1, -1, 24, -1, 26, 27,
- 28, -1, -1, 31, 32, 33, -1, -1, -1, -1,
- 38, 39, 40, -1, -1, 43, -1, -1, -1, 47,
- 48, -1, -1, -1, -1, -1, -1, -1, -1, 57,
- -1, -1, -1, 61, -1, -1, -1, 65, 66, 11,
- 12, 13, 14, 71, 16, 17, 18, -1, -1, -1,
- -1, -1, 24, -1, 26, 27, 28, -1, -1, -1,
- 32, 33, -1, -1, -1, -1, 38, 39, 40, -1,
- -1, 43, -1, -1, -1, 11, 12, 13, 14, -1,
- 16, 17, 18, -1, -1, 57, -1, -1, 24, 61,
- 26, 27, 28, 65, 66, -1, 32, 33, 70, 71,
- -1, -1, 38, 39, 40, -1, -1, 43, -1, -1,
- -1, 11, 12, 13, 14, -1, 16, 17, 18, -1,
- -1, 57, -1, -1, 24, 61, 26, 27, -1, 65,
- 66, -1, 32, 33, -1, 71, -1, -1, 38, -1,
- 40, 11, 12, 13, 14, -1, 16, 17, 18, -1,
- -1, -1, -1, 11, 12, 13, 14, 57, 16, 17,
- 18, 61, -1, -1, -1, 65, 66, -1, 38, -1,
- 40, 71, -1, -1, -1, -1, -1, -1, -1, -1,
- 38, -1, 40, -1, -1, 29, -1, 57, -1, -1,
- -1, 61, -1, -1, -1, 65, 66, -1, -1, 57,
- -1, 71, -1, 61, -1, 49, 50, 65, 66, -1,
- 54, 55, 56, 71, 58, 59, 60, -1, -1, -1,
- 42, 65, 66, 67, 68, -1, -1, 49, 50, 73,
- 74, 75, 54, 55, 56, -1, 58, 59, 60, -1,
- -1, -1, 64, 65, 66, 67, 68, -1, -1, 49,
- 50, 73, 74, 75, 54, 55, 56, -1, 58, 59,
- 60, -1, 62, 63, -1, 65, 66, 67, 68, -1,
- -1, 49, 50, 73, 74, 75, 54, 55, 56, -1,
- 58, 59, 60, -1, -1, -1, 64, 65, 66, 67,
- 68, -1, -1, -1, 72, 73, 74, 75, 49, 50,
- -1, -1, -1, 54, 55, 56, -1, 58, 59, 60,
- -1, -1, -1, -1, 65, 66, 67, 68, -1, -1,
+ 0, 8, 80, 27, 82, 170, 4, 0, 178, 22,
+ 23, 181, 182, 42, 22, 0, 70, 23, 16, 42,
+ 206, 191, 76, 0, 22, 23, 24, 25, 26, 199,
+ 20, 70, 218, 0, 17, 64, 206, 35, 46, 203,
+ 46, 64, 25, 17, 214, 43, 216, 217, 46, 47,
+ 72, 34, 42, 217, 76, 225, 221, 70, 34, 19,
+ 36, 231, 19, 233, 12, 13, 42, 19, 19, 67,
+ 19, 19, 44, 45, 19, 71, 241, 64, 248, 79,
+ 250, 76, 80, 81, 82, 70, 79, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 79, 70, 169, 71, 113, 131, 17, 17,
+ 34, 41, 19, 41, 76, 122, 19, 17, 116, 117,
+ 17, 119, 120, 121, 131, 123, 124, 17, 34, 72,
+ 208, 196, 197, 19, 132, 200, 72, 202, 70, 17,
+ 42, 76, 220, 19, 19, 19, 23, 25, 213, 41,
+ 174, 149, 30, 177, 39, 28, 34, 35, 36, 37,
+ 158, 159, 22, 46, 42, 23, 23, 23, 23, 41,
+ 49, 50, 39, 39, 239, 54, 55, 56, 28, 58,
+ 59, 60, 180, 28, 79, 192, 217, 58, 0, 1,
+ 193, -1, 190, 163, 73, 74, 75, 186, 205, 11,
+ 12, 13, 14, 47, 16, 17, -1, 19, -1, -1,
+ 208, -1, 24, -1, 26, 27, 28, -1, -1, 31,
+ 32, 33, 220, -1, -1, 232, 38, 39, 40, -1,
+ -1, 43, -1, -1, -1, 47, 48, -1, -1, -1,
+ -1, -1, -1, 243, -1, 57, -1, -1, -1, 61,
+ -1, -1, -1, 65, 66, -1, -1, -1, 70, 71,
+ 11, 12, 13, 14, -1, 16, 17, -1, 19, -1,
+ -1, -1, -1, 24, -1, 26, 27, 28, -1, -1,
+ 31, 32, 33, -1, -1, -1, -1, 38, 39, 40,
+ -1, -1, 43, -1, -1, -1, 47, 48, -1, -1,
+ -1, -1, -1, -1, -1, -1, 57, -1, -1, -1,
+ 61, -1, -1, -1, 65, 66, 11, 12, 13, 14,
+ 71, 16, 17, -1, 19, -1, -1, -1, -1, 24,
+ -1, 26, 27, 28, -1, -1, -1, 32, 33, -1,
+ -1, -1, -1, 38, 39, 40, -1, -1, 43, -1,
+ -1, -1, 11, 12, 13, 14, -1, 16, 17, -1,
+ 19, -1, 57, -1, -1, 24, 61, 26, 27, 28,
+ 65, 66, -1, 32, 33, 70, 71, -1, -1, 38,
+ 39, 40, -1, -1, 43, -1, -1, -1, 11, 12,
+ 13, 14, -1, 16, 17, -1, 19, -1, 57, -1,
+ -1, 24, 61, 26, 27, -1, 65, 66, -1, 32,
+ 33, -1, 71, -1, -1, 38, -1, 40, 11, 12,
+ 13, 14, -1, 16, 17, -1, 19, -1, -1, -1,
+ -1, -1, -1, -1, 57, -1, -1, -1, 61, -1,
+ -1, -1, 65, 66, -1, 38, -1, 40, 71, -1,
+ 11, 12, 13, 14, -1, 16, 17, -1, 19, -1,
+ -1, -1, -1, -1, 57, -1, -1, -1, 61, -1,
+ -1, -1, 65, 66, -1, -1, -1, 38, 71, 40,
+ -1, -1, 29, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 57, -1, -1, -1,
+ 61, -1, 49, 50, 65, 66, -1, 54, 55, 56,
+ 71, 58, 59, 60, -1, -1, -1, 42, 65, 66,
+ 67, 68, -1, -1, 49, 50, 73, 74, 75, 54,
+ 55, 56, -1, 58, 59, 60, -1, -1, -1, 64,
+ 65, 66, 67, 68, -1, -1, 49, 50, 73, 74,
+ 75, 54, 55, 56, -1, 58, 59, 60, -1, 62,
+ 63, -1, 65, 66, 67, 68, -1, -1, 49, 50,
+ 73, 74, 75, 54, 55, 56, -1, 58, 59, 60,
+ -1, -1, -1, 64, 65, 66, 67, 68, -1, -1,
-1, 72, 73, 74, 75, 49, 50, -1, -1, -1,
54, 55, 56, -1, 58, 59, 60, -1, -1, -1,
- 64, 65, 66, 67, 68, -1, -1, 49, 50, 73,
- 74, 75, 54, 55, 56, -1, 58, 59, 60, -1,
- -1, -1, -1, 65, 66, 67, 68, -1, -1, 49,
- 50, 73, 74, 75, 54, 55, 56, -1, 58, 59,
- 60, -1, -1, -1, -1, -1, -1, 67, 68, -1,
- -1, 71, -1, 73, 74, 75, 49, 50, -1, -1,
- -1, 54, 55, 56, -1, 58, 59, 60, -1, -1,
- -1, -1, -1, -1, 67, 68, -1, -1, -1, -1,
- 73, 74, 75
+ -1, 65, 66, 67, 68, -1, -1, -1, 72, 73,
+ 74, 75, 49, 50, -1, -1, -1, 54, 55, 56,
+ -1, 58, 59, 60, -1, -1, -1, 64, 65, 66,
+ 67, 68, -1, -1, 49, 50, 73, 74, 75, 54,
+ 55, 56, -1, 58, 59, 60, -1, -1, -1, -1,
+ 65, 66, 67, 68, -1, -1, 49, 50, 73, 74,
+ 75, 54, 55, 56, -1, 58, 59, 60, -1, -1,
+ -1, -1, -1, -1, 67, 68, -1, -1, 71, -1,
+ 73, 74, 75, 49, 50, -1, -1, -1, 54, 55,
+ 56, -1, 58, 59, 60, -1, -1, -1, -1, -1,
+ -1, 67, 68, -1, -1, -1, -1, 73, 74, 75
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 1, 11, 12, 13, 14, 16, 17, 18, 24,
+ 0, 1, 11, 12, 13, 14, 16, 17, 19, 24,
26, 27, 28, 31, 32, 33, 38, 39, 40, 43,
47, 48, 57, 61, 65, 66, 71, 78, 80, 81,
82, 83, 84, 91, 92, 93, 98, 99, 101, 104,
- 109, 70, 17, 38, 81, 98, 71, 95, 17, 100,
- 18, 25, 30, 34, 35, 36, 37, 42, 102, 103,
- 17, 18, 17, 98, 44, 45, 12, 13, 17, 17,
- 17, 17, 98, 98, 98, 98, 98, 0, 70, 79,
+ 109, 70, 19, 38, 81, 98, 71, 95, 19, 100,
+ 17, 25, 30, 34, 35, 36, 37, 42, 102, 103,
+ 19, 17, 19, 98, 44, 45, 12, 13, 19, 19,
+ 19, 19, 98, 98, 98, 98, 98, 0, 70, 79,
71, 64, 71, 90, 98, 49, 50, 54, 55, 56,
58, 59, 60, 65, 66, 67, 68, 73, 74, 75,
- 98, 98, 110, 110, 76, 18, 18, 34, 18, 25,
- 34, 42, 103, 105, 29, 17, 42, 64, 98, 42,
+ 98, 98, 110, 110, 76, 17, 17, 34, 17, 25,
+ 34, 42, 103, 105, 29, 19, 42, 64, 98, 42,
64, 41, 106, 62, 63, 72, 80, 90, 98, 90,
98, 41, 64, 98, 98, 98, 98, 98, 98, 98,
98, 98, 98, 98, 98, 98, 98, 98, 72, 76,
- 17, 18, 18, 18, 95, 17, 98, 98, 42, 64,
+ 19, 17, 17, 17, 95, 19, 98, 98, 42, 64,
98, 98, 98, 95, 98, 98, 72, 96, 72, 79,
- 95, 98, 98, 17, 107, 98, 98, 107, 97, 20,
+ 95, 98, 98, 19, 107, 98, 98, 107, 97, 20,
42, 97, 82, 99, 76, 79, 79, 79, 83, 96,
- 42, 98, 96, 96, 17, 76, 108, 108, 23, 98,
- 96, 23, 46, 95, 22, 46, 87, 88, 94, 17,
+ 42, 98, 96, 96, 19, 76, 108, 108, 23, 98,
+ 96, 23, 46, 95, 22, 46, 87, 88, 94, 19,
97, 97, 39, 96, 97, 28, 97, 86, 87, 89,
94, 95, 88, 96, 90, 97, 96, 96, 89, 96,
90, 82, 46, 85, 41, 96, 23, 23, 23, 41,
@@ -1778,12 +1778,12 @@ yyreduce:
switch (yyn)
{
case 4:
-#line 104 "engines/director/lingo/lingo-gr.y"
+#line 106 "engines/director/lingo/lingo-gr.y"
{ yyerrok; ;}
break;
case 5:
-#line 107 "engines/director/lingo/lingo-gr.y"
+#line 109 "engines/director/lingo/lingo-gr.y"
{
g_lingo->_linenumber++;
g_lingo->_colnumber = 1;
@@ -1791,12 +1791,12 @@ yyreduce:
break;
case 10:
-#line 116 "engines/director/lingo/lingo-gr.y"
+#line 118 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_xpop); ;}
break;
case 12:
-#line 120 "engines/director/lingo/lingo-gr.y"
+#line 122 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_varpush);
g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str());
@@ -1806,7 +1806,7 @@ yyreduce:
break;
case 13:
-#line 126 "engines/director/lingo/lingo-gr.y"
+#line 128 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_varpush);
g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -1816,7 +1816,7 @@ yyreduce:
break;
case 14:
-#line 132 "engines/director/lingo/lingo-gr.y"
+#line 134 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentityassign);
@@ -1828,7 +1828,7 @@ yyreduce:
break;
case 15:
-#line 140 "engines/director/lingo/lingo-gr.y"
+#line 142 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_swap);
g_lingo->code1(g_lingo->c_theentityassign);
@@ -1840,7 +1840,7 @@ yyreduce:
break;
case 16:
-#line 148 "engines/director/lingo/lingo-gr.y"
+#line 150 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_varpush);
g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str());
@@ -1850,7 +1850,7 @@ yyreduce:
break;
case 17:
-#line 154 "engines/director/lingo/lingo-gr.y"
+#line 156 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentityassign);
@@ -1862,7 +1862,7 @@ yyreduce:
break;
case 18:
-#line 162 "engines/director/lingo/lingo-gr.y"
+#line 164 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_swap);
g_lingo->code1(g_lingo->c_theentityassign);
@@ -1874,12 +1874,12 @@ yyreduce:
break;
case 19:
-#line 171 "engines/director/lingo/lingo-gr.y"
+#line 173 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_xpop); ;}
break;
case 23:
-#line 180 "engines/director/lingo/lingo-gr.y"
+#line 182 "engines/director/lingo/lingo-gr.y"
{
inst body = 0, end = 0;
WRITE_UINT32(&body, (yyvsp[(5) - (8)].code));
@@ -1889,7 +1889,7 @@ yyreduce:
break;
case 24:
-#line 191 "engines/director/lingo/lingo-gr.y"
+#line 193 "engines/director/lingo/lingo-gr.y"
{
inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
WRITE_UINT32(&init, (yyvsp[(3) - (11)].code));
@@ -1905,7 +1905,7 @@ yyreduce:
break;
case 25:
-#line 207 "engines/director/lingo/lingo-gr.y"
+#line 209 "engines/director/lingo/lingo-gr.y"
{
inst init = 0, finish = 0, body = 0, end = 0, inc = 0;
WRITE_UINT32(&init, (yyvsp[(3) - (12)].code));
@@ -1921,14 +1921,14 @@ yyreduce:
break;
case 26:
-#line 219 "engines/director/lingo/lingo-gr.y"
+#line 221 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_ifcode);
;}
break;
case 27:
-#line 224 "engines/director/lingo/lingo-gr.y"
+#line 226 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(5) - (8)].code));
@@ -1939,7 +1939,7 @@ yyreduce:
break;
case 28:
-#line 231 "engines/director/lingo/lingo-gr.y"
+#line 233 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(5) - (11)].code));
@@ -1952,7 +1952,7 @@ yyreduce:
break;
case 29:
-#line 240 "engines/director/lingo/lingo-gr.y"
+#line 242 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(5) - (11)].code));
@@ -1965,7 +1965,7 @@ yyreduce:
break;
case 30:
-#line 249 "engines/director/lingo/lingo-gr.y"
+#line 251 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -1979,7 +1979,7 @@ yyreduce:
break;
case 31:
-#line 259 "engines/director/lingo/lingo-gr.y"
+#line 261 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -1993,7 +1993,7 @@ yyreduce:
break;
case 32:
-#line 269 "engines/director/lingo/lingo-gr.y"
+#line 271 "engines/director/lingo/lingo-gr.y"
{
inst then = 0, else1 = 0, end = 0;
WRITE_UINT32(&then, (yyvsp[(4) - (10)].code));
@@ -2007,17 +2007,17 @@ yyreduce:
break;
case 33:
-#line 280 "engines/director/lingo/lingo-gr.y"
+#line 282 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = 0; ;}
break;
case 34:
-#line 281 "engines/director/lingo/lingo-gr.y"
+#line 283 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (3)].code); ;}
break;
case 39:
-#line 292 "engines/director/lingo/lingo-gr.y"
+#line 294 "engines/director/lingo/lingo-gr.y"
{
inst then = 0;
WRITE_UINT32(&then, (yyvsp[(4) - (6)].code));
@@ -2027,7 +2027,7 @@ yyreduce:
break;
case 41:
-#line 301 "engines/director/lingo/lingo-gr.y"
+#line 303 "engines/director/lingo/lingo-gr.y"
{
inst then = 0;
WRITE_UINT32(&then, (yyvsp[(4) - (5)].code));
@@ -2037,22 +2037,22 @@ yyreduce:
break;
case 42:
-#line 309 "engines/director/lingo/lingo-gr.y"
+#line 311 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(STOP); ;}
break;
case 43:
-#line 310 "engines/director/lingo/lingo-gr.y"
+#line 312 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code2(g_lingo->c_eq, STOP); ;}
break;
case 45:
-#line 313 "engines/director/lingo/lingo-gr.y"
+#line 315 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->code3(g_lingo->c_repeatwhilecode, STOP, STOP); ;}
break;
case 46:
-#line 315 "engines/director/lingo/lingo-gr.y"
+#line 317 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code3(g_lingo->c_repeatwithcode, STOP, STOP);
g_lingo->code3(STOP, STOP, STOP);
@@ -2061,7 +2061,7 @@ yyreduce:
break;
case 47:
-#line 321 "engines/director/lingo/lingo-gr.y"
+#line 323 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_ifcode);
g_lingo->code3(STOP, STOP, STOP);
@@ -2070,7 +2070,7 @@ yyreduce:
break;
case 48:
-#line 327 "engines/director/lingo/lingo-gr.y"
+#line 329 "engines/director/lingo/lingo-gr.y"
{
inst skipEnd;
WRITE_UINT32(&skipEnd, 1); // We have to skip end to avoid multiple executions
@@ -2080,22 +2080,22 @@ yyreduce:
break;
case 49:
-#line 334 "engines/director/lingo/lingo-gr.y"
+#line 336 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); ;}
break;
case 50:
-#line 336 "engines/director/lingo/lingo-gr.y"
+#line 338 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(STOP); (yyval.code) = g_lingo->_currentScript->size(); ;}
break;
case 51:
-#line 338 "engines/director/lingo/lingo-gr.y"
+#line 340 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = g_lingo->_currentScript->size(); ;}
break;
case 54:
-#line 343 "engines/director/lingo/lingo-gr.y"
+#line 345 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_constpush);
inst i = 0;
@@ -2104,21 +2104,21 @@ yyreduce:
break;
case 55:
-#line 348 "engines/director/lingo/lingo-gr.y"
+#line 350 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_fconstpush);
g_lingo->codeFloat((yyvsp[(1) - (1)].f)); ;}
break;
case 56:
-#line 351 "engines/director/lingo/lingo-gr.y"
+#line 353 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_stringpush);
g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); ;}
break;
case 57:
-#line 354 "engines/director/lingo/lingo-gr.y"
+#line 356 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->_handlers[*(yyvsp[(1) - (1)].s)]->u.func);
(yyval.code) = g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy value
@@ -2126,14 +2126,14 @@ yyreduce:
break;
case 58:
-#line 358 "engines/director/lingo/lingo-gr.y"
+#line 360 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->codeFunc((yyvsp[(1) - (4)].s), (yyvsp[(3) - (4)].narg));
delete (yyvsp[(1) - (4)].s); ;}
break;
case 59:
-#line 361 "engines/director/lingo/lingo-gr.y"
+#line 363 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_eval);
g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str());
@@ -2141,7 +2141,7 @@ yyreduce:
break;
case 60:
-#line 365 "engines/director/lingo/lingo-gr.y"
+#line 367 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentitypush);
@@ -2152,7 +2152,7 @@ yyreduce:
break;
case 61:
-#line 372 "engines/director/lingo/lingo-gr.y"
+#line 374 "engines/director/lingo/lingo-gr.y"
{
(yyval.code) = g_lingo->code1(g_lingo->c_theentitypush);
inst e = 0, f = 0;
@@ -2162,158 +2162,158 @@ yyreduce:
break;
case 63:
-#line 379 "engines/director/lingo/lingo-gr.y"
+#line 381 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_add); ;}
break;
case 64:
-#line 380 "engines/director/lingo/lingo-gr.y"
+#line 382 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_sub); ;}
break;
case 65:
-#line 381 "engines/director/lingo/lingo-gr.y"
+#line 383 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_mul); ;}
break;
case 66:
-#line 382 "engines/director/lingo/lingo-gr.y"
+#line 384 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_div); ;}
break;
case 67:
-#line 383 "engines/director/lingo/lingo-gr.y"
+#line 385 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_gt); ;}
break;
case 68:
-#line 384 "engines/director/lingo/lingo-gr.y"
+#line 386 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_lt); ;}
break;
case 69:
-#line 385 "engines/director/lingo/lingo-gr.y"
+#line 387 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_neq); ;}
break;
case 70:
-#line 386 "engines/director/lingo/lingo-gr.y"
+#line 388 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_ge); ;}
break;
case 71:
-#line 387 "engines/director/lingo/lingo-gr.y"
+#line 389 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_le); ;}
break;
case 72:
-#line 388 "engines/director/lingo/lingo-gr.y"
+#line 390 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_and); ;}
break;
case 73:
-#line 389 "engines/director/lingo/lingo-gr.y"
+#line 391 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_or); ;}
break;
case 74:
-#line 390 "engines/director/lingo/lingo-gr.y"
+#line 392 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_not); ;}
break;
case 75:
-#line 391 "engines/director/lingo/lingo-gr.y"
+#line 393 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_ampersand); ;}
break;
case 76:
-#line 392 "engines/director/lingo/lingo-gr.y"
+#line 394 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_concat); ;}
break;
case 77:
-#line 393 "engines/director/lingo/lingo-gr.y"
+#line 395 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_contains); ;}
break;
case 78:
-#line 394 "engines/director/lingo/lingo-gr.y"
+#line 396 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_starts); ;}
break;
case 79:
-#line 395 "engines/director/lingo/lingo-gr.y"
+#line 397 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (2)].code); ;}
break;
case 80:
-#line 396 "engines/director/lingo/lingo-gr.y"
+#line 398 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->c_negate); ;}
break;
case 81:
-#line 397 "engines/director/lingo/lingo-gr.y"
+#line 399 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (3)].code); ;}
break;
case 82:
-#line 398 "engines/director/lingo/lingo-gr.y"
+#line 400 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_intersects); ;}
break;
case 83:
-#line 399 "engines/director/lingo/lingo-gr.y"
+#line 401 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_within); ;}
break;
case 84:
-#line 402 "engines/director/lingo/lingo-gr.y"
+#line 404 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_mci); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
break;
case 85:
-#line 403 "engines/director/lingo/lingo-gr.y"
+#line 405 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_mciwait); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
break;
case 86:
-#line 404 "engines/director/lingo/lingo-gr.y"
+#line 406 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_printtop); ;}
break;
case 88:
-#line 406 "engines/director/lingo/lingo-gr.y"
+#line 408 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret); ;}
break;
case 90:
-#line 411 "engines/director/lingo/lingo-gr.y"
+#line 413 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); delete (yyvsp[(1) - (1)].s); ;}
break;
case 91:
-#line 412 "engines/director/lingo/lingo-gr.y"
+#line 414 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_global); g_lingo->codeString((yyvsp[(3) - (3)].s)->c_str()); delete (yyvsp[(3) - (3)].s); ;}
break;
case 92:
-#line 423 "engines/director/lingo/lingo-gr.y"
+#line 425 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_gotoloop); ;}
break;
case 93:
-#line 424 "engines/director/lingo/lingo-gr.y"
+#line 426 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_gotonext); ;}
break;
case 94:
-#line 425 "engines/director/lingo/lingo-gr.y"
+#line 427 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->c_gotoprevious); ;}
break;
case 95:
-#line 426 "engines/director/lingo/lingo-gr.y"
+#line 428 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_goto);
g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str());
@@ -2322,7 +2322,7 @@ yyreduce:
break;
case 96:
-#line 431 "engines/director/lingo/lingo-gr.y"
+#line 433 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_goto);
g_lingo->codeString((yyvsp[(2) - (3)].s)->c_str());
@@ -2332,7 +2332,7 @@ yyreduce:
break;
case 97:
-#line 437 "engines/director/lingo/lingo-gr.y"
+#line 439 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_goto);
g_lingo->codeString("");
@@ -2341,47 +2341,47 @@ yyreduce:
break;
case 98:
-#line 444 "engines/director/lingo/lingo-gr.y"
+#line 446 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(3) - (3)].s); ;}
break;
case 99:
-#line 445 "engines/director/lingo/lingo-gr.y"
+#line 447 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(2) - (2)].s); ;}
break;
case 100:
-#line 446 "engines/director/lingo/lingo-gr.y"
+#line 448 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(2) - (2)].s); ;}
break;
case 101:
-#line 447 "engines/director/lingo/lingo-gr.y"
+#line 449 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(1) - (1)].s); ;}
break;
case 102:
-#line 450 "engines/director/lingo/lingo-gr.y"
+#line 452 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(3) - (3)].s); ;}
break;
case 103:
-#line 451 "engines/director/lingo/lingo-gr.y"
+#line 453 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(2) - (2)].s); ;}
break;
case 104:
-#line 452 "engines/director/lingo/lingo-gr.y"
+#line 454 "engines/director/lingo/lingo-gr.y"
{ (yyval.s) = (yyvsp[(3) - (3)].s); ;}
break;
case 105:
-#line 480 "engines/director/lingo/lingo-gr.y"
+#line 482 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = true; g_lingo->_currentFactory.clear(); ;}
break;
case 106:
-#line 481 "engines/director/lingo/lingo-gr.y"
+#line 483 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret);
@@ -2390,19 +2390,19 @@ yyreduce:
break;
case 107:
-#line 486 "engines/director/lingo/lingo-gr.y"
+#line 488 "engines/director/lingo/lingo-gr.y"
{
g_lingo->codeFactory(*(yyvsp[(2) - (2)].s));
;}
break;
case 108:
-#line 489 "engines/director/lingo/lingo-gr.y"
+#line 491 "engines/director/lingo/lingo-gr.y"
{ g_lingo->_indef = true; ;}
break;
case 109:
-#line 490 "engines/director/lingo/lingo-gr.y"
+#line 492 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code2(g_lingo->c_constpush, (inst)0); // Push fake value on stack
g_lingo->code1(g_lingo->c_procret);
@@ -2411,32 +2411,32 @@ yyreduce:
break;
case 110:
-#line 495 "engines/director/lingo/lingo-gr.y"
+#line 497 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; ;}
break;
case 111:
-#line 496 "engines/director/lingo/lingo-gr.y"
+#line 498 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[(1) - (1)].s)); (yyval.narg) = 1; ;}
break;
case 112:
-#line 497 "engines/director/lingo/lingo-gr.y"
+#line 499 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[(3) - (3)].s)); (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
break;
case 113:
-#line 498 "engines/director/lingo/lingo-gr.y"
+#line 500 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArg((yyvsp[(4) - (4)].s)); (yyval.narg) = (yyvsp[(1) - (4)].narg) + 1; ;}
break;
case 114:
-#line 500 "engines/director/lingo/lingo-gr.y"
+#line 502 "engines/director/lingo/lingo-gr.y"
{ g_lingo->codeArgStore(); ;}
break;
case 115:
-#line 504 "engines/director/lingo/lingo-gr.y"
+#line 506 "engines/director/lingo/lingo-gr.y"
{
g_lingo->code1(g_lingo->c_call);
g_lingo->codeString((yyvsp[(1) - (3)].s)->c_str());
@@ -2446,17 +2446,17 @@ yyreduce:
break;
case 116:
-#line 512 "engines/director/lingo/lingo-gr.y"
+#line 514 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 0; ;}
break;
case 117:
-#line 513 "engines/director/lingo/lingo-gr.y"
+#line 515 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = 1; ;}
break;
case 118:
-#line 514 "engines/director/lingo/lingo-gr.y"
+#line 516 "engines/director/lingo/lingo-gr.y"
{ (yyval.narg) = (yyvsp[(1) - (3)].narg) + 1; ;}
break;
@@ -2676,6 +2676,6 @@ yyreturn:
}
-#line 517 "engines/director/lingo/lingo-gr.y"
+#line 519 "engines/director/lingo/lingo-gr.y"
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 241c4299b4..f5d97e9f00 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -39,23 +39,23 @@
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
- CASTREF = 258,
- UNARY = 259,
- VOIDVAL = 260,
- VAR = 261,
- POINT = 262,
- RECT = 263,
- ARRAY = 264,
- SYMBOL = 265,
- INT = 266,
- THEENTITY = 267,
- THEENTITYWITHID = 268,
- FLOAT = 269,
- BLTIN = 270,
- BLTINNOARGS = 271,
- ID = 272,
- STRING = 273,
- HANDLER = 274,
+ UNARY = 258,
+ vCASTREF = 259,
+ vVOID = 260,
+ vVAR = 261,
+ vPOINT = 262,
+ vRECT = 263,
+ vARRAY = 264,
+ vSYMBOL = 265,
+ vINT = 266,
+ vTHEENTITY = 267,
+ vTHEENTITYWITHID = 268,
+ vFLOAT = 269,
+ vBLTIN = 270,
+ vBLTINNOARGS = 271,
+ vSTRING = 272,
+ vHANDLER = 273,
+ ID = 274,
tDOWN = 275,
tELSE = 276,
tNLELSIF = 277,
@@ -103,23 +103,23 @@
};
#endif
/* Tokens. */
-#define CASTREF 258
-#define UNARY 259
-#define VOIDVAL 260
-#define VAR 261
-#define POINT 262
-#define RECT 263
-#define ARRAY 264
-#define SYMBOL 265
-#define INT 266
-#define THEENTITY 267
-#define THEENTITYWITHID 268
-#define FLOAT 269
-#define BLTIN 270
-#define BLTINNOARGS 271
-#define ID 272
-#define STRING 273
-#define HANDLER 274
+#define UNARY 258
+#define vCASTREF 259
+#define vVOID 260
+#define vVAR 261
+#define vPOINT 262
+#define vRECT 263
+#define vARRAY 264
+#define vSYMBOL 265
+#define vINT 266
+#define vTHEENTITY 267
+#define vTHEENTITYWITHID 268
+#define vFLOAT 269
+#define vBLTIN 270
+#define vBLTINNOARGS 271
+#define vSTRING 272
+#define vHANDLER 273
+#define ID 274
#define tDOWN 275
#define tELSE 276
#define tNLELSIF 277
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index b70e318c07..59a103bfac 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -76,11 +76,13 @@ void yyerror(char *s) {
Common::Array<double> *arr;
}
-%token CASTREF UNARY VOIDVAL VAR POINT RECT ARRAY SYMBOL
-%token<i> INT
-%token<e> THEENTITY THEENTITYWITHID
-%token<f> FLOAT
-%token<s> BLTIN BLTINNOARGS ID STRING HANDLER
+%token UNARY
+%token vCASTREF vVOID vVAR vPOINT vRECT vARRAY vSYMBOL
+%token<i> vINT
+%token<e> vTHEENTITY vTHEENTITYWITHID
+%token<f> vFLOAT
+%token<s> vBLTIN vBLTINNOARGS vSTRING vHANDLER
+%token<s> ID
%token tDOWN tELSE tNLELSIF tEND tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO
%token tMCI tMCIWAIT tMOVIE tNEXT tOF tPREVIOUS tPUT tREPEAT tSET tTHEN tTO tWHEN
%token tWITH tWHILE tNLELSE tFACTORY tMETHOD
@@ -129,7 +131,7 @@ asgn: tPUT expr tINTO ID {
g_lingo->code1(g_lingo->c_assign);
$$ = $4;
delete $2; }
- | tSET THEENTITY '=' expr {
+ | tSET vTHEENTITY '=' expr {
g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentityassign);
inst e = 0, f = 0;
@@ -137,7 +139,7 @@ asgn: tPUT expr tINTO ID {
WRITE_UINT32(&f, $2[1]);
g_lingo->code2(e, f);
$$ = $4; }
- | tSET THEENTITYWITHID expr '=' expr {
+ | tSET vTHEENTITYWITHID expr '=' expr {
g_lingo->code1(g_lingo->c_swap);
g_lingo->code1(g_lingo->c_theentityassign);
inst e = 0, f = 0;
@@ -151,7 +153,7 @@ asgn: tPUT expr tINTO ID {
g_lingo->code1(g_lingo->c_assign);
$$ = $4;
delete $2; }
- | tSET THEENTITY tTO expr {
+ | tSET vTHEENTITY tTO expr {
g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentityassign);
inst e = 0, f = 0;
@@ -159,7 +161,7 @@ asgn: tPUT expr tINTO ID {
WRITE_UINT32(&f, $2[1]);
g_lingo->code2(e, f);
$$ = $4; }
- | tSET THEENTITYWITHID expr tTO expr {
+ | tSET vTHEENTITYWITHID expr tTO expr {
g_lingo->code1(g_lingo->c_swap);
g_lingo->code1(g_lingo->c_theentityassign);
inst e = 0, f = 0;
@@ -340,18 +342,18 @@ stmtlist: /* nothing */ { $$ = g_lingo->_currentScript->size(); }
| stmtlist stmt
;
-expr: INT {
+expr: vINT {
$$ = g_lingo->code1(g_lingo->c_constpush);
inst i = 0;
WRITE_UINT32(&i, $1);
g_lingo->code1(i); }
- | FLOAT {
+ | vFLOAT {
$$ = g_lingo->code1(g_lingo->c_fconstpush);
g_lingo->codeFloat($1); }
- | STRING {
+ | vSTRING {
$$ = g_lingo->code1(g_lingo->c_stringpush);
g_lingo->codeString($1->c_str()); }
- | BLTINNOARGS {
+ | vBLTINNOARGS {
$$ = g_lingo->code1(g_lingo->_handlers[*$1]->u.func);
$$ = g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy value
delete $1; }
@@ -362,14 +364,14 @@ expr: INT {
$$ = g_lingo->code1(g_lingo->c_eval);
g_lingo->codeString($1->c_str());
delete $1; }
- | THEENTITY {
+ | vTHEENTITY {
$$ = g_lingo->code2(g_lingo->c_constpush, 0); // Put dummy id
g_lingo->code1(g_lingo->c_theentitypush);
inst e = 0, f = 0;
WRITE_UINT32(&e, $1[0]);
WRITE_UINT32(&f, $1[1]);
g_lingo->code2(e, f); }
- | THEENTITYWITHID expr {
+ | vTHEENTITYWITHID expr {
$$ = g_lingo->code1(g_lingo->c_theentitypush);
inst e = 0, f = 0;
WRITE_UINT32(&e, $1[0]);
@@ -399,7 +401,7 @@ expr: INT {
| tSPRITE expr tWITHIN expr { g_lingo->code1(g_lingo->c_within); }
;
-func: tMCI STRING { g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c_str()); delete $2; }
+func: tMCI vSTRING { g_lingo->code1(g_lingo->c_mci); g_lingo->codeString($2->c_str()); delete $2; }
| tMCIWAIT ID { g_lingo->code1(g_lingo->c_mciwait); g_lingo->codeString($2->c_str()); delete $2; }
| tPUT expr { g_lingo->code1(g_lingo->c_printtop); }
| gotofunc
@@ -441,15 +443,15 @@ gotofunc: tGO tLOOP { g_lingo->code1(g_lingo->c_gotoloop); }
delete $2; }
;
-gotoframe: tTO tFRAME STRING { $$ = $3; }
- | tFRAME STRING { $$ = $2; }
- | tTO STRING { $$ = $2; }
- | STRING { $$ = $1; }
+gotoframe: tTO tFRAME vSTRING { $$ = $3; }
+ | tFRAME vSTRING { $$ = $2; }
+ | tTO vSTRING { $$ = $2; }
+ | vSTRING { $$ = $1; }
;
-gotomovie: tOF tMOVIE STRING { $$ = $3; }
- | tMOVIE STRING { $$ = $2; }
- | tTO tMOVIE STRING { $$ = $3; }
+gotomovie: tOF tMOVIE vSTRING { $$ = $3; }
+ | tMOVIE vSTRING { $$ = $2; }
+ | tTO tMOVIE vSTRING { $$ = $3; }
;
// macro
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 11ded79bfc..1fd200d0d0 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -1149,9 +1149,9 @@ YY_RULE_SETUP
yylval.e[1] = g_lingo->_theEntityFields[field]->field;
if (g_lingo->_theEntities[ptr]->hasId)
- return THEENTITYWITHID;
+ return vTHEENTITYWITHID;
else
- return THEENTITY;
+ return vTHEENTITY;
}
warning("Unhandled the entity %s", ptr);
@@ -1172,9 +1172,9 @@ YY_RULE_SETUP
yylval.e[1] = 0; // No field
if (g_lingo->_theEntities[ptr]->hasId)
- return THEENTITYWITHID;
+ return vTHEENTITYWITHID;
else
- return THEENTITY;
+ return vTHEENTITY;
}
warning("Unhandled the entity %s", ptr);
@@ -1243,8 +1243,8 @@ YY_RULE_SETUP
yylval.s = new Common::String(yytext);
if (g_lingo->_handlers.contains(yytext)) {
- if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->nargs == -1)
- return BLTINNOARGS;
+ if (g_lingo->_handlers[yytext]->type == vBLTIN && g_lingo->_handlers[yytext]->nargs == -1)
+ return vBLTINNOARGS;
}
return ID;
@@ -1253,12 +1253,12 @@ YY_RULE_SETUP
case 48:
YY_RULE_SETUP
#line 184 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.f = atof(yytext); return FLOAT; }
+{ count(); yylval.f = atof(yytext); return vFLOAT; }
YY_BREAK
case 49:
YY_RULE_SETUP
#line 185 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{ count(); yylval.i = strtol(yytext, NULL, 10); return vINT; }
YY_BREAK
case 50:
YY_RULE_SETUP
@@ -1274,7 +1274,7 @@ YY_RULE_SETUP
case 52:
YY_RULE_SETUP
#line 188 "engines/director/lingo/lingo-lex.l"
-{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{ count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; }
YY_BREAK
case 53:
YY_RULE_SETUP
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index 6a5cf0486c..e96a82e972 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -131,9 +131,9 @@ whitespace [\t ]
yylval.e[1] = g_lingo->_theEntityFields[field]->field;
if (g_lingo->_theEntities[ptr]->hasId)
- return THEENTITYWITHID;
+ return vTHEENTITYWITHID;
else
- return THEENTITY;
+ return vTHEENTITY;
}
warning("Unhandled the entity %s", ptr);
@@ -150,9 +150,9 @@ whitespace [\t ]
yylval.e[1] = 0; // No field
if (g_lingo->_theEntities[ptr]->hasId)
- return THEENTITYWITHID;
+ return vTHEENTITYWITHID;
else
- return THEENTITY;
+ return vTHEENTITY;
}
warning("Unhandled the entity %s", ptr);
@@ -175,17 +175,17 @@ whitespace [\t ]
yylval.s = new Common::String(yytext);
if (g_lingo->_handlers.contains(yytext)) {
- if (g_lingo->_handlers[yytext]->type == BLTIN && g_lingo->_handlers[yytext]->nargs == -1)
- return BLTINNOARGS;
+ if (g_lingo->_handlers[yytext]->type == vBLTIN && g_lingo->_handlers[yytext]->nargs == -1)
+ return vBLTINNOARGS;
}
return ID;
}
-{constfloat} { count(); yylval.f = atof(yytext); return FLOAT; }
-{constinteger} { count(); yylval.i = strtol(yytext, NULL, 10); return INT; }
+{constfloat} { count(); yylval.f = atof(yytext); return vFLOAT; }
+{constinteger} { count(); yylval.i = strtol(yytext, NULL, 10); return vINT; }
{operator} { count(); return *yytext; }
{newline} { return '\n'; }
-{conststring} { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return STRING; }
+{conststring} { count(); yylval.s = new Common::String(&yytext[1]); yylval.s->deleteLastChar(); return vSTRING; }
.
%%
diff --git a/engines/director/lingo/lingo-the.cpp b/engines/director/lingo/lingo-the.cpp
index cf303aa5ee..84654ebe36 100644
--- a/engines/director/lingo/lingo-the.cpp
+++ b/engines/director/lingo/lingo-the.cpp
@@ -196,7 +196,7 @@ void Lingo::setTheEntity(int entity, Datum &id, int field, Datum &d) {
void Lingo::setTheSprite(Datum &id1, int field, Datum &d) {
int id = 0;
- if (id1.type == INT) {
+ if (id1.type == vINT) {
id = id1.u.i;
} else {
warning("Unknown the sprite id type: %s", id1.type2str());
@@ -315,12 +315,12 @@ Datum Lingo::getTheEntity(int entity, Datum &id, int field) {
warning("STUB: getting the perframehook");
break;
case kTheFloatPrecision:
- d.type = INT;
+ d.type = vINT;
d.u.i = _floatPrecision;
break;
default:
warning("Unprocessed getting field %d of entity %d", field, entity);
- d.type = VOIDVAL;
+ d.type = vVOID;
}
return d;
@@ -330,7 +330,7 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
Datum d;
int id = 0;
- if (id1.type == INT) {
+ if (id1.type == vINT) {
id = id1.u.i;
} else {
warning("Unknown the sprite id type: %s", id1.type2str());
@@ -347,7 +347,7 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
if (!sprite)
return d;
- d.type = INT;
+ d.type = vINT;
switch (field) {
case kTheCastNum:
@@ -431,7 +431,7 @@ Datum Lingo::getTheSprite(Datum &id1, int field) {
break;
default:
warning("Unprocessed getting field %d of sprite", field);
- d.type = VOIDVAL;
+ d.type = vVOID;
}
return d;
@@ -441,7 +441,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
Datum d;
int id = 0;
- if (id1.type == INT) {
+ if (id1.type == vINT) {
id = id1.u.i;
} else {
warning("Unknown the cast id type: %s", id1.type2str());
@@ -457,7 +457,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
CastInfo *castInfo;
if (!_vm->_currentScore->_casts.contains(id)) {
if (field == kTheLoaded) {
- d.type = INT;
+ d.type = vINT;
d.u.i = 0;
}
@@ -469,7 +469,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
cast = _vm->_currentScore->_casts[id];
castInfo = _vm->_currentScore->_castsInfo[id];
- d.type = INT;
+ d.type = vINT;
switch (field) {
case kTheCastType:
@@ -497,7 +497,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
{
if (cast->type != kCastShape) {
warning("Field %d of cast %d not found", field, id);
- d.type = VOIDVAL;
+ d.type = vVOID;
return d;
}
@@ -509,7 +509,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
{
if (cast->type != kCastShape) {
warning("Field %d of cast %d not found", field, id);
- d.type = VOIDVAL;
+ d.type = vVOID;
return d;
}
@@ -522,7 +522,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
break;
default:
warning("Unprocessed getting field %d of cast %d", field, id);
- d.type = VOIDVAL;
+ d.type = vVOID;
//TODO find out about String fields
}
@@ -532,7 +532,7 @@ Datum Lingo::getTheCast(Datum &id1, int field) {
void Lingo::setTheCast(Datum &id1, int field, Datum &d) {
int id = 0;
- if (id1.type == INT) {
+ if (id1.type == vINT) {
id = id1.u.i;
} else {
warning("Unknown the cast id type: %s", id1.type2str());
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index d13de6a1dd..e5fa09ceb9 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -69,7 +69,7 @@ struct EventHandlerType {
Symbol::Symbol() {
name = NULL;
- type = VOIDVAL;
+ type = vVOID;
u.s = NULL;
nargs = 0;
global = false;
@@ -224,10 +224,10 @@ void Lingo::processEvent(LEvent event, int entityId) {
}
int Lingo::alignTypes(Datum &d1, Datum &d2) {
- int opType = INT;
+ int opType = vINT;
- if (d1.type == FLOAT || d2.type == FLOAT) {
- opType = FLOAT;
+ if (d1.type == vFLOAT || d2.type == vFLOAT) {
+ opType = vFLOAT;
d1.toFloat();
d2.toFloat();
}
@@ -237,12 +237,12 @@ int Lingo::alignTypes(Datum &d1, Datum &d2) {
int Datum::toInt() {
switch (type) {
- case INT:
+ case vINT:
// no-op
break;
- case FLOAT:
+ case vFLOAT:
u.i = (int)u.f;
- type = INT;
+ type = vINT;
break;
default:
warning("Incorrect operation toInt() for type: %s", type2str());
@@ -253,11 +253,11 @@ int Datum::toInt() {
double Datum::toFloat() {
switch (type) {
- case INT:
+ case vINT:
u.f = (double)u.i;
- type = FLOAT;
+ type = vFLOAT;
break;
- case FLOAT:
+ case vFLOAT:
// no-op
break;
default:
@@ -270,13 +270,13 @@ double Datum::toFloat() {
Common::String *Datum::toString() {
Common::String *s = new Common::String;
switch (type) {
- case INT:
+ case vINT:
s->format("%d", u.i);
break;
- case FLOAT:
+ case vFLOAT:
s->format(g_lingo->_floatPrecisionFormat.c_str(), u.f);
break;
- case STRING:
+ case vSTRING:
delete s;
s = u.s;
break;
@@ -285,7 +285,7 @@ Common::String *Datum::toString() {
}
u.s = s;
- type = STRING;
+ type = vSTRING;
return u.s;
}
@@ -294,20 +294,20 @@ const char *Datum::type2str(bool isk) {
static char res[20];
switch (isk ? u.i : type) {
- case INT:
- return isk ? "#integer" : "INT";
- case FLOAT:
- return isk ? "#float" : "FLOAT";
- case STRING:
- return isk ? "#string" : "STRING";
- case CASTREF:
- return "CASTREF";
- case VOIDVAL:
- return isk ? "#void" : "VOIDVAL";
- case POINT:
- return isk ? "#point" : "POINT";
- case SYMBOL:
- return isk ? "#symbol" : "SYMBOL";
+ case vINT:
+ return isk ? "#integer" : "vINT";
+ case vFLOAT:
+ return isk ? "#float" : "vFLOAT";
+ case vSTRING:
+ return isk ? "#string" : "vSTRING";
+ case vCASTREF:
+ return "vCASTREF";
+ case vVOID:
+ return isk ? "#void" : "vVOID";
+ case vPOINT:
+ return isk ? "#point" : "vPOINT";
+ case vSYMBOL:
+ return isk ? "#symbol" : "vSYMBOL";
default:
snprintf(res, 20, "-- (%d) --", type);
return res;
diff --git a/engines/director/lingo/lingo.h b/engines/director/lingo/lingo.h
index 51cc649670..fb68dbb4e3 100644
--- a/engines/director/lingo/lingo.h
+++ b/engines/director/lingo/lingo.h
@@ -82,12 +82,12 @@ struct Symbol { /* symbol table entry */
char *name;
int type;
union {
- int i; /* VAR */
- double f; /* FLOAT */
- ScriptData *defn; /* FUNCTION, PROCEDURE */
- void (*func)(void); /* BUILTIN */
- Common::String *s; /* STRING */
- FloatArray *arr; /* ARRAY, POINT, RECT */
+ int i; /* vVAR */
+ double f; /* vFLOAT */
+ ScriptData *defn; /* vFUNCTION, vPROCEDURE */
+ void (*func)(void); /* vBUILTIN */
+ Common::String *s; /* vSTRING */
+ FloatArray *arr; /* vARRAY, vPOINT, vRECT */
} u;
int nargs;
bool global;
@@ -103,10 +103,10 @@ struct Datum { /* interpreter stack type */
double f;
Common::String *s;
Symbol *sym;
- FloatArray *arr; /* ARRAY, POINT, RECT */
+ FloatArray *arr; /* vARRAY, vPOINT, vRECT */
} u;
- Datum() { u.sym = NULL; type = VOIDVAL; }
+ Datum() { u.sym = NULL; type = vVOID; }
double toFloat();
int toInt();