|
- // proc assert_type(Lisp_Object*, Lisp_Object_Type) -> void;
- proc built_in_load(String*, Environment*) -> Lisp_Object*;
- proc built_in_import(String*, Environment*) -> Lisp_Object*;
- proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, String* message) -> void;
- proc create_error(const char* c_file_name, int c_file_line, Lisp_Object* type, const char* format, ...) -> void;
- proc create_error(Lisp_Object* type, const char* message, const char* c_file_name, int c_file_line) -> void;
- proc eval_arguments(Lisp_Object*, Environment*, int*) -> Lisp_Object*;
- proc eval_expr(Lisp_Object*, Environment*) -> Lisp_Object*;
- proc is_truthy (Lisp_Object*, Environment*) -> bool;
- proc list_length(Lisp_Object*) -> int;
- proc load_built_ins_into_environment(Environment*) -> void;
- proc parse_argument_list(Lisp_Object*, Function*) -> void;
- proc print_environment(Environment*) -> void;
-
- proc exe_dir() -> char*;
-
- proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char*;
-
- proc visualize_lisp_machine() -> void;
-
- namespace Memory {
- proc create_built_ins_environment() -> Environment*;
- proc get_or_create_lisp_object_keyword(const char* identifier) -> Lisp_Object*;
- inline proc get_type(Lisp_Object* node) -> Lisp_Object_Type;
- }
-
-
- namespace Parser {
- extern Environment* environment_for_macros;
-
- extern String* standard_in;
- extern String* parser_file;
- extern int parser_line;
- extern int parser_col;
- }
-
- namespace Globals {
- Environment* root_environment; // contains the built-ins
- Log_Level log_level = Log_Level::Debug;
-
- // TODO(Felix): make this the callstack by using a arraylist
- // instead
- Lisp_Object* current_source_code = nullptr;
- Error* error = nullptr;
- }
|