]> git.lizzy.rs Git - nothing.git/blob - src/script/interpreter.h
Merge pull request #313 from tsoding/311
[nothing.git] / src / script / interpreter.h
1 #ifndef INTERPRETER_H_
2 #define INTERPRETER_H_
3
4 #include <stdbool.h>
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include "expr.h"
8
9 struct EvalResult
10 {
11     bool is_error;
12     struct Expr expr;
13     const char *error;
14 };
15
16 struct EvalResult eval_success(struct Expr expr);
17 struct EvalResult eval_failure(const char *error, struct Expr expr);
18
19 // expr returned by eval should always be destroyed with destroy_expr
20 struct EvalResult eval(struct Expr scope, struct Expr expr);
21
22 void print_eval_error(FILE *stream, struct EvalResult result);
23
24 #endif  // INTERPRETER_H_