Преглед на файлове

implemented error

master
Felix Brendel преди 7 години
родител
ревизия
f9d08ba765
променени са 2 файла, в които са добавени 9 реда и са изтрити 0 реда
  1. +3
    -0
      src/ast.c
  2. +6
    -0
      src/eval.c

+ 3
- 0
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;


+ 6
- 0
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);


Зареждане…
Отказ
Запис