diff --git a/src/ast.c b/src/ast.c index d2021c2..8fd7c14 100644 --- a/src/ast.c +++ b/src/ast.c @@ -130,6 +130,7 @@ typedef enum { Built_In_Division, Built_In_Equal, Built_In_Eval, + Built_In_Error, Built_In_Exit, Built_In_First, Built_In_Greater, @@ -170,6 +171,7 @@ char* Built_In_Name_to_string(Built_In_Name name) { case Built_In_Define: return "define"; case Built_In_Division: return "/"; case Built_In_Equal: return "="; + case Built_In_Error: return "error"; case Built_In_Eval: return "eval"; case Built_In_Exit: return "exit"; case Built_In_First: return "first"; @@ -291,6 +293,7 @@ Ast_Node* create_ast_node_built_in_function(char* name) { else if (string_equal(name, "and")) type = Built_In_And; else if (string_equal(name, "breakpoint")) type = Built_In_Breakpoint; else if (string_equal(name, "define")) type = Built_In_Define; + else if (string_equal(name, "error")) type = Built_In_Error; else if (string_equal(name, "eval")) type = Built_In_Eval; else if (string_equal(name, "exit")) type = Built_In_Exit; else if (string_equal(name, "first")) type = Built_In_First; diff --git a/src/eval.c b/src/eval.c index 120700c..53802f4 100644 --- a/src/eval.c +++ b/src/eval.c @@ -846,6 +846,12 @@ Ast_Node* eval_expr(Ast_Node* node, Environment* env) { case Built_In_List: { return evaluated_arguments; } + case Built_In_Error: { + if (arguments_length != 0) { + report_error(Error_Type_Wrong_Number_Of_Arguments); + } + report_error(Error_Type_Unknown_Error); + } case Built_In_Print: { if (arguments_length != 1) { report_error(Error_Type_Wrong_Number_Of_Arguments);