aboutsummaryrefslogtreecommitdiff
path: root/src/stack.d
diff options
context:
space:
mode:
authorAdrian Kummerlaender2017-04-12 16:58:18 +0200
committerAdrian Kummerlaender2017-04-12 17:24:09 +0200
commit4804893a6616a312ac8028e42d2aa990018ffbe6 (patch)
tree7eabf5638dd29580dae9c0197804b739301885a9 /src/stack.d
parent900c223ed40e36ffedce95e9a987d9a3c0309271 (diff)
downloadslang-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.d17
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));
}