#ifndef PARSER_H_
#define PARSER_H_
+#include <stdio.h>
#include <stdbool.h>
#include "script/expr.h"
+#include "script/tokenizer.h"
struct ParseResult
{
bool is_error;
+ const char *end;
union {
struct Expr expr;
- const char *error;
+ const char *error_message;
};
};
-struct ParseResult parse_success(struct Expr expr);
-struct ParseResult parse_failure(const char *error);
+struct ParseResult parse_success(struct Expr expr,
+ const char *end);
+struct ParseResult parse_failure(const char *error,
+ const char *end);
-struct ParseResult create_expr_from_str(const char *str,
- size_t *cursor,
- size_t n);
+struct ParseResult read_expr_from_string(Gc *gc, const char *str);
+struct ParseResult read_expr_from_file(Gc *gc, const char *filename);
+void print_parse_error(FILE *stream,
+ const char *str,
+ struct ParseResult result);
#endif // PARSER_H_