Jacek Caban : vbscript: Added more keywords to lexer.

Alexandre Julliard julliard at winehq.org
Thu Sep 8 14:52:13 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Thu Sep  8 14:56:18 2011 +0200

vbscript: Added more keywords to lexer.

---

 dlls/vbscript/lex.c    |   98 +++++++++++++++++++++++++++++++++++++++++++++++-
 dlls/vbscript/parser.y |   15 ++++++-
 2 files changed, 110 insertions(+), 3 deletions(-)

diff --git a/dlls/vbscript/lex.c b/dlls/vbscript/lex.c
index af01220..04ade1e 100644
--- a/dlls/vbscript/lex.c
+++ b/dlls/vbscript/lex.c
@@ -26,13 +26,109 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(vbscript);
 
+static const WCHAR andW[] = {'a','n','d',0};
+static const WCHAR byrefW[] = {'b','y','r','e','f',0};
+static const WCHAR byvalW[] = {'b','y','v','a','l',0};
 static const WCHAR callW[] = {'c','a','l','l',0};
+static const WCHAR classW[] = {'c','l','a','s','s',0};
+static const WCHAR defaultW[] = {'d','e','f','a','u','l','t',0};
+static const WCHAR dimW[] = {'d','i','m',0};
+static const WCHAR doW[] = {'d','o',0};
+static const WCHAR elseW[] = {'e','l','s','e',0};
+static const WCHAR elseifW[] = {'e','l','s','e','i','f',0};
+static const WCHAR emptyW[] = {'e','m','p','t','y',0};
+static const WCHAR endW[] = {'e','n','d',0};
+static const WCHAR eqvW[] = {'e','q','v',0};
+static const WCHAR errorW[] = {'e','r','r','o','r',0};
+static const WCHAR exitW[] = {'e','x','i','t',0};
+static const WCHAR explicitW[] = {'e','x','p','l','i','c','i','t',0};
+static const WCHAR falseW[] = {'f','a','l','s','e',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 gotoW[] = {'g','o','t','o',0};
+static const WCHAR ifW[] = {'i','f',0};
+static const WCHAR impW[] = {'i','m','p',0};
+static const WCHAR isW[] = {'i','s',0};
+static const WCHAR letW[] = {'l','e','t',0};
+static const WCHAR loopW[] = {'l','o','o','p',0};
+static const WCHAR meW[] = {'m','e',0};
+static const WCHAR modW[] = {'m','o','d',0};
+static const WCHAR newW[] = {'n','e','w',0};
+static const WCHAR nextW[] = {'n','e','x','t',0};
+static const WCHAR notW[] = {'n','o','t',0};
+static const WCHAR nothingW[] = {'n','o','t','h','i','n','g',0};
+static const WCHAR nullW[] = {'n','u','l','l',0};
+static const WCHAR onW[] = {'o','n',0};
+static const WCHAR optionW[] = {'o','p','t','i','o','n',0};
+static const WCHAR orW[] = {'o','r',0};
+static const WCHAR privateW[] = {'p','r','i','v','a','t','e',0};
+static const WCHAR propertyW[] = {'p','r','o','p','e','r','t','y',0};
+static const WCHAR publicW[] = {'p','u','b','l','i','c',0};
+static const WCHAR remW[] = {'r','e','m',0};
+static const WCHAR resumeW[] = {'r','e','s','u','m','e',0};
+static const WCHAR setW[] = {'s','e','t',0};
+static const WCHAR stopW[] = {'s','t','o','p',0};
+static const WCHAR subW[] = {'s','u','b',0};
+static const WCHAR thenW[] = {'t','h','e','n',0};
+static const WCHAR trueW[] = {'t','r','u','e',0};
+static const WCHAR untilW[] = {'u','n','t','i','l',0};
+static const WCHAR wendW[] = {'w','e','n','d',0};
+static const WCHAR whileW[] = {'w','h','i','l','e',0};
+static const WCHAR xorW[] = {'x','o','r',0};
 
 static const struct {
     const WCHAR *word;
     int token;
 } keywords[] = {
-    {callW, tCALL}
+    {andW,       tAND},
+    {byrefW,     tBYREF},
+    {byvalW,     tBYVAL},
+    {callW,      tCALL},
+    {classW,     tCLASS},
+    {defaultW,   tDEFAULT},
+    {dimW,       tDIM},
+    {doW,        tDO},
+    {elseW,      tELSE},
+    {elseifW,    tELSEIF},
+    {emptyW,     tEMPTY},
+    {endW,       tEND},
+    {eqvW,       tEQV},
+    {errorW,     tERROR},
+    {exitW,      tEXIT},
+    {explicitW,  tEXPLICIT},
+    {falseW,     tFALSE},
+    {functionW,  tFUNCTION},
+    {getW,       tGET},
+    {gotoW,      tGOTO},
+    {ifW,        tIF},
+    {impW,       tIMP},
+    {isW,        tIS},
+    {letW,       tLET},
+    {loopW,      tLOOP},
+    {meW,        tME},
+    {modW,       tMOD},
+    {newW,       tNEW},
+    {nextW,      tNEXT},
+    {notW,       tNOT},
+    {nothingW,   tNOTHING},
+    {nullW,      tNULL},
+    {onW,        tON},
+    {optionW,    tOPTION},
+    {orW,        tOR},
+    {privateW,   tPRIVATE},
+    {propertyW,  tPROPERTY},
+    {publicW,    tPUBLIC},
+    {remW,       tREM},
+    {resumeW,    tRESUME},
+    {setW,       tSET},
+    {stopW,      tSTOP},
+    {subW,       tSUB},
+    {thenW,      tTHEN},
+    {trueW,      tTRUE},
+    {untilW,     tUNTIL},
+    {wendW,      tWEND},
+    {whileW,     tWHILE},
+    {xorW,       tXOR}
 };
 
 static inline BOOL is_identifier_char(WCHAR c)
diff --git a/dlls/vbscript/parser.y b/dlls/vbscript/parser.y
index caf6f49..2fe9bdb 100644
--- a/dlls/vbscript/parser.y
+++ b/dlls/vbscript/parser.y
@@ -53,8 +53,19 @@ static statement_t *new_call_statement(parser_ctx_t*,member_expression_t*);
     member_expression_t *member;
 }
 
-%token tEOF tNL blah
-%token tCALL
+%token tEOF tNL tREM
+%token tTRUE tFALSE
+%token tNOT tAND tOR tXOR tEQV tIMP tNEQ
+%token tIS tLTEQ tGTEQ tMOD
+%token tCALL tDIM tSUB tFUNCTION tPROPERTY tGET tLET
+%token tIF tELSE tELSEIF tEND tTHEN tEXIT
+%token tWHILE tWEND tDO tLOOP tUNTIL
+%token tBYREF tBYVAL
+%token tOPTION tEXPLICIT
+%token tSTOP
+%token tNOTHING tEMPTY tNULL
+%token tCLASS tSET tNEW tPUBLIC tPRIVATE tDEFAULT tME
+%token tERROR tNEXT tON tRESUME tGOTO
 %token <string> tIdentifier
 
 %type <statement> Statement StatementNl




More information about the wine-cvs mailing list