diff options
author | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-09-05 20:56:31 +0100 |
---|---|---|
committer | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-09-05 20:56:31 +0100 |
commit | da234bc3e4e44693a6464140d2dee91a948a6145 (patch) | |
tree | 2a2d02e1619f351049e2c76221bb75c97950f6d0 | |
parent | 26dc8906aeb0783cf36bde31e9051b29a193eb23 (diff) | |
download | nsgenbind-da234bc3e4e44693a6464140d2dee91a948a6145.tar.gz nsgenbind-da234bc3e4e44693a6464140d2dee91a948a6145.tar.bz2 |
set lexers input properly
add node idl file
-rw-r--r-- | src/Makefile | 2 | ||||
-rw-r--r-- | src/genjsbind-parser.y | 17 | ||||
-rw-r--r-- | src/genjsbind.c | 17 | ||||
-rw-r--r-- | test/data/bindings/htmldocument.bnd | 5 | ||||
-rw-r--r-- | test/data/idl/node.idl | 53 |
5 files changed, 78 insertions, 16 deletions
diff --git a/src/Makefile b/src/Makefile index 6740140..e2eb873 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,4 +1,4 @@ -CFLAGS := $(CFLAGS) -I$(BUILDDIR) -Isrc/ +CFLAGS := $(CFLAGS) -I$(BUILDDIR) -Isrc/ -g # Sources in this directory DIR_SOURCES := genjsbind.c diff --git a/src/genjsbind-parser.y b/src/genjsbind-parser.y index 08b8926..5c5bed5 100644 --- a/src/genjsbind-parser.y +++ b/src/genjsbind-parser.y @@ -41,15 +41,18 @@ int genjsbind_wrap() %% /* [1] start with Statements */ -Statements: - /* empty */ - | - IdlFile +Statements + : Statement + | Statement Statements ; - /* [2] load a web IDL file */ -IdlFile: - TOK_IDLFILE TOK_STRING_LITERAL ';' +Statement + : IdlFile + ; + + /* [3] load a web IDL file */ +IdlFile + : TOK_IDLFILE TOK_STRING_LITERAL ';' { if (loadwebidl($2) != 0) { YYABORT; diff --git a/src/genjsbind.c b/src/genjsbind.c index 145c16e..89d2fb0 100644 --- a/src/genjsbind.c +++ b/src/genjsbind.c @@ -13,12 +13,12 @@ extern int webidl_debug; extern int webidl__flex_debug; -extern FILE* webidl_in; +extern void webidl_restart(FILE*); extern int webidl_parse(void); extern int genjsbind_debug; extern int genjsbind__flex_debug; -extern FILE* genjsbind_in; +extern void genjsbind_restart(FILE*); extern int genjsbind_parse(void); struct options { @@ -57,8 +57,9 @@ static FILE *idlopen(const char *filename) int loadwebidl(char *filename) { /* set flex to read from file */ - webidl_in = idlopen(filename); - if (!webidl_in) { + FILE *idlfile; + idlfile = idlopen(filename); + if (!idlfile) { fprintf(stderr, "Error opening %s: %s\n", filename, strerror(errno)); @@ -69,6 +70,8 @@ int loadwebidl(char *filename) webidl_debug = 1; webidl__flex_debug = 1; } + + webidl_restart(idlfile); /* parse the file */ return webidl_parse(); @@ -160,13 +163,13 @@ int main(int argc, char **argv) return 3; } - /* set flex to read from file */ - genjsbind_in = infile; - if (options->debug) { genjsbind_debug = 1; genjsbind__flex_debug = 1; } + + /* set flex to read from file */ + genjsbind_restart(infile); parse_res = genjsbind_parse(); if (parse_res) { diff --git a/test/data/bindings/htmldocument.bnd b/test/data/bindings/htmldocument.bnd index 4f3095f..e531d05 100644 --- a/test/data/bindings/htmldocument.bnd +++ b/test/data/bindings/htmldocument.bnd @@ -1,4 +1,7 @@ -/* test binding docuemnt */ +/* test binding to generate htmldocument */ +webidlfile "eventtarget.idl"; +webidlfile "node.idl"; +webidlfile "document.idl"; webidlfile "htmldocument.idl"; diff --git a/test/data/idl/node.idl b/test/data/idl/node.idl new file mode 100644 index 0000000..674d08d --- /dev/null +++ b/test/data/idl/node.idl @@ -0,0 +1,53 @@ +interface Node : EventTarget { + const unsigned short ELEMENT_NODE = 1; + const unsigned short ATTRIBUTE_NODE = 2; // historical + const unsigned short TEXT_NODE = 3; + const unsigned short CDATA_SECTION_NODE = 4; // historical + const unsigned short ENTITY_REFERENCE_NODE = 5; // historical + const unsigned short ENTITY_NODE = 6; // historical + const unsigned short PROCESSING_INSTRUCTION_NODE = 7; + const unsigned short COMMENT_NODE = 8; + const unsigned short DOCUMENT_NODE = 9; + const unsigned short DOCUMENT_TYPE_NODE = 10; + const unsigned short DOCUMENT_FRAGMENT_NODE = 11; + const unsigned short NOTATION_NODE = 12; // historical + readonly attribute unsigned short nodeType; + readonly attribute DOMString nodeName; + + readonly attribute DOMString? baseURI; + + readonly attribute Document? ownerDocument; + readonly attribute Node? parentNode; + readonly attribute Element? parentElement; + boolean hasChildNodes(); + readonly attribute NodeList childNodes; + readonly attribute Node? firstChild; + readonly attribute Node? lastChild; + readonly attribute Node? previousSibling; + readonly attribute Node? nextSibling; + + const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01; + const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02; + const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04; + const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08; + const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10; + const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; // historical + unsigned short compareDocumentPosition(Node other); + boolean contains(Node? other); + + attribute DOMString? nodeValue; + attribute DOMString? textContent; + Node insertBefore(Node node, Node? child); + Node appendChild(Node node); + Node replaceChild(Node node, Node child); + Node removeChild(Node child); + void normalize(); + + + Node cloneNode(optional boolean deep = true); + boolean isEqualNode(Node? node); + + DOMString lookupPrefix(DOMString? namespace); + DOMString lookupNamespaceURI(DOMString? prefix); + boolean isDefaultNamespace(DOMString? namespace); +}; |