Add 'list' and 'print' builtins

This commit is contained in:
2022-11-02 21:26:52 -04:00
parent 3b7bef779b
commit 2cf4cd9587
6 changed files with 83 additions and 15 deletions

View File

@@ -12,6 +12,8 @@ int main(int argc, const char **argv) {
struct ucl_state *state = ucl_state_create();
ucl_state_put(state, "let", ucl_builtin_create(ucl_builtin_let));
ucl_state_put(state, "print", ucl_builtin_create(ucl_builtin_print));
ucl_state_put(state, "list", ucl_builtin_create(ucl_builtin_list));
ucl_state_put(state, "+", ucl_builtin_create(ucl_builtin_add));
ucl_state_put(state, "-", ucl_builtin_create(ucl_builtin_sub));
@@ -31,19 +33,9 @@ int main(int argc, const char **argv) {
struct ucl_object *sexp = ucl_parse(argv[1]);
struct ucl_object *result = ucl_evaluate(state, ucl_car(sexp));
switch (result->type) {
case UCL_TYPE_INT:
printf("%d\n", result->integer);
break;
case UCL_TYPE_STRING:
printf("\"%s\"\n", result->string);
break;
case UCL_TYPE_SYMBOL:
printf("%s\n", result->string);
break;
case UCL_TYPE_ERROR:
printf("ERROR: %s\n", result->error);
return 1;
if (result->type == UCL_TYPE_ERROR) {
printf("%s", result->error);
return -1;
}
return 0;