#include <errno.h>
/* flex/bison definitions */
-extern void avm2_set_in (FILE * in_str );
-extern int avm2_parse();
+extern void as3_set_in (FILE * in_str );
+extern int a3_parse();
+extern int as3_lex();
+extern int as3_lex_destroy();
void as3_setverbosity(int level)
{
static char registry_initialized = 0;
static char parser_initialized = 0;
+void a3_lex()
+{
+ as3_lex();
+}
+
void as3_parse_file(char*filename)
{
if(!registry_initialized) {
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));
}
- avm2_set_in(fi);
+ /* pass 1 */
+ as3_pass = 1;
+ as3_set_in(fi);
initialize_file(filename);
- avm2_parse();
- avm2_lex_destroy();
- fclose(fi);
+ a3_parse();
+ as3_lex_destroy();
+ finish_file();
+
+ /* pass 2 */
+ // TODO: this should re-use tokens!
+ enter_file(filename, 0);
+ as3_pass = 2;
+ fseek(fi, 0, SEEK_SET);
+ as3_set_in(fi);
+ initialize_file(filename);
+ a3_parse();
+ as3_lex_destroy();
finish_file();
+
+ fclose(fi);
+
}
static void*as3code = 0;