30 lines
851 B
C
30 lines
851 B
C
#include <assert.h>
|
|
#include <stdio.h>
|
|
|
|
#include "uclisp.h"
|
|
#include "state.h"
|
|
#include "internal.h"
|
|
#include "utility.h"
|
|
#include "builtins.h"
|
|
|
|
int main(int argc, const char **argv) {
|
|
(void) argc, (void) argv;
|
|
struct ucl_state *state = ucl_state_create();
|
|
|
|
ucl_state_put(state, "+", ucl_builtin_create(ucl_builtin_add));
|
|
ucl_state_put(state, "-", ucl_builtin_create(ucl_builtin_sub));
|
|
ucl_state_put(state, "*", ucl_builtin_create(ucl_builtin_mul));
|
|
ucl_state_put(state, "/", ucl_builtin_create(ucl_builtin_div));
|
|
ucl_state_put(state, "%", ucl_builtin_create(ucl_builtin_mod));
|
|
|
|
struct ucl_object *sexp = ucl_parse(argv[1]);
|
|
struct ucl_object *result = ucl_evaluate(state, ucl_car(sexp));
|
|
|
|
assert(result != NULL);
|
|
assert(result->type == UCL_TYPE_INT);
|
|
|
|
printf("%d\n", result->integer);
|
|
|
|
return 0;
|
|
}
|