From b930e2c23bca3dd17c9c56c95201bbe377eac54a Mon Sep 17 00:00:00 2001 From: Kyler Date: Sat, 29 Nov 2025 14:21:53 -0700 Subject: [PATCH] implemented comparisons --- SLS_C/src/builtin.c | 96 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 12 deletions(-) diff --git a/SLS_C/src/builtin.c b/SLS_C/src/builtin.c index eee6133..15fc7d5 100644 --- a/SLS_C/src/builtin.c +++ b/SLS_C/src/builtin.c @@ -886,33 +886,105 @@ Boolean builtin_exponential(InterpreterState *interpreter_state) { } Boolean builtin_greater_than(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf > af, + }); } Boolean builtin_greater_than_or_equal_to(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf >= af, + }); } Boolean builtin_less_than(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf < af, + }); } Boolean builtin_less_than_or_equal_to(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf <= af, + }); } Boolean builtin_equal_to(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf == af, + }); } Boolean builtin_not_equal_to(InterpreterState *interpreter_state) { - (void)interpreter_state; - return FALSE; + NUMERIC_TYPES; + (void)ai; + (void)bi; + (void)type; + + StackItem *node = interpreter_state->stack; + interpreter_state->stack = interpreter_state->stack->next->next; + node->next->next = NULL; + clean_stack(node); + + return push_token(interpreter_state, (Token){ + .type = TOKEN_BOOLEAN, + .boolean_literal = bf != af, + }); } Boolean builtin_abs(InterpreterState *interpreter_state) {