From 061db1f3810efac768dc7a83a8fbfaecfc512577 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Wed, 12 Apr 2017 18:15:38 +0200 Subject: Expand conditional primitive to choose between `then` and `else` branch i.e. `1 if true then false else` evaluates to `true`, `0 if true then false else` evaluates to `false`. --- src/primitives/eval.d | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/primitives/eval.d') diff --git a/src/primitives/eval.d b/src/primitives/eval.d index 3f52e6d..533f491 100644 --- a/src/primitives/eval.d +++ b/src/primitives/eval.d @@ -8,10 +8,13 @@ bool evaluate(int value) { bool evaluate(string word) { if ( drop_mode ) { - if ( word == "then" ) { - return conditional_end; - } else { - return true; + switch ( word ) { + case "then": + return conditional_then; + case "else": + return conditional_else; + default: + return true; } } @@ -23,9 +26,11 @@ bool evaluate(string word) { case "@": return unary_op_variable_resolve; case "if": - return conditional_start; + return conditional_if; case "then": - return conditional_end; + return conditional_then; + case "else": + return conditional_else; case "+": return binary_op_add; case "*": -- cgit v1.2.3