summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-05 20:56:31 +0100
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-09-05 20:56:31 +0100
commitda234bc3e4e44693a6464140d2dee91a948a6145 (patch)
tree2a2d02e1619f351049e2c76221bb75c97950f6d0 /src
parent26dc8906aeb0783cf36bde31e9051b29a193eb23 (diff)
downloadnsgenbind-da234bc3e4e44693a6464140d2dee91a948a6145.tar.gz
nsgenbind-da234bc3e4e44693a6464140d2dee91a948a6145.tar.bz2
set lexers input properly
add node idl file
Diffstat (limited to 'src')
-rw-r--r--src/Makefile2
-rw-r--r--src/genjsbind-parser.y17
-rw-r--r--src/genjsbind.c17
3 files changed, 21 insertions, 15 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) {