From 885fb97dae384112110eb2980d80f45937637896 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Tue, 21 Jun 2016 21:23:34 +0300 Subject: Add boolean literals 'true' and 'false' --- main/core/tokenizer/Tokenizer.java | 3 ++ main/core/tokenizer/token/Token.java | 3 ++ .../tokenizer/token/types/BooleanLiteralToken.java | 32 ++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 main/core/tokenizer/token/types/BooleanLiteralToken.java (limited to 'main/core/tokenizer') 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 args) { + return this; + } + + @Override + public List getChildren() { + return Arrays.asList(); + } +} -- cgit v1.3