X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Ftokenizer.lex;h=11b116291668865d87d3c0e1da47137f214b619b;hb=6280f844ee2e70d15c06e49d2caec41308c26aae;hp=ff73165b6a571ff6df04ca0622894fd3558f7404;hpb=f745b638b3580839f70a836b6d0943d7811e0fd9;p=swftools.git diff --git a/lib/as3/tokenizer.lex b/lib/as3/tokenizer.lex index ff73165..11b1162 100644 --- a/lib/as3/tokenizer.lex +++ b/lib/as3/tokenizer.lex @@ -31,6 +31,8 @@ #include "tokenizer.h" #include "files.h" +int as3_pass = 0; + int as3_verbosity = 1; void as3_error(const char*format, ...) { @@ -255,7 +257,7 @@ static void handleString(char*s, int len) else syntaxerror("String incorrectly terminated"); - avm2_lval.str = string_unescape(s, len); + a3_lval.str = string_unescape(s, len); } @@ -266,13 +268,13 @@ static inline int mkid(int type) char*s = malloc(yyleng+1); memcpy(s, yytext, yyleng); s[yyleng]=0; - avm2_lval.id = s; + a3_lval.id = s; return type; } static inline int m(int type) { - avm2_lval.token = type; + a3_lval.token = type; return type; } @@ -290,7 +292,7 @@ static char*nrbuf() static inline int setint(int v) { - avm2_lval.number_int = v; + a3_lval.number_int = v; if(v>-128) return T_BYTE; else if(v>=-32768) @@ -300,7 +302,7 @@ static inline int setint(int v) } static inline int setuint(unsigned int v) { - avm2_lval.number_uint = v; + a3_lval.number_uint = v; if(v<128) return T_BYTE; else if(v<32768) @@ -310,14 +312,14 @@ static inline int setuint(unsigned int v) } static inline int setfloat(double v) { - avm2_lval.number_float = v; + a3_lval.number_float = v; return T_FLOAT; } static inline int handlefloat() { char*s = nrbuf(); - avm2_lval.number_float = atof(s); + a3_lval.number_float = atof(s); return T_FLOAT; } @@ -430,7 +432,7 @@ void handleLabel(char*text, int len) char*s = malloc(t+1); memcpy(s, yytext, t); s[t]=0; - avm2_lval.id = s; + a3_lval.id = s; } static int handleregexp() @@ -446,11 +448,11 @@ static int handleregexp() break; } } - avm2_lval.regexp.pattern = s; + a3_lval.regexp.pattern = s; if(t==len) { - avm2_lval.regexp.options = 0; + a3_lval.regexp.options = 0; } else { - avm2_lval.regexp.options = s+t+1; + a3_lval.regexp.options = s+t+1; } return T_REGEXP; } @@ -518,7 +520,7 @@ REGEXP [/]([^/\n]|\\[/])*[/][a-zA-Z]* { {REGEXP} {c(); BEGIN(INITIAL);return handleregexp();} {HEXWITHSIGN} {c(); BEGIN(INITIAL);return handlehex();} -{HEXFLOATWITHSIGN} {c(); BEGIN(INITIAL);return handlehexfloat();} +{HEXFLOATWITHSIGN} {c(); BEGIN(INITIAL);return handlehexfloat();} {INTWITHSIGN} {c(); BEGIN(INITIAL);return handleint();} {FLOATWITHSIGN} {c(); BEGIN(INITIAL);return handlefloat();} } @@ -538,10 +540,10 @@ REGEXP [/]([^/\n]|\\[/])*[/][a-zA-Z]* {NAME}{S}*:{S}*do/{_} {l();handleLabel(yytext, yyleng-2);return T_DO;} {NAME}{S}*:{S}*while/{_} {l();handleLabel(yytext, yyleng-5);return T_WHILE;} {NAME}{S}*:{S}*switch/{_} {l();handleLabel(yytext, yyleng-6);return T_SWITCH;} -for {c();avm2_lval.id="";return T_FOR;} -do {c();avm2_lval.id="";return T_DO;} -while {c();avm2_lval.id="";return T_WHILE;} -switch {c();avm2_lval.id="";return T_SWITCH;} +for {c();a3_lval.id="";return T_FOR;} +do {c();a3_lval.id="";return T_DO;} +while {c();a3_lval.id="";return T_WHILE;} +switch {c();a3_lval.id="";return T_SWITCH;} [&][&] {c();BEGIN(REGEXPOK);return m(T_ANDAND);} [|][|] {c();BEGIN(REGEXPOK);return m(T_OROR);} @@ -580,6 +582,7 @@ continue {c();return m(KW_CONTINUE);} override {c();return m(KW_OVERRIDE);} internal {c();return m(KW_INTERNAL);} function {c();return m(KW_FUNCTION);} +finally {c();return m(KW_FINALLY);} default {c();return m(KW_DEFAULT);} package {c();return m(KW_PACKAGE);} private {c();return m(KW_PRIVATE);}