diff options
author | Adrian Kummerlaender | 2017-04-12 21:55:26 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2017-04-12 21:55:26 +0200 |
commit | d5ea77e49e30ad751678f90123f891344642a36c (patch) | |
tree | 947e183a950e9291263ddc2a84ad25f2e11652be /src/stack.d | |
parent | 061db1f3810efac768dc7a83a8fbfaecfc512577 (diff) | |
download | slang-d5ea77e49e30ad751678f90123f891344642a36c.tar slang-d5ea77e49e30ad751678f90123f891344642a36c.tar.gz slang-d5ea77e49e30ad751678f90123f891344642a36c.tar.bz2 slang-d5ea77e49e30ad751678f90123f891344642a36c.tar.lz slang-d5ea77e49e30ad751678f90123f891344642a36c.tar.xz slang-d5ea77e49e30ad751678f90123f891344642a36c.tar.zst slang-d5ea77e49e30ad751678f90123f891344642a36c.zip |
Introduce native boolean type
Diffstat (limited to 'src/stack.d')
-rw-r--r-- | src/stack.d | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/stack.d b/src/stack.d index 6805873..2fb602b 100644 --- a/src/stack.d +++ b/src/stack.d @@ -6,7 +6,7 @@ import std.container : SList; static import src.definition; -alias Token = Algebraic!(int, string); +alias Token = Algebraic!(int, bool, string); alias Stack = SList; Stack!Token stack; @@ -26,18 +26,14 @@ Token pop(ref Stack!Token stack) { } void push(ref Stack!Token stack, Token token) { - if ( !token.visit!( - (int x ) => src.definition.handle(x), - (string word) => src.definition.handle(word) - ) ) { + if ( !src.definition.handle(token) ) { stack.insertFront(token); } } -void push(ref Stack!Token stack, int value) { - stack.push(Token(value)); -} - -void push(ref Stack!Token stack, string word) { - stack.push(Token(word)); +template push(T) +if ( is(T == int) || is(T == bool) || is (T == string) ) { + void push(ref Stack!Token stack, T value) { + stack.push(Token(value)); + } } |