jscript: Added parser support for regular expressions.
diff --git a/dlls/jscript/lex.c b/dlls/jscript/lex.c
index 8ae15d3..0aea118 100644
--- a/dlls/jscript/lex.c
+++ b/dlls/jscript/lex.c
@@ -684,3 +684,49 @@
     WARN("unexpected char '%c' %d\n", *ctx->ptr, *ctx->ptr);
     return 0;
 }
+
+static void add_object_literal(parser_ctx_t *ctx, DispatchEx *obj)
+{
+    obj_literal_t *literal = parser_alloc(ctx, sizeof(obj_literal_t));
+
+    literal->obj = obj;
+    literal->next = ctx->obj_literals;
+    ctx->obj_literals = literal;
+}
+
+literal_t *parse_regexp(parser_ctx_t *ctx)
+{
+    const WCHAR *re, *flags;
+    DispatchEx *regexp;
+    literal_t *ret;
+    DWORD re_len;
+    HRESULT hres;
+
+    TRACE("\n");
+
+    re = ctx->ptr;
+    while(ctx->ptr < ctx->end && (*ctx->ptr != '/' || *(ctx->ptr-1) == '\\'))
+        ctx->ptr++;
+
+    if(ctx->ptr == ctx->end) {
+        WARN("unexpected end of file\n");
+        return NULL;
+    }
+
+    re_len = ctx->ptr-re;
+
+    flags = ++ctx->ptr;
+    while(ctx->ptr < ctx->end && isalnumW(*ctx->ptr))
+        ctx->ptr++;
+
+    hres = create_regexp_str(ctx->script, re, re_len, flags, ctx->ptr-flags, &regexp);
+    if(FAILED(hres))
+        return NULL;
+
+    add_object_literal(ctx, regexp);
+
+    ret = parser_alloc(ctx, sizeof(literal_t));
+    ret->vt = VT_DISPATCH;
+    ret->u.disp = (IDispatch*)_IDispatchEx_(regexp);
+    return ret;
+}