nctref/src/reporting.c
2025-05-03 10:00:20 +03:00

48 lines
830 B
C

#include"reporting.h"
#include<stdarg.h>
#include<stdio.h>
#include<stdlib.h>
#include"ast.h"
#include"lexer.h"
static void stahp_va(int row, int column, const char *error, va_list l) {
fprintf(stderr, "error %i:%i: ", row, column);
vfprintf(stderr, error, l);
fputc('\n', stderr);
}
/* Abort immediately on first error (for now) */
void stahp(int row, int column, const char *error, ...) {
va_list l;
va_start(l, error);
stahp_va(row, column, error, l);
va_end(l);
exit(1);
}
void stahp_node(union AST *node, const char *error, ...) {
va_list l;
va_start(l, error);
stahp_va(node->row, node->col, error, l);
va_end(l);
exit(1);
}
void stahp_token(struct Token *tok, const char *error, ...) {
va_list l;
va_start(l, error);
stahp_va(tok->row, tok->column, error, l);
va_end(l);
exit(1);
}