Commit eef966fa authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

vbscript: Added ME expression parser implementation.

parent 95d040e9
...@@ -405,6 +405,8 @@ static HRESULT compile_expression(compile_ctx_t *ctx, expression_t *expr) ...@@ -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); return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_lt);
case EXPR_LTEQ: case EXPR_LTEQ:
return compile_binary_expression(ctx, (binary_expression_t*)expr, OP_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: case EXPR_MEMBER:
return compile_member_expression(ctx, (member_expression_t*)expr, TRUE); return compile_member_expression(ctx, (member_expression_t*)expr, TRUE);
case EXPR_MOD: case EXPR_MOD:
......
...@@ -708,6 +708,12 @@ static HRESULT interp_stop(exec_ctx_t *ctx) ...@@ -708,6 +708,12 @@ static HRESULT interp_stop(exec_ctx_t *ctx)
return S_OK; return S_OK;
} }
static HRESULT interp_me(exec_ctx_t *ctx)
{
FIXME("\n");
return E_NOTIMPL;
}
static HRESULT interp_bool(exec_ctx_t *ctx) static HRESULT interp_bool(exec_ctx_t *ctx)
{ {
const VARIANT_BOOL arg = ctx->instr->arg1.lng; const VARIANT_BOOL arg = ctx->instr->arg1.lng;
......
...@@ -34,6 +34,7 @@ typedef enum { ...@@ -34,6 +34,7 @@ typedef enum {
EXPR_IS, EXPR_IS,
EXPR_LT, EXPR_LT,
EXPR_LTEQ, EXPR_LTEQ,
EXPR_ME,
EXPR_MEMBER, EXPR_MEMBER,
EXPR_MOD, EXPR_MOD,
EXPR_MUL, EXPR_MUL,
......
...@@ -307,6 +307,7 @@ LiteralExpression ...@@ -307,6 +307,7 @@ LiteralExpression
PrimaryExpression PrimaryExpression
: '(' Expression ')' { $$ = $2; } : '(' Expression ')' { $$ = $2; }
| tME { $$ = new_expression(ctx, EXPR_ME, 0); CHECK_ERROR; }
ClassDeclaration ClassDeclaration
: tCLASS tIdentifier tNL ClassBody tEND tCLASS tNL { $4->name = $2; $$ = $4; } : tCLASS tIdentifier tNL ClassBody tEND tCLASS tNL { $4->name = $2; $$ = $4; }
......
...@@ -203,6 +203,7 @@ typedef enum { ...@@ -203,6 +203,7 @@ typedef enum {
X(lteq, 1, 0, 0) \ X(lteq, 1, 0, 0) \
X(mcall, 1, ARG_BSTR, ARG_UINT) \ X(mcall, 1, ARG_BSTR, ARG_UINT) \
X(mcallv, 1, ARG_BSTR, ARG_UINT) \ X(mcallv, 1, ARG_BSTR, ARG_UINT) \
X(me, 1, 0, 0) \
X(mod, 1, 0, 0) \ X(mod, 1, 0, 0) \
X(mul, 1, 0, 0) \ X(mul, 1, 0, 0) \
X(neg, 1, 0, 0) \ X(neg, 1, 0, 0) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment