summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2012-09-07 00:13:16 +0100
committerVincent Sanders <vince@kyllikki.org>2012-09-07 00:13:16 +0100
commitf60d94623e676bb80670b465b1bed7ad4559581d (patch)
tree37c9ba069bf3f9e28d2903abfa9cd475209dde12 /src
parent3db9b84cd1a23f4718260a6b2487dcedbb7fc526 (diff)
downloadnsgenbind-f60d94623e676bb80670b465b1bed7ad4559581d.tar.gz
nsgenbind-f60d94623e676bb80670b465b1bed7ad4559581d.tar.bz2
complete binding section parse
Diffstat (limited to 'src')
-rw-r--r--src/genjsbind-lexer.l2
-rw-r--r--src/genjsbind-parser.y36
2 files changed, 33 insertions, 5 deletions
diff --git a/src/genjsbind-lexer.l b/src/genjsbind-lexer.l
index af49db9..8bfa391 100644
--- a/src/genjsbind-lexer.l
+++ b/src/genjsbind-lexer.l
@@ -63,7 +63,7 @@ type return TOK_TYPE;
extra return TOK_EXTRA;
-%token <text> TOK_IDENTIFIER
+node return TOK_NODE;
{cblockopen} BEGIN(cblock);
diff --git a/src/genjsbind-parser.y b/src/genjsbind-parser.y
index ce8a1fd..c3122ea 100644
--- a/src/genjsbind-parser.y
+++ b/src/genjsbind-parser.y
@@ -43,6 +43,7 @@ int genjsbind_wrap()
%token TOK_INTERFACE
%token TOK_TYPE
%token TOK_EXTRA
+%token TOK_NODE
%token <text> TOK_IDENTIFIER
@@ -101,7 +102,7 @@ HdrStrings
Preamble
:
- TOK_PREAMBLE CBlock
+ TOK_PREAMBLE CBlock ';'
;
CBlock
@@ -123,12 +124,39 @@ Binding
;
BindingArgs
-:
-;
+ :
+ BindingArg
+ |
+ BindingArgs BindingArg
+ ;
+
+BindingArg
+ :
+ Type
+ |
+ Extra
+ |
+ Interface
+ ;
+
+Type
+ :
+ TOK_TYPE TOK_IDENTIFIER '{' TypeArgs '}' ';'
+ ;
+
+TypeArgs
+ :
+ TOK_NODE TOK_IDENTIFIER ';'
+ ;
+
+Extra
+ :
+ TOK_EXTRA TOK_STRING_LITERAL ';'
+ ;
Interface
:
- TOK_INTERFACE TOK_STRING_LITERAL ';'
+ TOK_INTERFACE TOK_IDENTIFIER ';'
{
genjsbind_interface($2);
}