diff options
5 files changed, 46 insertions, 1 deletions
diff --git a/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java b/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java new file mode 100644 index 0000000..deed962 --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/ast/ObjectMemberNode.java @@ -0,0 +1,20 @@ +package com.jantuomi.tunkki.core.parser.ast; + +import com.jantuomi.tunkki.core.parser.datatype.Datatype; +import com.jantuomi.tunkki.core.parser.tokenizer.token.Token; +import com.jantuomi.tunkki.exception.types.TunkkiError; + +/** + * Created by jan on 3.8.2016. + */ +public class ObjectMemberNode extends UnaryOperatorNode { + public ObjectMemberNode(Token token, ASTNode operand) { + super(token, operand); + } + + @Override + public Datatype evaluate() throws TunkkiError { + // TODO + return null; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java index 2571b61..c3c0b05 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java +++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/Tokenizer.java @@ -66,8 +66,8 @@ public class Tokenizer { tokenRegexes.put(Token.Type.BranchToken, "^(if)\\b"); tokenRegexes.put(Token.Type.CallToken, "^([a-öA-Ö]+\\w*)\\?[\\s|\\!]"); + tokenRegexes.put(Token.Type.ObjectMemberToken, "^([a-öA-Ö]+)\\:"); tokenRegexes.put(Token.Type.SymbolToken, "^([a-öA-Ö]+\\w*)\\b"); - tokenRegexes.put(Token.Type.ObjectMemberToken, "^([a-öA-Ö]+\\w*)\\:\\b"); discardedTokenTypes.add(Token.Type.WhitespaceToken); discardedTokenTypes.add(Token.Type.CommentToken); diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/TokenFactory.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/TokenFactory.java index 21cd13b..5d26617 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/TokenFactory.java +++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/TokenFactory.java @@ -62,6 +62,8 @@ public class TokenFactory { return new CallToken(text, rawText); case CallEndToken: return new CallEndToken(); + case ObjectMemberToken: + return new ObjectMemberToken(text, rawText); case BranchToken: return new BranchToken(); case NegationToken: diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/ObjectMemberToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/ObjectMemberToken.java new file mode 100644 index 0000000..ec9cacd --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/ObjectMemberToken.java @@ -0,0 +1,20 @@ +package com.jantuomi.tunkki.core.parser.tokenizer.token.types; + +import com.jantuomi.tunkki.core.parser.ast.ASTNode; +import com.jantuomi.tunkki.core.parser.ast.ObjectMemberNode; +import com.jantuomi.tunkki.exception.types.TunkkiError; + +/** + * Created by jan on 3.8.2016. + */ +public class ObjectMemberToken extends UnaryOperatorToken { + public ObjectMemberToken(String text, String rawText) { + super(Type.ObjectMemberToken, text, rawText); + } + + @Override + public ASTNode generateNode() throws TunkkiError { + ObjectMemberNode node = new ObjectMemberNode(this, operand.generateNode()); + return node; + } +} diff --git a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/UnaryOperatorToken.java b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/UnaryOperatorToken.java index 2327619..43b0d2e 100644 --- a/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/UnaryOperatorToken.java +++ b/src/main/com/jantuomi/tunkki/core/parser/tokenizer/token/types/UnaryOperatorToken.java @@ -10,6 +10,9 @@ import java.util.List; * Created by jan on 28.6.2016. */ abstract public class UnaryOperatorToken extends Token { + public UnaryOperatorToken(Type type, String text, String rawText) { + super(type, text, rawText); + } public UnaryOperatorToken(Type type, String text) { super(type, text); } |
