Wire up more builtins and slightly improve printing

This commit is contained in:
2022-10-28 23:45:08 -04:00
parent d97be8ec4b
commit 5dbe3c67af
3 changed files with 23 additions and 9 deletions

View File

@@ -17,13 +17,32 @@ int main(int argc, const char **argv) {
ucl_state_put(state, "/", ucl_builtin_create(ucl_builtin_div));
ucl_state_put(state, "%", ucl_builtin_create(ucl_builtin_mod));
ucl_state_put(state, "concat", ucl_builtin_create(ucl_builtin_concat));
ucl_state_put(state, "error", ucl_builtin_create(ucl_builtin_error));
ucl_state_put(state, "type", ucl_builtin_create(ucl_builtin_type));
ucl_state_put(state, "symbol-p", ucl_builtin_create(ucl_builtin_symbol_p));
ucl_state_put(state, "string-p", ucl_builtin_create(ucl_builtin_string_p));
ucl_state_put(state, "int-p", ucl_builtin_create(ucl_builtin_int_p));
ucl_state_put(state, "list-p", ucl_builtin_create(ucl_builtin_list_p));
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);
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;
}
return 0;
}