Jacek Caban : jscript: Use wide-char literals in lexer.
Alexandre Julliard
julliard at winehq.org
Mon Sep 16 16:33:43 CDT 2019
Module: wine
Branch: master
Commit: 78beca78875eccb7fc4d15ba52092d618e2d8dcd
URL: https://source.winehq.org/git/wine.git/?a=commit;h=78beca78875eccb7fc4d15ba52092d618e2d8dcd
Author: Jacek Caban <jacek at codeweavers.com>
Date: Mon Sep 16 15:53:34 2019 +0200
jscript: Use wide-char literals in lexer.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/jscript/lex.c | 137 ++++++++++++++++++-----------------------------------
1 file changed, 46 insertions(+), 91 deletions(-)
diff --git a/dlls/jscript/lex.c b/dlls/jscript/lex.c
index 4d77f8a20f..4f0ea45362 100644
--- a/dlls/jscript/lex.c
+++ b/dlls/jscript/lex.c
@@ -32,76 +32,42 @@
WINE_DEFAULT_DEBUG_CHANNEL(jscript);
-static const WCHAR breakW[] = {'b','r','e','a','k',0};
-static const WCHAR caseW[] = {'c','a','s','e',0};
-static const WCHAR catchW[] = {'c','a','t','c','h',0};
-static const WCHAR continueW[] = {'c','o','n','t','i','n','u','e',0};
-static const WCHAR defaultW[] = {'d','e','f','a','u','l','t',0};
-static const WCHAR deleteW[] = {'d','e','l','e','t','e',0};
-static const WCHAR doW[] = {'d','o',0};
-static const WCHAR elseW[] = {'e','l','s','e',0};
-static const WCHAR falseW[] = {'f','a','l','s','e',0};
-static const WCHAR finallyW[] = {'f','i','n','a','l','l','y',0};
-static const WCHAR forW[] = {'f','o','r',0};
-static const WCHAR functionW[] = {'f','u','n','c','t','i','o','n',0};
-static const WCHAR getW[] = {'g','e','t',0};
-static const WCHAR ifW[] = {'i','f',0};
-static const WCHAR inW[] = {'i','n',0};
-static const WCHAR instanceofW[] = {'i','n','s','t','a','n','c','e','o','f',0};
-static const WCHAR newW[] = {'n','e','w',0};
-static const WCHAR nullW[] = {'n','u','l','l',0};
-static const WCHAR returnW[] = {'r','e','t','u','r','n',0};
-static const WCHAR setW[] = {'s','e','t',0};
-static const WCHAR switchW[] = {'s','w','i','t','c','h',0};
-static const WCHAR thisW[] = {'t','h','i','s',0};
-static const WCHAR throwW[] = {'t','h','r','o','w',0};
-static const WCHAR trueW[] = {'t','r','u','e',0};
-static const WCHAR tryW[] = {'t','r','y',0};
-static const WCHAR typeofW[] = {'t','y','p','e','o','f',0};
-static const WCHAR varW[] = {'v','a','r',0};
-static const WCHAR voidW[] = {'v','o','i','d',0};
-static const WCHAR whileW[] = {'w','h','i','l','e',0};
-static const WCHAR withW[] = {'w','i','t','h',0};
-
-static const WCHAR elifW[] = {'e','l','i','f',0};
-static const WCHAR endW[] = {'e','n','d',0};
-
static const struct {
const WCHAR *word;
int token;
BOOL no_nl;
unsigned min_version;
} keywords[] = {
- {breakW, kBREAK, TRUE},
- {caseW, kCASE},
- {catchW, kCATCH},
- {continueW, kCONTINUE, TRUE},
- {defaultW, kDEFAULT},
- {deleteW, kDELETE},
- {doW, kDO},
- {elseW, kELSE},
- {falseW, kFALSE},
- {finallyW, kFINALLY},
- {forW, kFOR},
- {functionW, kFUNCTION},
- {getW, kGET, FALSE, SCRIPTLANGUAGEVERSION_ES5},
- {ifW, kIF},
- {inW, kIN},
- {instanceofW, kINSTANCEOF},
- {newW, kNEW},
- {nullW, kNULL},
- {returnW, kRETURN, TRUE},
- {setW, kSET, FALSE, SCRIPTLANGUAGEVERSION_ES5},
- {switchW, kSWITCH},
- {thisW, kTHIS},
- {throwW, kTHROW},
- {trueW, kTRUE},
- {tryW, kTRY},
- {typeofW, kTYPEOF},
- {varW, kVAR},
- {voidW, kVOID},
- {whileW, kWHILE},
- {withW, kWITH}
+ {L"break", kBREAK, TRUE},
+ {L"case", kCASE},
+ {L"catch", kCATCH},
+ {L"continue", kCONTINUE, TRUE},
+ {L"default", kDEFAULT},
+ {L"delete", kDELETE},
+ {L"do", kDO},
+ {L"else", kELSE},
+ {L"false", kFALSE},
+ {L"finally", kFINALLY},
+ {L"for", kFOR},
+ {L"function", kFUNCTION},
+ {L"get", kGET, FALSE, SCRIPTLANGUAGEVERSION_ES5},
+ {L"if", kIF},
+ {L"in", kIN},
+ {L"instanceof", kINSTANCEOF},
+ {L"new", kNEW},
+ {L"null", kNULL},
+ {L"return", kRETURN, TRUE},
+ {L"set", kSET, FALSE, SCRIPTLANGUAGEVERSION_ES5},
+ {L"switch", kSWITCH},
+ {L"this", kTHIS},
+ {L"throw", kTHROW},
+ {L"true", kTRUE},
+ {L"try", kTRY},
+ {L"typeof", kTYPEOF},
+ {L"var", kVAR},
+ {L"void", kVOID},
+ {L"while", kWHILE},
+ {L"with", kWITH}
};
static int lex_error(parser_ctx_t *ctx, HRESULT hres)
@@ -895,14 +861,6 @@ static BOOL init_cc(parser_ctx_t *ctx)
{
cc_ctx_t *cc;
- static const WCHAR _win32W[] = {'_','w','i','n','3','2',0};
- static const WCHAR _win64W[] = {'_','w','i','n','6','4',0};
- static const WCHAR _x86W[] = {'_','x','8','6',0};
- static const WCHAR _amd64W[] = {'_','a','m','d','6','4',0};
- static const WCHAR _jscriptW[] = {'_','j','s','c','r','i','p','t',0};
- static const WCHAR _jscript_buildW[] = {'_','j','s','c','r','i','p','t','_','b','u','i','l','d',0};
- static const WCHAR _jscript_versionW[] = {'_','j','s','c','r','i','p','t','_','v','e','r','s','i','o','n',0};
-
if(ctx->script->cc)
return TRUE;
@@ -914,11 +872,11 @@ static BOOL init_cc(parser_ctx_t *ctx)
cc->vars = NULL;
- if(!new_cc_var(cc, _jscriptW, -1, ccval_bool(TRUE))
- || !new_cc_var(cc, sizeof(void*) == 8 ? _win64W : _win32W, -1, ccval_bool(TRUE))
- || !new_cc_var(cc, sizeof(void*) == 8 ? _amd64W : _x86W, -1, ccval_bool(TRUE))
- || !new_cc_var(cc, _jscript_versionW, -1, ccval_num(JSCRIPT_MAJOR_VERSION + (DOUBLE)JSCRIPT_MINOR_VERSION/10.0))
- || !new_cc_var(cc, _jscript_buildW, -1, ccval_num(JSCRIPT_BUILD_VERSION))) {
+ if(!new_cc_var(cc, L"_jscript", -1, ccval_bool(TRUE))
+ || !new_cc_var(cc, sizeof(void*) == 8 ? L"_win64" : L"_win32", -1, ccval_bool(TRUE))
+ || !new_cc_var(cc, sizeof(void*) == 8 ? L"_amd64" : L"_x86", -1, ccval_bool(TRUE))
+ || !new_cc_var(cc, L"_jscript_version", -1, ccval_num(JSCRIPT_MAJOR_VERSION + (DOUBLE)JSCRIPT_MINOR_VERSION/10.0))
+ || !new_cc_var(cc, L"_jscript_build", -1, ccval_num(JSCRIPT_BUILD_VERSION))) {
release_cc(cc);
lex_error(ctx, E_OUTOFMEMORY);
return FALSE;
@@ -974,12 +932,12 @@ int try_parse_ccval(parser_ctx_t *ctx, ccval_t *r)
return 1;
}
- if(!check_keyword(ctx, trueW, NULL)) {
+ if(!check_keyword(ctx, L"true", NULL)) {
*r = ccval_bool(TRUE);
return 1;
}
- if(!check_keyword(ctx, falseW, NULL)) {
+ if(!check_keyword(ctx, L"false", NULL)) {
*r = ccval_bool(FALSE);
return 1;
}
@@ -1000,13 +958,13 @@ static int skip_code(parser_ctx_t *ctx, BOOL exec_else)
}
ctx->ptr = ptr+1;
- if(!check_keyword(ctx, endW, NULL)) {
+ if(!check_keyword(ctx, L"end", NULL)) {
if(--if_depth)
continue;
return 0;
}
- if(exec_else && !check_keyword(ctx, elifW, NULL)) {
+ if(exec_else && !check_keyword(ctx, L"elif", NULL)) {
if(if_depth > 1)
continue;
@@ -1024,7 +982,7 @@ static int skip_code(parser_ctx_t *ctx, BOOL exec_else)
return 0;
}
- if(exec_else && !check_keyword(ctx, elseW, NULL)) {
+ if(exec_else && !check_keyword(ctx, L"else", NULL)) {
if(if_depth > 1)
continue;
@@ -1033,7 +991,7 @@ static int skip_code(parser_ctx_t *ctx, BOOL exec_else)
return 0;
}
- if(!check_keyword(ctx, ifW, NULL)) {
+ if(!check_keyword(ctx, L"if", NULL)) {
if_depth++;
continue;
}
@@ -1047,15 +1005,12 @@ static int cc_token(parser_ctx_t *ctx, void *lval)
unsigned id_len = 0;
cc_var_t *var;
- static const WCHAR cc_onW[] = {'c','c','_','o','n',0};
- static const WCHAR setW[] = {'s','e','t',0};
-
ctx->ptr++;
- if(!check_keyword(ctx, cc_onW, NULL))
+ if(!check_keyword(ctx, L"cc_on", NULL))
return init_cc(ctx) ? 0 : -1;
- if(!check_keyword(ctx, setW, NULL)) {
+ if(!check_keyword(ctx, L"set", NULL)) {
const WCHAR *ident;
unsigned ident_len;
cc_var_t *var;
@@ -1089,7 +1044,7 @@ static int cc_token(parser_ctx_t *ctx, void *lval)
return 0;
}
- if(!check_keyword(ctx, ifW, NULL)) {
+ if(!check_keyword(ctx, L"if", NULL)) {
if(!init_cc(ctx))
return -1;
@@ -1108,14 +1063,14 @@ static int cc_token(parser_ctx_t *ctx, void *lval)
return skip_code(ctx, TRUE);
}
- if(!check_keyword(ctx, elifW, NULL) || !check_keyword(ctx, elseW, NULL)) {
+ if(!check_keyword(ctx, L"elif", NULL) || !check_keyword(ctx, L"else", NULL)) {
if(!ctx->cc_if_depth)
return lex_error(ctx, JS_E_SYNTAX);
return skip_code(ctx, FALSE);
}
- if(!check_keyword(ctx, endW, NULL)) {
+ if(!check_keyword(ctx, L"end", NULL)) {
if(!ctx->cc_if_depth)
return lex_error(ctx, JS_E_SYNTAX);
More information about the wine-cvs
mailing list