Separate public header

This commit is contained in:
2022-11-20 22:31:23 -05:00
parent 31c7ee156c
commit f19f672d05
2 changed files with 1 additions and 54 deletions

View File

@@ -18,7 +18,7 @@ LIB_SRCS = [
"src/utility.c", "src/utility.c",
"src/parse.c", "src/parse.c",
] ]
LIB_INCLUDES = ["src/"] LIB_INCLUDES = ["src/", "include/"]
TEST_SRCS = [ TEST_SRCS = [

View File

@@ -1,53 +0,0 @@
#ifndef _UCLISP_H_
#define _UCLISP_H_
enum ucl_type {
UCL_TYPE_CELL = 0,
UCL_TYPE_SYMBOL = 1,
UCL_TYPE_INT = 2,
UCL_TYPE_STRING = 3,
UCL_TYPE_ERROR = 4,
UCL_TYPE_BUILTIN = 5,
UCL_TYPE_SPECIAL = 6, // Like builtins, but special forms where arguments are not necessarily evaluated
UCL_TYPE_COUNT = 7,
};
struct ucl_cell {
struct ucl_object *car;
struct ucl_object *cdr;
};
struct ucl_scope;
typedef struct ucl_object *(*ucl_lisp)(struct ucl_scope* state, struct ucl_object *args);
struct ucl_object {
union {
struct ucl_cell cell;
const char *symbol;
int integer;
const char *string;
const char *error;
ucl_lisp builtin;
ucl_lisp special;
};
enum ucl_type type;
char reachable;
};
struct ucl_parse_result {
int result;
struct ucl_cell *statement;
};
struct ucl_scope; // TODO
struct ucl_object *ucl_tokenize(const char *source);
struct ucl_object *ucl_parse(const char *sexp);
struct ucl_object *ucl_evaluate(struct ucl_scope *state, struct ucl_object *sexp);
// TODO: State encapsulation is all wonky here)
void ucl_gc();
#endif