diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-06-21 21:23:34 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-07-26 19:47:05 +0300 |
| commit | 885fb97dae384112110eb2980d80f45937637896 (patch) | |
| tree | e24e3916fda9ce29360b5a01069339a10f41aff2 /main/core/tokenizer | |
| parent | eff296cc2c354f311dfe7696184f0313a6f04713 (diff) | |
Add boolean literals 'true' and 'false'
Diffstat (limited to 'main/core/tokenizer')
| -rw-r--r-- | main/core/tokenizer/Tokenizer.java | 3 | ||||
| -rw-r--r-- | main/core/tokenizer/token/Token.java | 3 | ||||
| -rw-r--r-- | main/core/tokenizer/token/types/BooleanLiteralToken.java | 32 |
3 files changed, 38 insertions, 0 deletions
diff --git a/main/core/tokenizer/Tokenizer.java b/main/core/tokenizer/Tokenizer.java index 78acd1b..8837ad1 100644 --- a/main/core/tokenizer/Tokenizer.java +++ b/main/core/tokenizer/Tokenizer.java @@ -52,9 +52,12 @@ public class Tokenizer { tokenRegexes.put(Token.Type.ClosedParenToken, "^(\\))"); tokenRegexes.put(Token.Type.FunctionDefineToken, "^(func)\\b"); tokenRegexes.put(Token.Type.FunctionBodyToken, "^(as)\\b"); + tokenRegexes.put(Token.Type.BranchBodyToken, "^(then)\\b"); tokenRegexes.put(Token.Type.EndBlockToken, "^(end)\\b"); tokenRegexes.put(Token.Type.DeclarationToken, "^(decl)\\b"); + tokenRegexes.put(Token.Type.BranchToken, "^(if)\\b"); tokenRegexes.put(Token.Type.IntegerLiteralToken, "^(\\d+)"); + tokenRegexes.put(Token.Type.BooleanLiteralToken, "^(true|false)\\b"); tokenRegexes.put(Token.Type.SymbolToken, "^([a-zA-Z]+\\w*)"); discardedTokenTypes.add(Token.Type.WhitespaceToken); diff --git a/main/core/tokenizer/token/Token.java b/main/core/tokenizer/token/Token.java index 9fce412..436160a 100644 --- a/main/core/tokenizer/token/Token.java +++ b/main/core/tokenizer/token/Token.java @@ -50,6 +50,7 @@ abstract public class Token { DeclarationToken, StringLiteralToken, IntegerLiteralToken, + BooleanLiteralToken, WhitespaceToken, NewlineToken, BranchToken, @@ -158,6 +159,8 @@ abstract public class Token { return new IntegerLiteralToken(text); case StringLiteralToken: return new StringLiteralToken(text, rawText); + case BooleanLiteralToken: + return new BooleanLiteralToken(text); case AdditionToken: return new AdditionToken(); case SubtractionToken: diff --git a/main/core/tokenizer/token/types/BooleanLiteralToken.java b/main/core/tokenizer/token/types/BooleanLiteralToken.java new file mode 100644 index 0000000..6e28b82 --- /dev/null +++ b/main/core/tokenizer/token/types/BooleanLiteralToken.java @@ -0,0 +1,32 @@ +package com.jantuomi.interpreter.main.core.tokenizer.token.types; + +import com.jantuomi.interpreter.main.core.parser.ast.ASTNode; +import com.jantuomi.interpreter.main.core.parser.ast.BooleanLiteralNode; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 15.6.2016. + */ +public class BooleanLiteralToken extends Token{ + public BooleanLiteralToken(String text) { + super(Type.BooleanLiteralToken, text); + } + + @Override + public ASTNode generateNode() { + return new BooleanLiteralNode(this); + } + + @Override + public Token setArguments(List<Token> args) { + return this; + } + + @Override + public List<Token> getChildren() { + return Arrays.asList(); + } +} |
