summaryrefslogtreecommitdiff
path: root/src/genjsbind-parser.y
diff options
context:
space:
mode:
authorVincent Sanders <vincent.sanders@collabora.co.uk>2012-10-04 19:48:32 +0100
committerVincent Sanders <vincent.sanders@collabora.co.uk>2012-10-04 19:48:32 +0100
commitfbd184fe421591851e1224518a3c9430dd37dce8 (patch)
tree583578eb6d9f6aec338605ca4afd5a691051e4fc /src/genjsbind-parser.y
parent56c66282650a7a5ac83e549d11839d26deaa1528 (diff)
downloadnsgenbind-fbd184fe421591851e1224518a3c9430dd37dce8.tar.gz
nsgenbind-fbd184fe421591851e1224518a3c9430dd37dce8.tar.bz2
allow teh binding to specify contents for operations
Diffstat (limited to 'src/genjsbind-parser.y')
-rw-r--r--src/genjsbind-parser.y21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/genjsbind-parser.y b/src/genjsbind-parser.y
index 3177c87..0950dc9 100644
--- a/src/genjsbind-parser.y
+++ b/src/genjsbind-parser.y
@@ -43,6 +43,7 @@ char *errtxt;
%token TOK_PREAMBLE
%token TOK_BINDING
+%token TOK_OPERATION
%token TOK_INTERFACE
%token TOK_TYPE
%token TOK_PRIVATE
@@ -65,6 +66,7 @@ char *errtxt;
%type <node> Type
%type <node> Private
%type <node> Interface
+%type <node> Operation
%%
@@ -103,6 +105,8 @@ Statement
Preamble
|
Binding
+ |
+ Operation
;
/* [3] load a web IDL file */
@@ -137,7 +141,7 @@ Strings
Preamble
:
- TOK_PREAMBLE CBlock ';'
+ TOK_PREAMBLE CBlock
{
$$ = genbind_new_node(GENBIND_NODE_TYPE_PREAMBLE, NULL, $2);
}
@@ -153,9 +157,22 @@ CBlock
}
;
+Operation
+ :
+ TOK_OPERATION TOK_IDENTIFIER CBlock
+ {
+ $$ = genbind_new_node(GENBIND_NODE_TYPE_OPERATION,
+ NULL,
+ genbind_new_node(GENBIND_NODE_TYPE_IDENT,
+ genbind_new_node(GENBIND_NODE_TYPE_CBLOCK,
+ NULL,
+ $3),
+ $2));
+ }
+
Binding
:
- TOK_BINDING TOK_IDENTIFIER '{' BindingArgs '}' ';'
+ TOK_BINDING TOK_IDENTIFIER '{' BindingArgs '}'
{
$$ = genbind_new_node(GENBIND_NODE_TYPE_BINDING,
NULL,