enum ExprType
{
EXPR_ATOM = 0,
- EXPR_CONS
+ EXPR_CONS,
+ EXPR_VOID
};
// TODO(#285): there is no way to execute struct Expr
};
};
-
-
struct Expr atom_as_expr(struct Atom *atom);
struct Expr cons_as_expr(struct Cons *cons);
+struct Expr void_expr(void);
void destroy_expr(struct Expr expr);
void print_expr_as_sexpr(struct Expr expr);
};
};
-struct Atom *create_atom(enum AtomType type, ...);
+struct Atom *create_number_atom(float num);
+struct Atom *create_string_atom(const char *str, const char *str_end);
+struct Atom *create_symbol_atom(const char *sym, const char *sym_end);
void destroy_atom(struct Atom *atom);
void print_atom_as_sexpr(struct Atom *atom);