aboutsummaryrefslogtreecommitdiff
path: root/src/include/Lisp.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/Lisp.H')
-rw-r--r--src/include/Lisp.H13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/include/Lisp.H b/src/include/Lisp.H
index 119d07f8..a189dd38 100644
--- a/src/include/Lisp.H
+++ b/src/include/Lisp.H
@@ -78,6 +78,16 @@ namespace OpenAxiom {
struct IntegerOverflow : Diagnostics::BasicError {
explicit IntegerOverflow(const std::string&);
};
+
+ // -- Unbound symbol
+ struct UnboundSymbol : Diagnostics::BasicError {
+ explicit UnboundSymbol(const std::string&);
+ };
+
+ // -- Unbound functiom symbol
+ struct UnboundFunctionSymbol : Diagnostics::BasicError {
+ explicit UnboundFunctionSymbol(const std::string&);
+ };
// -- Anchor maps
using AnchorTable = std::map<Ordinal, Value>;
@@ -85,14 +95,17 @@ namespace OpenAxiom {
// -- Evaluator --
struct Evaluator : VM::BasicContext {
Evaluator();
+ Value eval(const Sexpr::Syntax*);
Package* core_package() { return core; }
Package* current_package() { return ns; }
Value toplevel_form(const Sexpr::Syntax*);
Value make_value(const Sexpr::Syntax*);
+ Value* lexical_binding(String);
Environment* global_environment();
private:
Package* core;
Package* ns;
+ Symbol* feature_list;
std::list<Environment> env_stack;
AnchorTable anchor_map;
};