X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fparser.y;h=6055295d6be40445a7cc886e3514c31b99df386b;hb=8b94e3aae7e61b3e1e5459addac62aaa7ea5c5bd;hp=61bbdfc9e10b1a6ba5b55a81f4a68f81be213a49;hpb=12a41466dddcc765861bc5da407a3501897bddbb;p=swftools.git diff --git a/lib/as3/parser.y b/lib/as3/parser.y index 61bbdfc..6055295 100644 --- a/lib/as3/parser.y +++ b/lib/as3/parser.y @@ -128,6 +128,7 @@ %type TYPE %type VAR %type VARIABLE +%type VAR_READ %type NEW %type X_IDENTIFIER %type MODIFIER @@ -606,10 +607,10 @@ VARIABLE_DECLARATION : MODIFIERS VAR T_IDENTIFIER MAYBETYPE MAYBEEXPRESSION { MAYBEEXPRESSION : '=' EXPRESSION {$$=$2;} | {$$=code_new();} -EXPRESSION : E %prec prec_none {$$ = $1;} //precendence below '-x' +EXPRESSION : E %prec prec_none /*precendence below '-x'*/ {$$ = $1;} E : CONSTANT -E : VARIABLE %prec T_IDENTIFIER {$$ = abc_pushundefined(0); /* FIXME */} +E : VAR_READ %prec T_IDENTIFIER {$$ = $1;} E : NEW {$$ = abc_pushundefined(0); /* FIXME */} E : T_REGEXP {$$ = abc_pushundefined(0); /* FIXME */} E : FUNCTIONCALL @@ -653,6 +654,12 @@ MAYBE_EXPRESSION_LIST : EXPRESSION_LIST EXPRESSION_LIST : EXPRESSION {$$=list_new();list_append($$,$1);} EXPRESSION_LIST : EXPRESSION_LIST ',' EXPRESSION {list_append($$,$3);} +VAR_READ : T_IDENTIFIER { + int i = array_find(state->vars, $1->text); + if(i<0) + syntaxerror("unknown variable"); + $$ = abc_getlocal(0, i); +} VARIABLE : T_IDENTIFIER VARIABLE : VARIABLE '.' T_IDENTIFIER VARIABLE : VARIABLE ".." T_IDENTIFIER // descendants