diff options
author | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-09-07 16:51:43 +0100 |
---|---|---|
committer | Vincent Sanders <vincent.sanders@collabora.co.uk> | 2012-09-07 16:51:43 +0100 |
commit | 7ba968e4c33d3a05ff9b23b8e593b400e34a4cad (patch) | |
tree | eb22fdebb318eaa1d0df25a5e2d7518d73aab1e8 /src/genjsbind-parser.y | |
parent | f60d94623e676bb80670b465b1bed7ad4559581d (diff) | |
download | nsgenbind-7ba968e4c33d3a05ff9b23b8e593b400e34a4cad.tar.gz nsgenbind-7ba968e4c33d3a05ff9b23b8e593b400e34a4cad.tar.bz2 |
fixup error reporting to give linenumber
Diffstat (limited to 'src/genjsbind-parser.y')
-rw-r--r-- | src/genjsbind-parser.y | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/genjsbind-parser.y b/src/genjsbind-parser.y index c3122ea..1a342ae 100644 --- a/src/genjsbind-parser.y +++ b/src/genjsbind-parser.y @@ -1,10 +1,9 @@ +%{ /* * This is a bison parser for genbind * */ -%{ - #include <stdio.h> #include <string.h> @@ -13,9 +12,11 @@ #include "webidl-ast.h" #include "jsapi-binding.h" +char *errtxt; + static void genjsbind_error(const char *str) { - fprintf(stderr,"error: %s\n",str); + errtxt = strdup(str); } @@ -24,11 +25,11 @@ int genjsbind_wrap() return 1; } - - %} +%locations %define api.pure +%error-verbose %union { @@ -55,8 +56,17 @@ int genjsbind_wrap() /* [1] start with Statements */ Statements - : Statement - | Statements Statement + : + Statement + | + Statements Statement + | + error ';' + { + fprintf(stderr, "%d: %s\n", yylloc.first_line, errtxt); + free(errtxt); + YYABORT ; + } ; Statement |