summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
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);
}