aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2016-06-19 21:00:27 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commit5db0d15bc2b6e2f3e08666ffa3184bd04619d49a (patch)
treef1fa50608678d4d436092efd0d64081dc7585309
parent81b056ffc1670dba3e46c42eb5d16263ab724f6e (diff)
downloadscummvm-rg350-5db0d15bc2b6e2f3e08666ffa3184bd04619d49a.tar.gz
scummvm-rg350-5db0d15bc2b6e2f3e08666ffa3184bd04619d49a.tar.bz2
scummvm-rg350-5db0d15bc2b6e2f3e08666ffa3184bd04619d49a.zip
DIRECTOR: Lingo: Simpler token constants
-rw-r--r--engines/director/lingo/lingo-gr.cpp75
-rw-r--r--engines/director/lingo/lingo-gr.h24
-rw-r--r--engines/director/lingo/lingo-gr.y18
-rw-r--r--engines/director/lingo/lingo-lex.cpp12
-rw-r--r--engines/director/lingo/lingo-lex.l12
5 files changed, 68 insertions, 73 deletions
diff --git a/engines/director/lingo/lingo-gr.cpp b/engines/director/lingo/lingo-gr.cpp
index ad7104c127..5d2d2bf054 100644
--- a/engines/director/lingo/lingo-gr.cpp
+++ b/engines/director/lingo/lingo-gr.cpp
@@ -72,12 +72,12 @@
FLOAT = 261,
VAR = 262,
STRING = 263,
- OP_INTO = 264,
- OP_TO = 265,
- FUNC_MCI = 266,
- FUNC_MCIWAIT = 267,
- FUNC_PUT = 268,
- FUNC_SET = 269
+ tINTO = 264,
+ tTO = 265,
+ tMCI = 266,
+ tMCIWAIT = 267,
+ tPUT = 268,
+ tSET = 269
};
#endif
/* Tokens. */
@@ -87,12 +87,12 @@
#define FLOAT 261
#define VAR 262
#define STRING 263
-#define OP_INTO 264
-#define OP_TO 265
-#define FUNC_MCI 266
-#define FUNC_MCIWAIT 267
-#define FUNC_PUT 268
-#define FUNC_SET 269
+#define tINTO 264
+#define tTO 265
+#define tMCI 266
+#define tMCIWAIT 267
+#define tPUT 268
+#define tSET 269
@@ -447,9 +447,9 @@ static const yytype_int8 yyrhs[] =
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint8 yyrline[] =
{
- 0, 68, 68, 69, 72, 73, 74, 75, 76, 77,
- 80, 81, 82, 85, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 99, 100
+ 0, 64, 64, 65, 68, 69, 70, 71, 72, 73,
+ 76, 77, 78, 81, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 95, 96
};
#endif
@@ -459,10 +459,9 @@ static const yytype_uint8 yyrline[] =
static const char *const yytname[] =
{
"$end", "error", "$undefined", "UNARY", "UNDEF", "INT", "FLOAT", "VAR",
- "STRING", "OP_INTO", "OP_TO", "FUNC_MCI", "FUNC_MCIWAIT", "FUNC_PUT",
- "FUNC_SET", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('",
- "')'", "$accept", "program", "programline", "assign", "statement",
- "expr", "func", 0
+ "STRING", "tINTO", "tTO", "tMCI", "tMCIWAIT", "tPUT", "tSET", "'='",
+ "'+'", "'-'", "'*'", "'/'", "'%'", "'\\n'", "'('", "')'", "$accept",
+ "program", "programline", "assign", "statement", "expr", "func", 0
};
#endif
@@ -1377,93 +1376,93 @@ yyreduce:
switch (yyn)
{
case 6:
-#line 74 "engines/director/lingo/lingo-gr.y"
+#line 70 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_xpop); ;}
break;
case 8:
-#line 76 "engines/director/lingo/lingo-gr.y"
+#line 72 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_printtop); ;}
break;
case 10:
-#line 80 "engines/director/lingo/lingo-gr.y"
+#line 76 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString((yyvsp[(4) - (4)].s)->c_str()); g_lingo->code1(g_lingo->func_assign); (yyval.code) = (yyvsp[(2) - (4)].code); delete (yyvsp[(4) - (4)].s); ;}
break;
case 11:
-#line 81 "engines/director/lingo/lingo-gr.y"
+#line 77 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); g_lingo->code1(g_lingo->func_assign); (yyval.code) = (yyvsp[(4) - (4)].code); delete (yyvsp[(2) - (4)].s); ;}
break;
case 12:
-#line 82 "engines/director/lingo/lingo-gr.y"
+#line 78 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString((yyvsp[(2) - (4)].s)->c_str()); g_lingo->code1(g_lingo->func_assign); (yyval.code) = (yyvsp[(4) - (4)].code); delete (yyvsp[(2) - (4)].s); ;}
break;
case 13:
-#line 85 "engines/director/lingo/lingo-gr.y"
+#line 81 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_xpop); ;}
break;
case 14:
-#line 88 "engines/director/lingo/lingo-gr.y"
+#line 84 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_constpush); inst i; WRITE_LE_UINT32(&i, (yyvsp[(1) - (1)].i)); (yyval.code) = g_lingo->code1(i); ;}
break;
case 15:
-#line 89 "engines/director/lingo/lingo-gr.y"
+#line 85 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString((yyvsp[(1) - (1)].s)->c_str()); (yyval.code) = g_lingo->code1(g_lingo->func_eval); delete (yyvsp[(1) - (1)].s); ;}
break;
case 16:
-#line 90 "engines/director/lingo/lingo-gr.y"
+#line 86 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_add); ;}
break;
case 17:
-#line 91 "engines/director/lingo/lingo-gr.y"
+#line 87 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_sub); ;}
break;
case 18:
-#line 92 "engines/director/lingo/lingo-gr.y"
+#line 88 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_mul); ;}
break;
case 19:
-#line 93 "engines/director/lingo/lingo-gr.y"
+#line 89 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_div); ;}
break;
case 20:
-#line 94 "engines/director/lingo/lingo-gr.y"
+#line 90 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (2)].code); ;}
break;
case 21:
-#line 95 "engines/director/lingo/lingo-gr.y"
+#line 91 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (2)].code); g_lingo->code1(g_lingo->func_negate); ;}
break;
case 22:
-#line 96 "engines/director/lingo/lingo-gr.y"
+#line 92 "engines/director/lingo/lingo-gr.y"
{ (yyval.code) = (yyvsp[(2) - (3)].code); ;}
break;
case 23:
-#line 99 "engines/director/lingo/lingo-gr.y"
+#line 95 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_mci); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
break;
case 24:
-#line 100 "engines/director/lingo/lingo-gr.y"
+#line 96 "engines/director/lingo/lingo-gr.y"
{ g_lingo->code1(g_lingo->func_mciwait); g_lingo->codeString((yyvsp[(2) - (2)].s)->c_str()); delete (yyvsp[(2) - (2)].s); ;}
break;
/* Line 1267 of yacc.c. */
-#line 1467 "engines/director/lingo/lingo-gr.cpp"
+#line 1466 "engines/director/lingo/lingo-gr.cpp"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -1677,6 +1676,6 @@ yyreturn:
}
-#line 103 "engines/director/lingo/lingo-gr.y"
+#line 99 "engines/director/lingo/lingo-gr.y"
diff --git a/engines/director/lingo/lingo-gr.h b/engines/director/lingo/lingo-gr.h
index 2de0733d08..40d2ddf4d2 100644
--- a/engines/director/lingo/lingo-gr.h
+++ b/engines/director/lingo/lingo-gr.h
@@ -45,12 +45,12 @@
FLOAT = 261,
VAR = 262,
STRING = 263,
- OP_INTO = 264,
- OP_TO = 265,
- FUNC_MCI = 266,
- FUNC_MCIWAIT = 267,
- FUNC_PUT = 268,
- FUNC_SET = 269
+ tINTO = 264,
+ tTO = 265,
+ tMCI = 266,
+ tMCIWAIT = 267,
+ tPUT = 268,
+ tSET = 269
};
#endif
/* Tokens. */
@@ -60,12 +60,12 @@
#define FLOAT 261
#define VAR 262
#define STRING 263
-#define OP_INTO 264
-#define OP_TO 265
-#define FUNC_MCI 266
-#define FUNC_MCIWAIT 267
-#define FUNC_PUT 268
-#define FUNC_SET 269
+#define tINTO 264
+#define tTO 265
+#define tMCI 266
+#define tMCIWAIT 267
+#define tPUT 268
+#define tSET 269
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index e79fab49b8..28f205110d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -49,12 +49,8 @@ using namespace Director;
%token<i> INT
%token<f> FLOAT
%token<s> VAR STRING
-%token OP_INTO
-%token OP_TO
-%token FUNC_MCI
-%token FUNC_MCIWAIT
-%token FUNC_PUT
-%token FUNC_SET
+%token tINTO tTO
+%token tMCI tMCIWAIT tPUT tSET
%type<code> assign expr
@@ -77,9 +73,9 @@ programline:
| /* empty */
;
-assign: FUNC_PUT expr OP_INTO VAR { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($4->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $2; delete $4; }
- | FUNC_SET VAR '=' expr { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($2->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $4; delete $2; }
- | FUNC_SET VAR OP_TO expr { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($2->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $4; delete $2; }
+assign: tPUT expr tINTO VAR { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($4->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $2; delete $4; }
+ | tSET VAR '=' expr { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($2->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $4; delete $2; }
+ | tSET VAR tTO expr { g_lingo->code1(g_lingo->func_varpush); g_lingo->codeString($2->c_str()); g_lingo->code1(g_lingo->func_assign); $$ = $4; delete $2; }
;
statement: expr { g_lingo->code1(g_lingo->func_xpop); }
@@ -96,8 +92,8 @@ expr: INT { g_lingo->code1(g_lingo->func_constpush); inst i; WRITE_LE_UINT3
| '(' expr ')' { $$ = $2; }
;
-func: FUNC_MCI STRING { g_lingo->code1(g_lingo->func_mci); g_lingo->codeString($2->c_str()); delete $2; }
- | FUNC_MCIWAIT VAR { g_lingo->code1(g_lingo->func_mciwait); g_lingo->codeString($2->c_str()); delete $2; }
+func: tMCI STRING { g_lingo->code1(g_lingo->func_mci); g_lingo->codeString($2->c_str()); delete $2; }
+ | tMCIWAIT VAR { g_lingo->code1(g_lingo->func_mciwait); g_lingo->codeString($2->c_str()); delete $2; }
;
%%
diff --git a/engines/director/lingo/lingo-lex.cpp b/engines/director/lingo/lingo-lex.cpp
index 8b27c5d9c2..6e292dc852 100644
--- a/engines/director/lingo/lingo-lex.cpp
+++ b/engines/director/lingo/lingo-lex.cpp
@@ -802,32 +802,32 @@ YY_RULE_SETUP
case 4:
YY_RULE_SETUP
#line 50 "engines/director/lingo/lingo-lex.l"
-{ return OP_INTO; }
+{ return tINTO; }
YY_BREAK
case 5:
YY_RULE_SETUP
#line 51 "engines/director/lingo/lingo-lex.l"
-{ return FUNC_MCI; }
+{ return tMCI; }
YY_BREAK
case 6:
YY_RULE_SETUP
#line 52 "engines/director/lingo/lingo-lex.l"
-{ return FUNC_MCIWAIT; }
+{ return tMCIWAIT; }
YY_BREAK
case 7:
YY_RULE_SETUP
#line 53 "engines/director/lingo/lingo-lex.l"
-{ return FUNC_PUT; }
+{ return tPUT; }
YY_BREAK
case 8:
YY_RULE_SETUP
#line 54 "engines/director/lingo/lingo-lex.l"
-{ return FUNC_SET; }
+{ return tSET; }
YY_BREAK
case 9:
YY_RULE_SETUP
#line 55 "engines/director/lingo/lingo-lex.l"
-{ return OP_TO; }
+{ return tTO; }
YY_BREAK
case 10:
YY_RULE_SETUP
diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l
index c49dae956a..2e21c7e517 100644
--- a/engines/director/lingo/lingo-lex.l
+++ b/engines/director/lingo/lingo-lex.l
@@ -47,12 +47,12 @@ whitespace [\t ]
--[^\r\n]*
^{whitespace}
[\t]+ { return ' '; }
-into { return OP_INTO; }
-mci { return FUNC_MCI; }
-mciwait { return FUNC_MCIWAIT; }
-put { return FUNC_PUT; }
-set { return FUNC_SET; }
-to { return OP_TO; }
+into { return tINTO; }
+mci { return tMCI; }
+mciwait { return tMCIWAIT; }
+put { return tPUT; }
+set { return tSET; }
+to { return tTO; }
{variable} { yylval.s = new Common::String(yytext); return VAR; }
{constfloat} { yylval.f = atof(yytext); return FLOAT; }