From 293d59f6ada41d8c942717a0248d6aef62765a29 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 6 Feb 2017 19:10:51 +0100 Subject: DIRECTOR: Lingo: Further work on improved built-in grammar --- engines/director/lingo/lingo-lex.l | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'engines/director/lingo/lingo-lex.l') diff --git a/engines/director/lingo/lingo-lex.l b/engines/director/lingo/lingo-lex.l index 00750c4523..ec9d6319bd 100644 --- a/engines/director/lingo/lingo-lex.l +++ b/engines/director/lingo/lingo-lex.l @@ -267,21 +267,22 @@ whitespace [\t ] } if (g_lingo->_builtins.contains(yytext)) { - if (g_lingo->_builtins[yytext]->type == BLTIN && g_lingo->_builtins[yytext]->parens == false) { + int type = g_lingo->_builtins[yytext]->type; + if ((type == BLTIN || type == FBLTIN) && g_lingo->_builtins[yytext]->parens == false) { if (g_lingo->_builtins[yytext]->nargs == 0) { if (g_lingo->_builtins[yytext]->maxArgs == 0) - return BLTINNOARGS; + return type == BLTIN ? BLTINNOARGS : FBLTINNOARGS; else if (g_lingo->_builtins[yytext]->maxArgs == 1) - return BLTINNOARGSORONE; + return type == BLTINNOARGSORONE; else - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } else if (g_lingo->_builtins[yytext]->nargs == 1 && g_lingo->_builtins[yytext]->maxArgs == 1) { - return BLTINONEARG; + return type == BLTIN ? BLTINONEARG : FBLTINONEARG; } else if (g_lingo->_builtins[yytext]->nargs == -1) { - return BLTINARGLIST; + return type == BLTINARGLIST; } else { - error("Incorrect setup for builtin: %s", yytext); + return type == BLTINARGLIST; } } } -- cgit v1.2.3