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/parser/ast/BooleanLiteralNode.java | 30 ++++++++++++++++++++++ .../core/parser/datatype/BooleanDataContainer.java | 5 ++-- .../core/parser/datatype/IntegerDataContainer.java | 10 +++----- main/core/parser/datatype/StringDataContainer.java | 14 ++++++---- 4 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 main/core/parser/ast/BooleanLiteralNode.java (limited to 'main/core/parser') diff --git a/main/core/parser/ast/BooleanLiteralNode.java b/main/core/parser/ast/BooleanLiteralNode.java new file mode 100644 index 0000000..0d9c505 --- /dev/null +++ b/main/core/parser/ast/BooleanLiteralNode.java @@ -0,0 +1,30 @@ +package com.jantuomi.interpreter.main.core.parser.ast; + +import com.jantuomi.interpreter.main.core.parser.datatype.BooleanDataContainer; +import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer; +import com.jantuomi.interpreter.main.core.tokenizer.token.Token; + +import java.util.Arrays; +import java.util.List; + +/** + * Created by jan on 16.6.2016. + */ +public class BooleanLiteralNode extends ASTNode { + private BooleanDataContainer value; + + public BooleanLiteralNode(Token token) { + super(token); + value = new BooleanDataContainer(Boolean.parseBoolean(token.getText())); + } + + @Override + public DataContainer evaluate() { + return value; + } + + @Override + List getChildren() { + return Arrays.asList(); + } +} diff --git a/main/core/parser/datatype/BooleanDataContainer.java b/main/core/parser/datatype/BooleanDataContainer.java index 1536fca..af814bb 100644 --- a/main/core/parser/datatype/BooleanDataContainer.java +++ b/main/core/parser/datatype/BooleanDataContainer.java @@ -8,15 +8,14 @@ import com.jantuomi.interpreter.main.exception.InterpreterException; */ public class BooleanDataContainer extends DataContainer { - private boolean value; public BooleanDataContainer(boolean value) { - this.value = value; + setData(value); } @Override public String toString() { - return Boolean.toString(value); + return Boolean.toString(getData()); } @Override diff --git a/main/core/parser/datatype/IntegerDataContainer.java b/main/core/parser/datatype/IntegerDataContainer.java index 650db5c..1999131 100644 --- a/main/core/parser/datatype/IntegerDataContainer.java +++ b/main/core/parser/datatype/IntegerDataContainer.java @@ -5,28 +5,26 @@ package com.jantuomi.interpreter.main.core.parser.datatype; */ public class IntegerDataContainer extends DataContainer { - private int value; - public IntegerDataContainer(int value) { - this.value = value; + setData(value); } @Override public String toString() { - return Integer.toString(value); + return Integer.toString(getData()); } @Override public DataContainer add(DataContainer other) { return new IntegerDataContainer( - this.value + ((IntegerDataContainer) other).value + this.getData() + other.getData() ); } @Override public DataContainer subtract(DataContainer other) { return new IntegerDataContainer( - this.value - ((IntegerDataContainer) other).value + this.getData() - other.getData() ); } } diff --git a/main/core/parser/datatype/StringDataContainer.java b/main/core/parser/datatype/StringDataContainer.java index 9916f77..bbc9b29 100644 --- a/main/core/parser/datatype/StringDataContainer.java +++ b/main/core/parser/datatype/StringDataContainer.java @@ -1,29 +1,33 @@ package com.jantuomi.interpreter.main.core.parser.datatype; +import com.jantuomi.interpreter.main.exception.ExceptionManager; +import com.jantuomi.interpreter.main.exception.InterpreterException; + /** * Created by jan on 16.6.2016. */ public class StringDataContainer extends DataContainer { - private String value; + public StringDataContainer(String text) { - this.value = text; + setData(text); } @Override public String toString() { - return value; + return getData(); } @Override public DataContainer add(DataContainer other) { return new StringDataContainer( - value + ((StringDataContainer) other).value + getData() + other.getData() ); } @Override - public DataContainer subtract(DataContainer other) { + public DataContainer subtract(DataContainer other) throws InterpreterException { + ExceptionManager.raise(InterpreterException.ExceptionType.TypeError, -1, "string", "string"); return null; } } -- cgit v1.3