Jacek Caban : vbscript: Added lexer support for '_'.

Alexandre Julliard julliard at winehq.org
Mon Oct 17 13:08:55 CDT 2011


Module: wine
Branch: master
Commit: 64fd6fa7872059379e0eb42392a9fe5f65487e2d
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=64fd6fa7872059379e0eb42392a9fe5f65487e2d

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Oct 17 14:32:13 2011 +0200

vbscript: Added lexer support for '_'.

---

 dlls/vbscript/lex.c          |   10 ++++++++++
 dlls/vbscript/tests/lang.vbs |    7 +++++++
 dlls/vbscript/tests/run.c    |    2 ++
 3 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/dlls/vbscript/lex.c b/dlls/vbscript/lex.c
index ac3d65e..08ab375 100644
--- a/dlls/vbscript/lex.c
+++ b/dlls/vbscript/lex.c
@@ -354,6 +354,7 @@ static int parse_next_token(void *lval, parser_ctx_t *ctx)
     case '^':
     case '\\':
     case '.':
+    case '_':
         return *ctx->ptr++;
     case '(':
         /* NOTE:
@@ -402,6 +403,15 @@ int parser_lex(void *lval, parser_ctx_t *ctx)
 
     while(1) {
         ret = parse_next_token(lval, ctx);
+        if(ret == '_') {
+            skip_spaces(ctx);
+            if(*ctx->ptr != '\n') {
+                FIXME("'_' not followed by newline\n");
+                return 0;
+            }
+            ctx->ptr++;
+            continue;
+        }
         if(ret != tNL || ctx->last_token != tNL)
             break;
 
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index 46a0330..de72338 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -177,6 +177,13 @@ Call ok(2^3^2 = 64, "2^3^2 = " & (2^3^2))
 Call ok(-3^2 = 9, "-3^2 = " & (-3^2))
 Call ok(2*3^2 = 18, "2*3^2 = " & (2*3^2))
 
+x =_
+    3
+x _
+    = 3
+
+x = 3
+
 if true then y = true : x = y
 ok x, "x is false"
 
diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c
index 367ffea..9fa4240 100644
--- a/dlls/vbscript/tests/run.c
+++ b/dlls/vbscript/tests/run.c
@@ -1226,6 +1226,8 @@ static void run_tests(void)
 
     parse_script_a("x = 1\n Call ok(x = 1, \"x = \" & x)");
 
+    parse_script_a("x = _    \n3");
+
     test_global_vars_ref(TRUE);
     test_global_vars_ref(FALSE);
 




More information about the wine-cvs mailing list