diff options
Diffstat (limited to 'engines/director/lingo/lingo-gr.y')
-rw-r--r-- | engines/director/lingo/lingo-gr.y | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/engines/director/lingo/lingo-gr.y b/engines/director/lingo/lingo-gr.y index aca2a192f5..86d5872e80 100644 --- a/engines/director/lingo/lingo-gr.y +++ b/engines/director/lingo/lingo-gr.y @@ -98,6 +98,7 @@ programline: | func | macro | asgn { g_lingo->code1(g_lingo->c_xpop); } + | stmtoneliner | stmt | error { yyerrok; } ; @@ -183,6 +184,14 @@ stmt: expr { g_lingo->code1(g_lingo->c_xpop); } (*g_lingo->_currentScript)[$1 + 5] = end; } /* end, if cond fails */ ; +stmtoneliner: if cond tTHEN begin stmt end { + inst then = 0, end = 0; + WRITE_UINT32(&then, $4); + WRITE_UINT32(&end, $6); + (*g_lingo->_currentScript)[$1 + 1] = then; /* thenpart */ + (*g_lingo->_currentScript)[$1 + 3] = end; } /* end, if cond fails */ + ; + cond: expr { g_lingo->code1(STOP); } | expr '=' expr { g_lingo->code2(g_lingo->c_eq, STOP); } | '(' cond ')' |