#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");
}
%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);