implemented comparisons

This commit is contained in:
Kyler Olsen 2025-11-29 14:21:53 -07:00
parent f91c63b37f
commit b930e2c23b
1 changed files with 84 additions and 12 deletions

View File

@ -886,33 +886,105 @@ Boolean builtin_exponential(InterpreterState *interpreter_state) {
} }
Boolean builtin_greater_than(InterpreterState *interpreter_state) { Boolean builtin_greater_than(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_greater_than_or_equal_to(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_less_than(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_less_than_or_equal_to(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_equal_to(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_not_equal_to(InterpreterState *interpreter_state) {
(void)interpreter_state; NUMERIC_TYPES;
return FALSE; (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) { Boolean builtin_abs(InterpreterState *interpreter_state) {