diff options
Diffstat (limited to 'main/core/tokenizer/token')
| -rw-r--r-- | main/core/tokenizer/token/Token.java | 4 | ||||
| -rw-r--r-- | main/core/tokenizer/token/types/NegationToken.java | 37 |
2 files changed, 41 insertions, 0 deletions
diff --git a/main/core/tokenizer/token/Token.java b/main/core/tokenizer/token/Token.java index 436160a..a9b66e8 100644 --- a/main/core/tokenizer/token/Token.java +++ b/main/core/tokenizer/token/Token.java @@ -58,6 +58,7 @@ abstract public class Token { EndBlockToken, FunctionBodyToken, BranchBodyToken, + NegationToken, NotAToken } @@ -185,6 +186,8 @@ abstract public class Token { return new ClosedParenToken(); case BranchToken: return new BranchToken(); + case NegationToken: + return new NegationToken(); default: ExceptionManager.raise(InterpreterException.ExceptionType.IllegalTokenError, line, type.toString() @@ -232,6 +235,7 @@ abstract public class Token { case BranchToken: return new ArgumentInfo(2); case DeclarationToken: + case NegationToken: return new ArgumentInfo(1); default: return new ArgumentInfo(0); diff --git a/main/core/tokenizer/token/types/NegationToken.java b/main/core/tokenizer/token/types/NegationToken.java new file mode 100644 index 0000000..5658f10 --- /dev/null +++ b/main/core/tokenizer/token/types/NegationToken.java @@ -0,0 +1,37 @@ +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.NegationNode; +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 NegationToken extends Token { + + private Token operand; + + public NegationToken() { + super(Type.NegationToken, "not"); + } + + @Override + public ASTNode generateNode() throws InterpreterException { + return new NegationNode(this, operand.generateNode()); + } + + @Override + public Token setArguments(List<Token> args) { + operand = args.get(0); + return this; + } + + @Override + public List<Token> getChildren() { + return Arrays.asList(operand); + } +} |
