diff options
author | Adrian Kummerlaender | 2017-04-12 16:58:18 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2017-04-12 17:24:09 +0200 |
commit | 4804893a6616a312ac8028e42d2aa990018ffbe6 (patch) | |
tree | 7eabf5638dd29580dae9c0197804b739301885a9 /src/stack.d | |
parent | 900c223ed40e36ffedce95e9a987d9a3c0309271 (diff) | |
download | slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar.gz slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar.bz2 slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar.lz slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar.xz slang-4804893a6616a312ac8028e42d2aa990018ffbe6.tar.zst slang-4804893a6616a312ac8028e42d2aa990018ffbe6.zip |
Modularize primitives implementation, add stack manipulators
Diffstat (limited to 'src/stack.d')
-rw-r--r-- | src/stack.d | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/stack.d b/src/stack.d index 756dafc..6805873 100644 --- a/src/stack.d +++ b/src/stack.d @@ -25,14 +25,19 @@ Token pop(ref Stack!Token stack) { return token; } -void push(ref Stack!Token stack, int value) { - if ( !src.definition.handle(value) ) { - stack.insertFront(Token(value)); +void push(ref Stack!Token stack, Token token) { + if ( !token.visit!( + (int x ) => src.definition.handle(x), + (string word) => src.definition.handle(word) + ) ) { + stack.insertFront(token); } } +void push(ref Stack!Token stack, int value) { + stack.push(Token(value)); +} + void push(ref Stack!Token stack, string word) { - if ( !src.definition.handle(word) ) { - stack.insertFront(Token(word)); - } + stack.push(Token(word)); } |