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) {