diff options
author | Vincent Sanders <vince@kyllikki.org> | 2012-10-29 13:40:13 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2012-10-29 13:40:13 +0000 |
commit | ade96212575df58bc0f714168a87d9975eea273a (patch) | |
tree | 7ff0a1888948e6e59e00eecc00d19a21fd040d9d /src/nsgenbind-parser.y | |
parent | 2931cd7597b8a41941e5cc3a1f869d36446c6006 (diff) | |
download | nsgenbind-ade96212575df58bc0f714168a87d9975eea273a.tar.gz nsgenbind-ade96212575df58bc0f714168a87d9975eea273a.tar.bz2 |
add internal and API to binding language
split out class operation, initialisation and new generation
Diffstat (limited to 'src/nsgenbind-parser.y')
-rw-r--r-- | src/nsgenbind-parser.y | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/src/nsgenbind-parser.y b/src/nsgenbind-parser.y index 500f4b8..ea0a625 100644 --- a/src/nsgenbind-parser.y +++ b/src/nsgenbind-parser.y @@ -42,11 +42,13 @@ char *errtxt; %token TOK_HDR_COMMENT %token TOK_PREAMBLE +%token TOK_API %token TOK_BINDING %token TOK_OPERATION %token TOK_INTERFACE %token TOK_TYPE %token TOK_PRIVATE +%token TOK_INTERNAL %token <text> TOK_IDENTIFIER %token <text> TOK_STRING_LITERAL @@ -65,8 +67,10 @@ char *errtxt; %type <node> BindingArg %type <node> Type %type <node> Private +%type <node> Internal %type <node> Interface %type <node> Operation +%type <node> Api %% @@ -107,6 +111,8 @@ Statement Binding | Operation + | + Api ; /* [3] load a web IDL file */ @@ -162,12 +168,25 @@ 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)); + NULL, + genbind_new_node(GENBIND_NODE_TYPE_IDENT, + genbind_new_node(GENBIND_NODE_TYPE_CBLOCK, + NULL, + $3), + $2)); + } + +Api + : + TOK_API TOK_IDENTIFIER CBlock + { + $$ = genbind_new_node(GENBIND_NODE_TYPE_API, + NULL, + genbind_new_node(GENBIND_NODE_TYPE_IDENT, + genbind_new_node(GENBIND_NODE_TYPE_CBLOCK, + NULL, + $3), + $2)); } Binding @@ -196,6 +215,8 @@ BindingArg | Private | + Internal + | Interface ; @@ -217,6 +238,16 @@ Private } ; +Internal + : + TOK_INTERNAL TOK_STRING_LITERAL TOK_IDENTIFIER ';' + { + $$ = genbind_new_node(GENBIND_NODE_TYPE_BINDING_INTERNAL, NULL, + genbind_new_node(GENBIND_NODE_TYPE_IDENT, + genbind_new_node(GENBIND_NODE_TYPE_STRING, NULL, $2), $3)); + } + ; + Interface : TOK_INTERFACE TOK_IDENTIFIER ';' |