diff --git a/src/lisp.c b/src/lisp.c index e3320a5..cdbbc72 100644 --- a/src/lisp.c +++ b/src/lisp.c @@ -4,6 +4,7 @@ #include "lisp.h" #include "list.h" #include "operators.h" +#include "parser.h" const char* type_names[] = {"INTEGER", "SYMBOL", "LIST", "PROCEDURE", "BINDING", "ERROR", "OPERATOR"}; diff --git a/src/parser.c b/src/parser.c index e9b40e6..cf96c41 100644 --- a/src/parser.c +++ b/src/parser.c @@ -4,6 +4,7 @@ #include #include "lisp.h" #include "list.h" +#include "parser.h" int check_number(char* str) { diff --git a/src/parser.h b/src/parser.h new file mode 100644 index 0000000..bf910e4 --- /dev/null +++ b/src/parser.h @@ -0,0 +1 @@ +void strip_spaces(char* string); diff --git a/src/primitives.c b/src/primitives.c index a78fa36..ad83f90 100644 --- a/src/primitives.c +++ b/src/primitives.c @@ -1,8 +1,10 @@ #include #include #include "lisp.h" +#include #include "list.h" #include "primitives.h" +#include #define OPERATION_PLUS 0 #define OPERATION_MINUS 1 @@ -113,7 +115,7 @@ Value* primitive_eq(List* arguments) Node* current_argument = arguments->first; for (int i = 0; i < arguments->length - 1; i++) { if (!compare_values(current_argument->value, current_argument->next->value)) - return alloc_value(TYPE_SYMBOL, "NIL"); + return alloc_value(TYPE_SYMBOL, (void*)"NIL"); current_argument = current_argument->next; } return alloc_value(TYPE_SYMBOL, "T"); @@ -137,12 +139,12 @@ Value* primitive_greater(List* arguments) Value* primitive_lesseq(List* arguments) { - return primitive_less(arguments) || primitive_eq(arguments); + return (Value*)(intptr_t)((intptr_t)primitive_less(arguments) || (intptr_t)primitive_eq(arguments)); } Value* primitive_greatereq(List* arguments) { - return primitive_greater(arguments) || primitive_eq(arguments); + return (Value*)(intptr_t)((intptr_t)primitive_greater(arguments) || (intptr_t)primitive_eq(arguments)); } Value* primitive_list(List* arguments) @@ -236,5 +238,5 @@ Value* primitive_type(List* arguments) { Value* val = arguments->first->value; - return alloc_value(TYPE_SYMBOL, type_names[val->type]); + return alloc_value(TYPE_SYMBOL, (void*)type_names[val->type]); }