From d5ea77e49e30ad751678f90123f891344642a36c Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Wed, 12 Apr 2017 21:55:26 +0200 Subject: Introduce native boolean type --- src/definition.d | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'src/definition.d') diff --git a/src/definition.d b/src/definition.d index dd4dddc..e6a7789 100644 --- a/src/definition.d +++ b/src/definition.d @@ -20,12 +20,13 @@ void end() { string wordToBeDefined; definition.front.visit!( - (int x ) => wordToBeDefined = "", - (string name) => wordToBeDefined = name + (int value) => wordToBeDefined = "", + (bool value) => wordToBeDefined = "", + (string name ) => wordToBeDefined = name ); if ( wordToBeDefined == "" ) { - throw new Exception("words may not be numeric"); + throw new Exception("words may not be numeric or boolean"); } definition.removeFront; @@ -33,12 +34,15 @@ void end() { definition.nullify; } -bool handle(int value) { - if ( definition.isNull ) { - return false; - } else { - definition.insertBack(Token(value)); - return true; +template handle(T) +if ( is(T == int) || is(T == bool) ) { + bool handle(T value) { + if ( definition.isNull ) { + return false; + } else { + definition.insertBack(Token(value)); + return true; + } } } @@ -55,3 +59,11 @@ bool handle(string word) { return true; } } + +bool handle(Token token) { + return token.visit!( + (int value) => handle(value), + (bool value) => handle(value), + (string word ) => handle(word) + ); +} -- cgit v1.2.3