aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-gr.y
diff options
context:
space:
mode:
Diffstat (limited to 'engines/director/lingo/lingo-gr.y')
-rw-r--r--engines/director/lingo/lingo-gr.y10
1 files changed, 9 insertions, 1 deletions
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index 1e3c721f08..4bbbbcdf96 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -92,7 +92,7 @@ void checkEnd(Common::String *token, const char *expect, bool required) {
%token<e> THEENTITY THEENTITYWITHID
%token<f> FLOAT
%token<s> BLTIN BLTINNOARGS BLTINNOARGSORONE BLTINONEARG BLTINARGLIST TWOWORDBUILTIN
-%token<s> FBLTIN FBLTINNOARGS FBLTINONEARG FBLTINARGLIST
+%token<s> FBLTIN FBLTINNOARGS FBLTINONEARG FBLTINARGLIST RBLTIN RBLTINONEARG
%token<s> ID STRING HANDLER SYMBOL
%token<s> ENDCLAUSE tPLAYACCEL
%token tDOWN tELSE tNLELSIF tEXIT tFRAME tGLOBAL tGO tIF tINTO tLOOP tMACRO
@@ -137,6 +137,9 @@ asgn: tPUT expr tINTO ID {
g_lingo->code1(g_lingo->c_assign);
$$ = $2;
delete $4; }
+ | tPUT expr tINTO reference {
+ g_lingo->code1(g_lingo->c_assign);
+ $$ = $2; }
| tPUT expr tAFTER expr { $$ = g_lingo->code1(g_lingo->c_after); } // D3
| tPUT expr tBEFORE expr { $$ = g_lingo->code1(g_lingo->c_before); } // D3
| tSET ID '=' expr {
@@ -472,6 +475,11 @@ expr: INT { $$ = g_lingo->codeConst($1); }
| tWORD expr tTO expr tOF expr { g_lingo->code1(g_lingo->c_wordToOf); }
;
+reference: RBLTINONEARG expr {
+ g_lingo->codeFunc($1, 1);
+ delete $1; }
+ ;
+
proc: tPUT expr { g_lingo->code1(g_lingo->c_printtop); }
| gotofunc
| playfunc