aboutsummaryrefslogtreecommitdiff
path: root/engines/director/lingo/lingo-gr.y
diff options
context:
space:
mode:
authorEugene Sandulenko2016-07-12 12:39:21 +0200
committerEugene Sandulenko2016-08-03 23:40:36 +0200
commitd08e030da65717479aa7640458066a00ff541c72 (patch)
tree6a349787ade1e00eaf2784b7145e96b3b627ba7c /engines/director/lingo/lingo-gr.y
parent9763b62a78ba51b328fe336926a40fa0ffdde0be (diff)
downloadscummvm-rg350-d08e030da65717479aa7640458066a00ff541c72.tar.gz
scummvm-rg350-d08e030da65717479aa7640458066a00ff541c72.tar.bz2
scummvm-rg350-d08e030da65717479aa7640458066a00ff541c72.zip
DIRECTOR: Lingo: Implement setting the entity fields
Diffstat (limited to 'engines/director/lingo/lingo-gr.y')
-rw-r--r--engines/director/lingo/lingo-gr.y16
1 files changed, 16 insertions, 0 deletions
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y
index cc0d1fdfb7..9a374d0d0d 100644
--- a/engines/director/lingo/lingo-gr.y
+++ b/engines/director/lingo/lingo-gr.y
@@ -135,6 +135,14 @@ asgn: tPUT expr tINTO ID {
WRITE_UINT32(&f, $2[1]);
g_lingo->code2(e, f);
$$ = $4; }
+ | tSET THEENTITYWITHID expr '=' expr {
+ g_lingo->code1(g_lingo->c_swap);
+ g_lingo->code1(g_lingo->c_theentityassign);
+ inst e = 0, f = 0;
+ WRITE_UINT32(&e, $2[0]);
+ WRITE_UINT32(&f, $2[1]);
+ g_lingo->code2(e, f);
+ $$ = $5; }
| tSET ID tTO expr {
g_lingo->code1(g_lingo->c_varpush);
g_lingo->codeString($2->c_str());
@@ -149,6 +157,14 @@ asgn: tPUT expr tINTO ID {
WRITE_UINT32(&f, $2[1]);
g_lingo->code2(e, f);
$$ = $4; }
+ | tSET THEENTITYWITHID expr tTO expr {
+ g_lingo->code1(g_lingo->c_swap);
+ g_lingo->code1(g_lingo->c_theentityassign);
+ inst e = 0, f = 0;
+ WRITE_UINT32(&e, $2[0]);
+ WRITE_UINT32(&f, $2[1]);
+ g_lingo->code2(e, f);
+ $$ = $5; }
;
stmtoneliner: expr { g_lingo->code1(g_lingo->c_xpop); }
| func