} decl_arg;
static inline decl_arg *init_decl_arg(decl_type *type, decl_var *var) {
decl_arg *arg = malloc(sizeof(*arg));
arg->type = type;
arg->var = var;
} decl_arg;
static inline decl_arg *init_decl_arg(decl_type *type, decl_var *var) {
decl_arg *arg = malloc(sizeof(*arg));
arg->type = type;
arg->var = var;
} let_stmt;
static inline let_stmt *init_let_stmt(decl_var *var, let_value *val) {
let_stmt *let = malloc(sizeof(*let));
let->var = var;
let->val = val;
} let_stmt;
static inline let_stmt *init_let_stmt(decl_var *var, let_value *val) {
let_stmt *let = malloc(sizeof(*let));
let->var = var;
let->val = val;
-PSI_Parser *PSI_ParserInit(PSI_Parser *P, const char *filename, unsigned flags);
+PSI_Parser *PSI_ParserInit(PSI_Parser *P, const char *filename, psi_error_cb error, unsigned flags);
void PSI_ParserSyntaxError(PSI_Parser *P, const char *fn, size_t ln, const char *msg, ...);
size_t PSI_ParserFill(PSI_Parser *P, size_t n);
token_t PSI_ParserScan(PSI_Parser *P);
void PSI_ParserSyntaxError(PSI_Parser *P, const char *fn, size_t ln, const char *msg, ...);
size_t PSI_ParserFill(PSI_Parser *P, size_t n);
token_t PSI_ParserScan(PSI_Parser *P);