diff options
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | source/primitives/core.d | 34 | 
2 files changed, 20 insertions, 20 deletions
| @@ -31,9 +31,9 @@ Currently implemented primitives:  | `rot`                | Rotate the top three stack elements                      |  | `true`               | Write true boolean value to top-of-stack                 |  | `false`              | Write false boolean value to top-of-stack                | -| `!`                  | Negate boolean value                                     | +| `not`                | Negate boolean value                                     | +| `and`                | Boolean and                                              | +| `or`                 | Boolean or                                               |  | `<`                  | Compare size of two integers                             |  | `=`                  | Compare equality of two stack values                     | -| `&`                  | Boolean and                                              | -| `or`                 | Boolean or                                               |  | `#`                  | Debug word printing the whole stack to _stdout_          | 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[]);  } | 
