X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=idl%2Fparser.y;h=de0de4ac471f776b05a4cd42c785cdea0896898a;hp=9d71e63560b7ac8e9009e8fd8c83cfd85db75a1b;hb=69008ba2a7733358974c8985caa2e5bcb1182fe1;hpb=5917ec1de81d919ac670af18166a41238aa1d3f6 diff --git a/idl/parser.y b/idl/parser.y index 9d71e63..de0de4a 100644 --- a/idl/parser.y +++ b/idl/parser.y @@ -3,9 +3,8 @@ #include #include #include -#include "lexer.h" + #include "parser.h" -#include "types.h" static void syntax_error(const char *fn, size_t ln, const char *msg, ...) { fprintf(stderr, "WARNING: Syntax error on line %zu in '%s'%s", ln, fn, msg ? ": ": "\n"); @@ -63,9 +62,15 @@ decl_typedef(def) ::= TYPEDEF NAME(ALIAS) decl_type(type) EOS. { } %type decl {decl*} -decl(decl) ::= decl_arg(func) LPAREN decl_args(args) RPAREN EOS. { - decl = init_decl(func, args); +decl(decl) ::= decl_abi(abi) decl_arg(func) LPAREN decl_args(args) RPAREN EOS. { + decl = init_decl(abi, func, args); +} + +%type decl_abi {decl_abi*} +decl_abi(abi) ::= NAME(T). { + abi = init_decl_abi(T->text); } + %type decl_var {decl_var*} decl_var(var) ::= NAME(T). { var = init_decl_var(T->text, 0);