X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fcompiler.c;fp=lib%2Fas3%2Fcompiler.c;h=6ca1741455b580f6cf90a7ad7e1216f4de42b121;hb=1adc9bdd04d6c40fadf2211a4af8c281b46ca5ec;hp=be9cdab683d9d4d0c137fa609861a827704745b6;hpb=2eef2111d088a6fe4a3cddbe0db05d2f77d8453d;p=swftools.git diff --git a/lib/as3/compiler.c b/lib/as3/compiler.c index be9cdab..6ca1741 100644 --- a/lib/as3/compiler.c +++ b/lib/as3/compiler.c @@ -55,17 +55,34 @@ void as3_parse_file(char*filename) initialize_parser(); } + as3_pass = 0; + char*fullfilename = enter_file(filename, 0); FILE*fi = fopen(fullfilename, "rb"); if(!fi) { syntaxerror("Couldn't find file %s: %s", fullfilename, strerror(errno)); } + /* pass 1 */ + as3_pass = 1; + avm2_set_in(fi); + initialize_file(filename); + avm2_parse(); + avm2_lex_destroy(); + finish_file(); + + /* pass 2 */ + // TODO: this should re-use tokens! + enter_file(filename, 0); + as3_pass = 2; + fseek(fi, 0, SEEK_SET); avm2_set_in(fi); initialize_file(filename); avm2_parse(); avm2_lex_destroy(); - fclose(fi); finish_file(); + + fclose(fi); + } static void*as3code = 0;