flush
[m6w6/ext-psi] / idl / parser.y
index 9d71e63560b7ac8e9009e8fd8c83cfd85db75a1b..de0de4ac471f776b05a4cd42c785cdea0896898a 100644 (file)
@@ -3,9 +3,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdarg.h>
-#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);