diff options
author | Vincent Sanders <vince@kyllikki.org> | 2012-09-10 00:22:34 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2012-09-10 00:22:34 +0100 |
commit | 74e143bf3a9cd1cf6748cf1462f8e0fb161d126e (patch) | |
tree | 8526a61b4f6735c7fa0fad17113ae3baee6d6e59 /src/webidl-ast.h | |
parent | 640ed1da81d909bb3c2f01a481e7e8d3336f336c (diff) | |
download | nsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.gz nsgenbind-74e143bf3a9cd1cf6748cf1462f8e0fb161d126e.tar.bz2 |
clean up AST building for both parsers
Diffstat (limited to 'src/webidl-ast.h')
-rw-r--r-- | src/webidl-ast.h | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/src/webidl-ast.h b/src/webidl-ast.h index 5dfd2a8..3c93305 100644 --- a/src/webidl-ast.h +++ b/src/webidl-ast.h @@ -9,35 +9,23 @@ #ifndef genjsbind_webidl_ast_h #define genjsbind_webidl_ast_h -enum webidl_node_type { - WEBIDL_NODE_TYPE_ROOT, - WEBIDL_NODE_TYPE_INTERFACE, -}; - -struct webidl_ifmember { - char *name; -}; - -struct webidl_if { - char *name; - struct webidl_ifmember* members; -}; - +#define WEBIDL_NODE_TYPE_ROOT 0 struct webidl_node { - enum webidl_node_type type; + int type; + struct webidl_node *l; union { - struct webidl_node *nodes; - struct webidl_if interface; - } data; + struct webidl_node *node; + char *text; + } r; }; -extern struct webidl_node *webidl_root; - /** parse web idl file */ -int webidl_parsefile(char *filename); +int webidl_parsefile(char *filename, struct webidl_node **webidl_ast); + +struct webidl_node *webidl_node_new(int type, struct webidl_node *l, void *r); -struct webidl_node *webidl_new_node(enum webidl_node_type type); +struct webidl_node *webidl_node_link(struct webidl_node *tgt, struct webidl_node *src); #endif |