Add simple evaluation

This commit is contained in:
2022-10-28 22:29:37 -04:00
parent ed173bd17a
commit 26a0d17074
6 changed files with 75 additions and 17 deletions

View File

@@ -1,10 +1,29 @@
#include <assert.h>
#include <stdio.h>
#include "nihilispm.h"
#include "nihilispm_state.h"
#include "nihilispm_internal.h"
#include "nihilispm_utility.h"
#include "builtins.h"
int main(int argc, const char **argv) {
(void) argc, (void) argv;
struct nl_state *state = nl_state_create();
nl_state_put(state, "+", nl_builtin_create(nl_builtin_add));
nl_state_put(state, "-", nl_builtin_create(nl_builtin_sub));
nl_state_put(state, "*", nl_builtin_create(nl_builtin_mul));
nl_state_put(state, "/", nl_builtin_create(nl_builtin_div));
nl_state_put(state, "%", nl_builtin_create(nl_builtin_mod));
struct nl_object *sexp = nl_parse(argv[1]);
struct nl_object *result = nl_evaluate(state, nl_car(sexp));
assert(result != NULL);
assert(result->type == NL_TYPE_INT);
printf("%d\n", result->integer);
return 0;
}