Module: wine Branch: master Commit: eef966faf77a6ba8b533aec8bf4c54d1a33d34cd URL: http://source.winehq.org/git/wine.git/?a=commit;h=eef966faf77a6ba8b533aec8bf...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Sep 19 14:09:57 2011 +0200
vbscript: Added ME expression parser implementation.
---
dlls/vbscript/compile.c | 2 ++ dlls/vbscript/interp.c | 6 ++++++ dlls/vbscript/parse.h | 1 + dlls/vbscript/parser.y | 1 + dlls/vbscript/vbscript.h | 1 + 5 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/dlls/vbscript/compile.c b/dlls/vbscript/compile.c index 1102378..b2c0cc1 100644 --- a/dlls/vbscript/compile.c +++ b/dlls/vbscript/compile.c @@ -405,6 +405,8 @@ static HRESULT compile_expression(compile_ctx_t *ctx, expression_t *expr) return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_lt); case EXPR_LTEQ: return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_lteq); + case EXPR_ME: + return push_instr(ctx, OP_me) != -1 ? S_OK : E_OUTOFMEMORY; case EXPR_MEMBER: return compile_member_expression(ctx, (member_expression_t*)expr, TRUE); case EXPR_MOD: diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 0593a86..831a39d 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -708,6 +708,12 @@ static HRESULT interp_stop(exec_ctx_t *ctx) return S_OK; }
+static HRESULT interp_me(exec_ctx_t *ctx) +{ + FIXME("\n"); + return E_NOTIMPL; +} + static HRESULT interp_bool(exec_ctx_t *ctx) { const VARIANT_BOOL arg = ctx->instr->arg1.lng; diff --git a/dlls/vbscript/parse.h b/dlls/vbscript/parse.h index b61582b..bff48bb 100644 --- a/dlls/vbscript/parse.h +++ b/dlls/vbscript/parse.h @@ -34,6 +34,7 @@ typedef enum { EXPR_IS, EXPR_LT, EXPR_LTEQ, + EXPR_ME, EXPR_MEMBER, EXPR_MOD, EXPR_MUL, diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index f25d825..a3fb134 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -307,6 +307,7 @@ LiteralExpression
PrimaryExpression : '(' Expression ')' { $$ = $2; } + | tME { $$ = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; }
ClassDeclaration : tCLASS tIdentifier tNL ClassBody tEND tCLASS tNL { $4->name = $2; $$ = $4; } diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h index dc842cf..a1e07b9 100644 --- a/dlls/vbscript/vbscript.h +++ b/dlls/vbscript/vbscript.h @@ -203,6 +203,7 @@ typedef enum { X(lteq, 1, 0, 0) \ X(mcall, 1, ARG_BSTR, ARG_UINT) \ X(mcallv, 1, ARG_BSTR, ARG_UINT) \ + X(me, 1, 0, 0) \ X(mod, 1, 0, 0) \ X(mul, 1, 0, 0) \ X(neg, 1, 0, 0) \