--- /dev/null
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "diagnostic.h"
+
+
+void parser_print_prefix_pos(const source_position_t pos)
+{
+ fprintf(stderr, "%s:%u: ", pos.input_name, pos.linenr);
+}
+
+void parser_print_warning_prefix_pos(const source_position_t pos)
+{
+ parser_print_prefix_pos(pos);
+ fputs("warning: ", stderr);
+}
+
+void parse_warning_pos(const source_position_t pos, const char *const message)
+{
+ parser_print_prefix_pos(pos);
+ fprintf(stderr, "warning: %s\n", message);
+}
+
+void parse_warning_posf(const source_position_t pos, const char *const fmt, ...)
+{
+ parser_print_prefix_pos(pos);
+ fputs("warning: ", stderr);
+ va_list ap;
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ fputc('\n', stderr);
+}
--- /dev/null
+#ifndef DIAGNOSTIC_H
+#define DIAGNOSTIC_H
+
+#include "token_t.h"
+
+
+void parser_print_prefix_pos(source_position_t);
+void parser_print_warning_prefix_pos(source_position_t);
+void parse_warning_pos(source_position_t, const char *message);
+void parse_warning_posf(source_position_t, const char *fmt, ...);
+
+#endif
#include <stdarg.h>
#include <stdbool.h>
+#include "diagnostic.h"
#include "parser.h"
#include "lexer.h"
#include "token_t.h"
#endif
}
-static void parser_print_prefix_pos(const source_position_t source_position)
-{
- fputs(source_position.input_name, stderr);
- fputc(':', stderr);
- fprintf(stderr, "%u", source_position.linenr);
- fputs(": ", stderr);
-}
-
static void parser_print_error_prefix_pos(
const source_position_t source_position)
{
fprintf(stderr, "parse error: %s\n", message);
}
-static void parser_print_warning_prefix_pos(
- const source_position_t source_position)
-{
- parser_print_prefix_pos(source_position);
- fputs("warning: ", stderr);
-}
-
static void parser_print_warning_prefix(void)
{
parser_print_warning_prefix_pos(token.source_position);
}
-static void parse_warning_pos(const source_position_t source_position,
- const char *const message)
-{
- parser_print_prefix_pos(source_position);
- fprintf(stderr, "warning: %s\n", message);
-}
-
static void parse_warning(const char *message)
{
parse_warning_pos(token.source_position, message);