Jacek Caban : vbscript: Added parser support for string literals.
Module: wine Branch: master Commit: dc73a7c4bba5e12eec196613e23b3967ad282bda URL: http://source.winehq.org/git/wine.git/?a=commit;h=dc73a7c4bba5e12eec196613e2... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Sep 8 14:56:58 2011 +0200 vbscript: Added parser support for string literals. --- dlls/vbscript/parse.h | 8 +++++++- dlls/vbscript/parser.y | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletions(-) diff --git a/dlls/vbscript/parse.h b/dlls/vbscript/parse.h index df337d2..a0c7f2c 100644 --- a/dlls/vbscript/parse.h +++ b/dlls/vbscript/parse.h @@ -18,7 +18,8 @@ typedef enum { EXPR_BOOL, - EXPR_MEMBER + EXPR_MEMBER, + EXPR_STRING } expression_type_t; typedef struct _expression_t { @@ -33,6 +34,11 @@ typedef struct { typedef struct { expression_t expr; + const WCHAR *value; +} string_expression_t; + +typedef struct { + expression_t expr; expression_t *obj_expr; const WCHAR *identifier; expression_t *args; diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y index 06a0eb3..2d50565 100644 --- a/dlls/vbscript/parser.y +++ b/dlls/vbscript/parser.y @@ -36,6 +36,7 @@ static void parse_complete(parser_ctx_t*); static void source_add_statement(parser_ctx_t*,statement_t*); static expression_t *new_bool_expression(parser_ctx_t*,VARIANT_BOOL); +static expression_t *new_string_expression(parser_ctx_t*,const WCHAR*); static member_expression_t *new_member_expression(parser_ctx_t*,expression_t*,const WCHAR*); @@ -113,6 +114,7 @@ Expression LiteralExpression : tTRUE { $$ = new_bool_expression(ctx, VARIANT_TRUE); CHECK_ERROR; } | tFALSE { $$ = new_bool_expression(ctx, VARIANT_FALSE); CHECK_ERROR; } + | tString { $$ = new_string_expression(ctx, $1); CHECK_ERROR; } %% @@ -161,6 +163,18 @@ static expression_t *new_bool_expression(parser_ctx_t *ctx, VARIANT_BOOL value) return &expr->expr; } +static expression_t *new_string_expression(parser_ctx_t *ctx, const WCHAR *value) +{ + string_expression_t *expr; + + expr = new_expression(ctx, EXPR_STRING, sizeof(*expr)); + if(!expr) + return NULL; + + expr->value = value; + return &expr->expr; +} + static member_expression_t *new_member_expression(parser_ctx_t *ctx, expression_t *obj_expr, const WCHAR *identifier) { member_expression_t *expr;
participants (1)
-
Alexandre Julliard