diff options
Diffstat (limited to 'source/primitives')
-rw-r--r-- | source/primitives/core.d | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/source/primitives/core.d b/source/primitives/core.d index a3a24f0..e3c2eeb 100644 --- a/source/primitives/core.d +++ b/source/primitives/core.d @@ -29,11 +29,11 @@ bool handle(string word) { case "rot" : ternary_op_stack_rot; break; case "true" : nullary_op_value_bool(true); break; case "false" : nullary_op_value_bool(false); break; - case "!" : unary_op_negate; break; + case "not" : unary_op_negate; break; + case "and" : binary_cond_and; break; + case "or" : binary_cond_or; break; case "<" : binary_cond_lt; break; case "=" : binary_cond_eq; break; - case "&" : binary_cond_and; break; - case "or" : binary_cond_or; break; case "#" : debug_print_stack; break; default : return false; } @@ -126,20 +126,6 @@ void unary_op_negate() { stack.push(Token(!a)); } -void binary_cond_lt() { - int b = stack.pop.get!int; - int a = stack.pop.get!int; - - stack.push(a < b); -} - -void binary_cond_eq() { - auto b = stack.pop; - auto a = stack.pop; - - stack.push(a == b); -} - void binary_cond_and() { bool b = stack.pop.get!bool; bool a = stack.pop.get!bool; @@ -154,6 +140,20 @@ void binary_cond_or() { stack.push(Token(a || b)); } +void binary_cond_lt() { + int b = stack.pop.get!int; + int a = stack.pop.get!int; + + stack.push(a < b); +} + +void binary_cond_eq() { + auto b = stack.pop; + auto a = stack.pop; + + stack.push(a == b); +} + void debug_print_stack() { writeln(stack[]); } |