finished ast implementation
[swftools.git] / lib / as3 / tokenizer.h
index 0b2689c..0da4f12 100644 (file)
 #define __parser_h__
 
 #include "../q.h"
+#include "abc.h"
 #include "pool.h"
+#include "files.h"
+#include "tokenizer.h"
+#include "registry.h"
 #include "code.h"
+#include "opcodes.h"
+#include "ast.h"
 
 DECLARE(token);
 DECLARE_LIST(token);
-DECLARE(typedcode);
-DECLARE(typedcode_list);
-
-struct _token {
-    int type;
-    char*text;
-    token_list_t*tokens;
+DECLARE(param);
+DECLARE_LIST(param);
+DECLARE(params);
+DECLARE(modifiers);
+DECLARE(namespace_decl);
+DECLARE_LIST(namespace_decl);
+DECLARE_LIST(typedcode);
+
+struct _param {
+    char*name;
+    classinfo_t*type;
+    constant_t*value;
 };
 
-typedef struct _writeable {
-    code_t*write;
-    code_t*read;
-    multiname_t*type;
-} writeable_t;
+struct _params {
+    param_list_t*list;
+    char varargs;
+};
 
-struct _typedcode {
-    code_t*c;
-    multiname_t*t;
+struct _modifiers {
+    int flags;
+    char*ns;
 };
-struct _typedcode_list {
-    struct _typedcode typedcode;
-    struct _typedcode_list*nxt;
+struct _namespace_decl {
+    const char*name;
+    const char*url;
 };
 
+/* small helper structs: */
+typedef struct _codeandnumber {
+    code_t*cc;
+    int number;
+} codeandnumber_t;
+typedef struct _for_start {
+    char*name;
+    char each;
+} for_start_t;
+typedef struct _regexp {
+    char*pattern;
+    char*options;
+} regexp_t;
+
 extern char start_of_expression;
 
 typedef token_t*tokenptr_t;
 
+extern trie_t*active_namespaces;
+
 #include "parser.tab.h"
 
-void syntaxerror(const char*format, ...);
+extern unsigned int as3_tokencount;
+
+void as3_buffer_input(void*buffer, int len);
+void as3_file_input(FILE*fi);
 
 #define T_EOF 0
 
+extern int avm2_lex();
+extern int avm2_lex_destroy();
+
 #endif