diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2016-06-21 20:23:32 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2016-07-26 19:47:04 +0300 |
| commit | a48ab32ea87b156145ccc454cdf71dc01cdda0fa (patch) | |
| tree | 8120fbb9c7bb528ea0ce78857ebe1153e3c6c2da /main/core | |
| parent | 45a2b88d584fc8bdee1fbaf0def1d9b55ba26eff (diff) | |
Add string literals
Diffstat (limited to 'main/core')
| -rw-r--r-- | main/core/parser/ast/StringLiteralNode.java | 27 | ||||
| -rw-r--r-- | main/core/runtime/Interpreter.java | 9 | ||||
| -rw-r--r-- | main/core/tokenizer/token/Token.java | 2 | ||||
| -rw-r--r-- | main/core/tokenizer/token/types/StringLiteralToken.java | 33 |
4 files changed, 65 insertions, 6 deletions
diff --git a/main/core/parser/ast/StringLiteralNode.java b/main/core/parser/ast/StringLiteralNode.java new file mode 100644 index 0000000..1ad5e2b --- /dev/null +++ b/main/core/parser/ast/StringLiteralNode.java @@ -0,0 +1,27 @@ +package com.jantuomi.interpreter.main.core.parser.ast; + +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 21.6.2016. + */ +public class StringLiteralNode extends ASTNode { + @Override + public DataContainer evaluate() { + return new StringDataContainer(source.getText()); + } + + public StringLiteralNode(Token source) { + super(source); + } + + @Override + List<ASTNode> getChildren() { + return Arrays.asList(); + } +} diff --git a/main/core/runtime/Interpreter.java b/main/core/runtime/Interpreter.java index 0789822..f84e7e7 100644 --- a/main/core/runtime/Interpreter.java +++ b/main/core/runtime/Interpreter.java @@ -2,9 +2,7 @@ package com.jantuomi.interpreter.main.core.runtime; import com.jantuomi.interpreter.main.core.parser.ast.ASTNode; import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; -import com.sun.deploy.util.StringUtils; -import java.util.ArrayList; import java.util.List; /** @@ -21,17 +19,16 @@ public class Interpreter { } public static String execute(List<ASTNode> sequence) { - List<String> output = new ArrayList<>(); + String output = ""; for (ASTNode node : sequence) { DataContainer data = node.evaluate(); if (data != null) { - String out = data.toString(); - output.add(out); + output = data.toString(); } else { break; } } - return StringUtils.join(output, " "); + return output; } } diff --git a/main/core/tokenizer/token/Token.java b/main/core/tokenizer/token/Token.java index 2582590..f058391 100644 --- a/main/core/tokenizer/token/Token.java +++ b/main/core/tokenizer/token/Token.java @@ -155,6 +155,8 @@ abstract public class Token { case IntegerLiteralToken: return new IntegerLiteralToken(text); + case StringLiteralToken: + return new StringLiteralToken(text, rawText); case AdditionToken: return new AdditionToken(); case SubtractionToken: diff --git a/main/core/tokenizer/token/types/StringLiteralToken.java b/main/core/tokenizer/token/types/StringLiteralToken.java new file mode 100644 index 0000000..8d6cb8a --- /dev/null +++ b/main/core/tokenizer/token/types/StringLiteralToken.java @@ -0,0 +1,33 @@ +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.StringLiteralNode; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; +import com.jantuomi.interpreter.main.exception.InterpreterException; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 21.6.2016. + */ +public class StringLiteralToken extends Token { + public StringLiteralToken(String text, String rawText) { + super(Type.StringLiteralToken, text, rawText); + } + + @Override + public ASTNode generateNode() throws InterpreterException { + return new StringLiteralNode(this); + } + + @Override + public Token setArguments(List<Token> args) { + return this; + } + + @Override + public List<Token> getChildren() { + return Arrays.asList(); + } +} |
