diff options
Diffstat (limited to 'source/app.d')
-rw-r--r-- | source/app.d | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/source/app.d b/source/app.d index 7d25f7f..0f17afc 100644 --- a/source/app.d +++ b/source/app.d @@ -9,7 +9,7 @@ import base.stack; import definition = base.definition; import primitives = primitives.eval; -Stack!Token resolve(Token token) { +Stack!Token evaluate(Token token) { try { if ( primitives.evaluate(token) ) { return primitives.result; @@ -31,17 +31,14 @@ void process(string value) { auto buffer = make!(Stack!Token)(toToken(value)); do { - Token current = buffer.pop; - - if ( !definition.handle(current) ) { - Stack!Token resolved = resolve(current); - - if ( !resolved.empty ) { - if ( resolved.front == current ) { - stack.push(current); - } else { - buffer.insertFront(resolved[]); - } + Token current = buffer.pop; + Stack!Token result = evaluate(current); + + if ( !result.empty ) { + if ( result.front == current ) { + stack.push(current); + } else { + buffer.insertFront(result[]); } } } |