From f5b115e618440587a51885253b5923e89b1596a9 Mon Sep 17 00:00:00 2001 From: Astrash Date: Thu, 27 Jul 2023 12:52:15 +1000 Subject: [PATCH] Formatting & name changes --- .../{tokenizer => lexer}/Char.java | 2 +- .../Tokenizer.java => lexer/Lexer.java} | 97 +++--- .../{tokenizer => lexer}/LookaheadStream.java | 2 +- .../{tokenizer => lexer}/SourcePosition.java | 2 +- .../{tokenizer => lexer}/Token.java | 72 ++-- .../exceptions/EOFException.java | 4 +- .../exceptions/FormatException.java | 4 +- .../exceptions/TokenizerException.java | 4 +- .../addons/terrascript/parser/Parser.java | 323 +++++++++--------- .../addons/terrascript/parser/ParserUtil.java | 52 ++- .../parser/exceptions/ParseException.java | 2 +- .../addons/terrascript/parser/lang/Block.java | 3 +- .../terrascript/parser/lang/Executable.java | 4 +- .../terrascript/parser/lang/Expression.java | 31 +- .../addons/terrascript/parser/lang/Scope.java | 11 +- .../lang/constants/BooleanConstant.java | 4 +- .../lang/constants/ConstantExpression.java | 4 +- .../lang/constants/NumericConstant.java | 6 +- .../parser/lang/constants/StringConstant.java | 2 +- .../parser/lang/functions/Function.java | 3 +- .../lang/functions/FunctionBuilder.java | 2 +- .../functions/UserDefinedFunctionBuilder.java | 13 +- .../lang/keywords/flow/BreakKeyword.java | 2 +- .../lang/keywords/flow/ContinueKeyword.java | 2 +- .../lang/keywords/flow/FailKeyword.java | 2 +- .../lang/keywords/flow/ReturnKeyword.java | 6 +- .../lang/keywords/looplike/ForKeyword.java | 7 +- .../lang/keywords/looplike/IfKeyword.java | 7 +- .../lang/keywords/looplike/WhileKeyword.java | 4 +- .../lang/operations/BinaryOperation.java | 2 +- .../lang/operations/BooleanAndOperation.java | 4 +- .../lang/operations/BooleanNotOperation.java | 4 +- .../lang/operations/BooleanOrOperation.java | 6 +- .../operations/ConcatenationOperation.java | 4 +- .../lang/operations/DivisionOperation.java | 4 +- .../lang/operations/ModuloOperation.java | 6 +- .../operations/MultiplicationOperation.java | 6 +- .../lang/operations/NegationOperation.java | 4 +- .../operations/NumberAdditionOperation.java | 6 +- .../lang/operations/SubtractionOperation.java | 6 +- .../lang/operations/UnaryOperation.java | 2 +- .../statements/EqualsStatement.java | 6 +- .../GreaterOrEqualsThanStatement.java | 4 +- .../statements/GreaterThanStatement.java | 4 +- .../statements/LessThanOrEqualsStatement.java | 6 +- .../statements/LessThanStatement.java | 6 +- .../statements/NotEqualsStatement.java | 4 +- .../lang/variables/BooleanVariable.java | 2 +- .../parser/lang/variables/NumberVariable.java | 2 +- .../parser/lang/variables/StringVariable.java | 2 +- .../parser/lang/variables/Variable.java | 2 +- .../variables/assign/BoolAssignmentNode.java | 4 +- .../variables/assign/NumAssignmentNode.java | 4 +- .../variables/assign/StrAssignmentNode.java | 4 +- .../assign/VariableAssignmentNode.java | 2 +- .../reference/BoolVariableReferenceNode.java | 2 +- .../reference/NumVariableReferenceNode.java | 2 +- .../reference/StrVariableReferenceNode.java | 2 +- .../reference/VariableReferenceNode.java | 2 +- .../terrascript/script/StructureScript.java | 5 +- .../builders/BinaryNumberFunctionBuilder.java | 4 +- .../script/builders/BiomeFunctionBuilder.java | 2 +- .../script/builders/BlockFunctionBuilder.java | 2 +- .../builders/CheckBlockFunctionBuilder.java | 2 +- .../builders/EntityFunctionBuilder.java | 2 +- .../builders/GetMarkFunctionBuilder.java | 2 +- .../script/builders/LootFunctionBuilder.java | 2 +- .../script/builders/PullFunctionBuilder.java | 2 +- .../builders/RandomFunctionBuilder.java | 2 +- .../builders/RecursionsFunctionBuilder.java | 2 +- .../builders/SetMarkFunctionBuilder.java | 2 +- .../script/builders/StateFunctionBuilder.java | 2 +- .../builders/StructureFunctionBuilder.java | 2 +- .../builders/UnaryBooleanFunctionBuilder.java | 4 +- .../builders/UnaryNumberFunctionBuilder.java | 4 +- .../builders/UnaryStringFunctionBuilder.java | 4 +- .../builders/ZeroArgFunctionBuilder.java | 4 +- .../script/functions/BiomeFunction.java | 4 +- .../script/functions/BlockFunction.java | 7 +- .../script/functions/CheckBlockFunction.java | 4 +- .../script/functions/EntityFunction.java | 7 +- .../script/functions/GetMarkFunction.java | 7 +- .../script/functions/LootFunction.java | 10 +- .../script/functions/PullFunction.java | 7 +- .../script/functions/RandomFunction.java | 4 +- .../script/functions/RecursionsFunction.java | 2 +- .../script/functions/SetMarkFunction.java | 10 +- .../script/functions/StateFunction.java | 7 +- .../script/functions/StructureFunction.java | 7 +- .../java/structure/LookaheadStreamTest.java | 2 +- .../src/test/java/structure/ParserTest.java | 2 +- .../terrascript/check/CheckFunction.java | 2 +- .../check/CheckFunctionBuilder.java | 2 +- .../sampler/ConstantSamplerFunction.java | 2 +- .../terrascript/sampler/SamplerFunction.java | 2 +- .../sampler/SamplerFunctionBuilder.java | 2 +- 96 files changed, 472 insertions(+), 458 deletions(-) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/Char.java (96%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer/Tokenizer.java => lexer/Lexer.java} (64%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/LookaheadStream.java (98%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/SourcePosition.java (90%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/Token.java (66%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/exceptions/EOFException.java (82%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/exceptions/FormatException.java (82%) rename common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/{tokenizer => lexer}/exceptions/TokenizerException.java (84%) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Char.java similarity index 96% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Char.java index c9a361492..c32bec553 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Char.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Char.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer; +package com.dfsek.terra.addons.terrascript.lexer; public class Char { private final char character; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Lexer.java similarity index 64% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Lexer.java index 36c1d6872..9f5fcb01d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Tokenizer.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Lexer.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer; +package com.dfsek.terra.addons.terrascript.lexer; import com.google.common.collect.Sets; @@ -13,20 +13,21 @@ import java.io.StringReader; import java.util.Set; import java.util.Stack; +import com.dfsek.terra.addons.terrascript.lexer.Token.TokenType; +import com.dfsek.terra.addons.terrascript.lexer.exceptions.EOFException; +import com.dfsek.terra.addons.terrascript.lexer.exceptions.FormatException; +import com.dfsek.terra.addons.terrascript.lexer.exceptions.TokenizerException; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.EOFException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.FormatException; -import com.dfsek.terra.addons.terrascript.tokenizer.exceptions.TokenizerException; -public class Tokenizer { +public class Lexer { public static final Set syntaxSignificant = Sets.newHashSet(';', '(', ')', '"', ',', '\\', '=', '{', '}', '+', '-', '*', '/', '>', '<', '!'); // Reserved chars private final LookaheadStream reader; private final Stack bracketStack = new Stack<>(); private Token current; - public Tokenizer(String data) { + public Lexer(String data) { reader = new LookaheadStream(new StringReader(data + '\0')); current = tokenize(); } @@ -50,7 +51,7 @@ public class Tokenizer { * @throws ParseException If token does not exist */ public Token consume() { - if (current.getType() == Token.Type.END_OF_FILE) return current; + if(current.getType() == TokenType.END_OF_FILE) return current; Token temp = current; current = tokenize(); return temp; @@ -62,7 +63,7 @@ public class Tokenizer { * @return {@code true} if more tokens are present, otherwise {@code false} */ public boolean hasNext() { - return current.getType() != Token.Type.END_OF_FILE; + return current.getType() != TokenType.END_OF_FILE; } private Token tokenize() throws TokenizerException { @@ -76,29 +77,29 @@ public class Tokenizer { // Reached end of file if(reader.current().isEOF()) { - if (!bracketStack.isEmpty()) throw new ParseException("Dangling closing brace", bracketStack.peek().getPosition()); - return new Token(reader.consume().toString(), Token.Type.END_OF_FILE, reader.getPosition()); + if(!bracketStack.isEmpty()) throw new ParseException("Dangling closing brace", bracketStack.peek().getPosition()); + return new Token(reader.consume().toString(), TokenType.END_OF_FILE, reader.getPosition()); } // Check if operator token if(reader.matchesString("==", true)) - return new Token("==", Token.Type.EQUALS_OPERATOR, reader.getPosition()); + return new Token("==", TokenType.EQUALS_OPERATOR, reader.getPosition()); if(reader.matchesString("!=", true)) - return new Token("!=", Token.Type.NOT_EQUALS_OPERATOR, reader.getPosition()); + return new Token("!=", TokenType.NOT_EQUALS_OPERATOR, reader.getPosition()); if(reader.matchesString(">=", true)) - return new Token(">=", Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR, reader.getPosition()); + return new Token(">=", TokenType.GREATER_THAN_OR_EQUALS_OPERATOR, reader.getPosition()); if(reader.matchesString("<=", true)) - return new Token("<=", Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, reader.getPosition()); + return new Token("<=", TokenType.LESS_THAN_OR_EQUALS_OPERATOR, reader.getPosition()); if(reader.matchesString(">", true)) - return new Token(">", Token.Type.GREATER_THAN_OPERATOR, reader.getPosition()); + return new Token(">", TokenType.GREATER_THAN_OPERATOR, reader.getPosition()); if(reader.matchesString("<", true)) - return new Token("<", Token.Type.LESS_THAN_OPERATOR, reader.getPosition()); + return new Token("<", TokenType.LESS_THAN_OPERATOR, reader.getPosition()); // Check if logical operator if(reader.matchesString("||", true)) - return new Token("||", Token.Type.BOOLEAN_OR, reader.getPosition()); + return new Token("||", TokenType.BOOLEAN_OR, reader.getPosition()); if(reader.matchesString("&&", true)) - return new Token("&&", Token.Type.BOOLEAN_AND, reader.getPosition()); + return new Token("&&", TokenType.BOOLEAN_AND, reader.getPosition()); // Check if number if(isNumberStart()) { @@ -106,7 +107,7 @@ public class Tokenizer { while(!reader.current().isEOF() && isNumberLike()) { num.append(reader.consume()); } - return new Token(num.toString(), Token.Type.NUMBER, reader.getPosition()); + return new Token(num.toString(), TokenType.NUMBER, reader.getPosition()); } // Check if string literal @@ -126,45 +127,45 @@ public class Tokenizer { } reader.consume(); // Consume last quote - return new Token(string.toString(), Token.Type.STRING, reader.getPosition()); + return new Token(string.toString(), TokenType.STRING, reader.getPosition()); } if(reader.current().is('(')) - return new Token(reader.consume().toString(), Token.Type.GROUP_BEGIN, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.GROUP_BEGIN, reader.getPosition()); if(reader.current().is(')')) - return new Token(reader.consume().toString(), Token.Type.GROUP_END, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.GROUP_END, reader.getPosition()); if(reader.current().is(';')) - return new Token(reader.consume().toString(), Token.Type.STATEMENT_END, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.STATEMENT_END, reader.getPosition()); if(reader.current().is(',')) - return new Token(reader.consume().toString(), Token.Type.SEPARATOR, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.SEPARATOR, reader.getPosition()); if(reader.current().is('{')) { - Token token = new Token(reader.consume().toString(), Token.Type.BLOCK_BEGIN, reader.getPosition()); + Token token = new Token(reader.consume().toString(), TokenType.BLOCK_BEGIN, reader.getPosition()); bracketStack.push(token); return token; } if(reader.current().is('}')) { if(bracketStack.isEmpty()) throw new ParseException("Dangling opening brace", new SourcePosition(0, 0)); bracketStack.pop(); - return new Token(reader.consume().toString(), Token.Type.BLOCK_END, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.BLOCK_END, reader.getPosition()); } if(reader.current().is('=')) - return new Token(reader.consume().toString(), Token.Type.ASSIGNMENT, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.ASSIGNMENT, reader.getPosition()); if(reader.current().is('+')) - return new Token(reader.consume().toString(), Token.Type.ADDITION_OPERATOR, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.ADDITION_OPERATOR, reader.getPosition()); if(reader.current().is('-')) - return new Token(reader.consume().toString(), Token.Type.SUBTRACTION_OPERATOR, + return new Token(reader.consume().toString(), TokenType.SUBTRACTION_OPERATOR, reader.getPosition()); if(reader.current().is('*')) - return new Token(reader.consume().toString(), Token.Type.MULTIPLICATION_OPERATOR, + return new Token(reader.consume().toString(), TokenType.MULTIPLICATION_OPERATOR, reader.getPosition()); if(reader.current().is('/')) - return new Token(reader.consume().toString(), Token.Type.DIVISION_OPERATOR, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.DIVISION_OPERATOR, reader.getPosition()); if(reader.current().is('%')) - return new Token(reader.consume().toString(), Token.Type.MODULO_OPERATOR, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.MODULO_OPERATOR, reader.getPosition()); if(reader.current().is('!')) - return new Token(reader.consume().toString(), Token.Type.BOOLEAN_NOT, reader.getPosition()); + return new Token(reader.consume().toString(), TokenType.BOOLEAN_NOT, reader.getPosition()); // Read word StringBuilder token = new StringBuilder(); @@ -177,39 +178,39 @@ public class Tokenizer { // Check if word is a keyword if(tokenString.equals("true")) - return new Token(tokenString, Token.Type.BOOLEAN, reader.getPosition()); + return new Token(tokenString, TokenType.BOOLEAN, reader.getPosition()); if(tokenString.equals("false")) - return new Token(tokenString, Token.Type.BOOLEAN, reader.getPosition()); + return new Token(tokenString, TokenType.BOOLEAN, reader.getPosition()); if(tokenString.equals("num")) - return new Token(tokenString, Token.Type.TYPE_NUMBER, reader.getPosition()); + return new Token(tokenString, TokenType.TYPE_NUMBER, reader.getPosition()); if(tokenString.equals("str")) - return new Token(tokenString, Token.Type.TYPE_STRING, reader.getPosition()); + return new Token(tokenString, TokenType.TYPE_STRING, reader.getPosition()); if(tokenString.equals("bool")) - return new Token(tokenString, Token.Type.TYPE_BOOLEAN, reader.getPosition()); + return new Token(tokenString, TokenType.TYPE_BOOLEAN, reader.getPosition()); if(tokenString.equals("void")) - return new Token(tokenString, Token.Type.TYPE_VOID, reader.getPosition()); + return new Token(tokenString, TokenType.TYPE_VOID, reader.getPosition()); if(tokenString.equals("if")) - return new Token(tokenString, Token.Type.IF_STATEMENT, reader.getPosition()); + return new Token(tokenString, TokenType.IF_STATEMENT, reader.getPosition()); if(tokenString.equals("else")) - return new Token(tokenString, Token.Type.ELSE, reader.getPosition()); + return new Token(tokenString, TokenType.ELSE, reader.getPosition()); if(tokenString.equals("while")) - return new Token(tokenString, Token.Type.WHILE_LOOP, reader.getPosition()); + return new Token(tokenString, TokenType.WHILE_LOOP, reader.getPosition()); if(tokenString.equals("for")) - return new Token(tokenString, Token.Type.FOR_LOOP, reader.getPosition()); + return new Token(tokenString, TokenType.FOR_LOOP, reader.getPosition()); if(tokenString.equals("return")) - return new Token(tokenString, Token.Type.RETURN, reader.getPosition()); + return new Token(tokenString, TokenType.RETURN, reader.getPosition()); if(tokenString.equals("continue")) - return new Token(tokenString, Token.Type.CONTINUE, reader.getPosition()); + return new Token(tokenString, TokenType.CONTINUE, reader.getPosition()); if(tokenString.equals("break")) - return new Token(tokenString, Token.Type.BREAK, reader.getPosition()); + return new Token(tokenString, TokenType.BREAK, reader.getPosition()); if(tokenString.equals("fail")) - return new Token(tokenString, Token.Type.FAIL, reader.getPosition()); + return new Token(tokenString, TokenType.FAIL, reader.getPosition()); // If not keyword, assume it is an identifier - return new Token(tokenString, Token.Type.IDENTIFIER, reader.getPosition()); + return new Token(tokenString, TokenType.IDENTIFIER, reader.getPosition()); } private void skipLine() { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/LookaheadStream.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/LookaheadStream.java similarity index 98% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/LookaheadStream.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/LookaheadStream.java index 3bea7c769..1a429a05c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/LookaheadStream.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/LookaheadStream.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer; +package com.dfsek.terra.addons.terrascript.lexer; import java.io.IOException; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/SourcePosition.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/SourcePosition.java similarity index 90% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/SourcePosition.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/SourcePosition.java index 269b4027f..1bd5877cf 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/SourcePosition.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/SourcePosition.java @@ -5,7 +5,7 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer; +package com.dfsek.terra.addons.terrascript.lexer; public class SourcePosition { private final int line; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Token.java similarity index 66% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Token.java index 3c841592f..86c3b8855 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/Token.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/Token.java @@ -5,14 +5,14 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer; +package com.dfsek.terra.addons.terrascript.lexer; public class Token { private final String content; - private final Type type; + private final TokenType type; private final SourcePosition start; - public Token(String content, Type type, SourcePosition start) { + public Token(String content, TokenType type, SourcePosition start) { this.content = content; this.type = type; this.start = start; @@ -23,7 +23,7 @@ public class Token { return type + ": '" + content + "'"; } - public Type getType() { + public TokenType getType() { return type; } @@ -36,58 +36,58 @@ public class Token { } public boolean isConstant() { - return this.type.equals(Type.NUMBER) || this.type.equals(Type.STRING) || this.type.equals(Type.BOOLEAN); + return this.type.equals(TokenType.NUMBER) || this.type.equals(TokenType.STRING) || this.type.equals(TokenType.BOOLEAN); } - public boolean isType(Type type) { + public boolean isType(TokenType type) { return type == getType(); } public boolean isBinaryOperator() { - return type.equals(Type.ADDITION_OPERATOR) - || type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.EQUALS_OPERATOR) - || type.equals(Type.NOT_EQUALS_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.BOOLEAN_OR) - || type.equals(Type.BOOLEAN_AND) - || type.equals(Type.MODULO_OPERATOR); + return type.equals(TokenType.ADDITION_OPERATOR) + || type.equals(TokenType.SUBTRACTION_OPERATOR) + || type.equals(TokenType.MULTIPLICATION_OPERATOR) + || type.equals(TokenType.DIVISION_OPERATOR) + || type.equals(TokenType.EQUALS_OPERATOR) + || type.equals(TokenType.NOT_EQUALS_OPERATOR) + || type.equals(TokenType.LESS_THAN_OPERATOR) + || type.equals(TokenType.GREATER_THAN_OPERATOR) + || type.equals(TokenType.LESS_THAN_OR_EQUALS_OPERATOR) + || type.equals(TokenType.GREATER_THAN_OR_EQUALS_OPERATOR) + || type.equals(TokenType.BOOLEAN_OR) + || type.equals(TokenType.BOOLEAN_AND) + || type.equals(TokenType.MODULO_OPERATOR); } public boolean isStrictNumericOperator() { - return type.equals(Type.SUBTRACTION_OPERATOR) - || type.equals(Type.MULTIPLICATION_OPERATOR) - || type.equals(Type.DIVISION_OPERATOR) - || type.equals(Type.GREATER_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OPERATOR) - || type.equals(Type.LESS_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.GREATER_THAN_OR_EQUALS_OPERATOR) - || type.equals(Type.MODULO_OPERATOR); + return type.equals(TokenType.SUBTRACTION_OPERATOR) + || type.equals(TokenType.MULTIPLICATION_OPERATOR) + || type.equals(TokenType.DIVISION_OPERATOR) + || type.equals(TokenType.GREATER_THAN_OPERATOR) + || type.equals(TokenType.LESS_THAN_OPERATOR) + || type.equals(TokenType.LESS_THAN_OR_EQUALS_OPERATOR) + || type.equals(TokenType.GREATER_THAN_OR_EQUALS_OPERATOR) + || type.equals(TokenType.MODULO_OPERATOR); } public boolean isStrictBooleanOperator() { - return type.equals(Type.BOOLEAN_AND) - || type.equals(Type.BOOLEAN_OR); + return type.equals(TokenType.BOOLEAN_AND) + || type.equals(TokenType.BOOLEAN_OR); } public boolean isVariableDeclaration() { - return type.equals(Type.TYPE_STRING) - || type.equals(Type.TYPE_BOOLEAN) - || type.equals(Type.TYPE_NUMBER); + return type.equals(TokenType.TYPE_STRING) + || type.equals(TokenType.TYPE_BOOLEAN) + || type.equals(TokenType.TYPE_NUMBER); } public boolean isControlStructure() { - return type.equals(Type.IF_STATEMENT) - || type.equals(Type.WHILE_LOOP) - || type.equals(Type.FOR_LOOP); + return type.equals(TokenType.IF_STATEMENT) + || type.equals(TokenType.WHILE_LOOP) + || type.equals(TokenType.FOR_LOOP); } - public enum Type { + public enum TokenType { /** * Function identifier or language keyword */ diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/EOFException.java similarity index 82% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/EOFException.java index 72f4d82fc..b10214b1c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/EOFException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/EOFException.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.lexer.exceptions; import java.io.Serial; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public class EOFException extends TokenizerException { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/FormatException.java similarity index 82% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/FormatException.java index 9f2b0d5e0..39dcae08f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/FormatException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/FormatException.java @@ -5,11 +5,11 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.lexer.exceptions; import java.io.Serial; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public class FormatException extends TokenizerException { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/TokenizerException.java similarity index 84% rename from common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java rename to common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/TokenizerException.java index 52b115c16..200aa9a00 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/tokenizer/exceptions/TokenizerException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/lexer/exceptions/TokenizerException.java @@ -5,12 +5,12 @@ * reference the LICENSE file in this module's root directory. */ -package com.dfsek.terra.addons.terrascript.tokenizer.exceptions; +package com.dfsek.terra.addons.terrascript.lexer.exceptions; import java.io.Serial; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class TokenizerException extends ParseException { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java index e8a576bd9..0a046b5ea 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/Parser.java @@ -11,6 +11,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.Lexer; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.Token; +import com.dfsek.terra.addons.terrascript.lexer.Token.TokenType; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Executable; @@ -54,9 +58,6 @@ import com.dfsek.terra.addons.terrascript.parser.lang.variables.assign.VariableA import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.BoolVariableReferenceNode; import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.NumVariableReferenceNode; import com.dfsek.terra.addons.terrascript.parser.lang.variables.reference.StrVariableReferenceNode; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; -import com.dfsek.terra.addons.terrascript.tokenizer.Token; -import com.dfsek.terra.addons.terrascript.tokenizer.Tokenizer; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -77,41 +78,42 @@ public class Parser { * @throws ParseException If parsing fails. */ public Executable parse(ScopeBuilder scopeBuilder) { - return new Executable(parseBlock(new Tokenizer(source), scopeBuilder, ReturnType.VOID), scopeBuilder); + return new Executable(parseBlock(new Lexer(source), scopeBuilder, ReturnType.VOID), scopeBuilder); } - private WhileKeyword parseWhileLoop(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - SourcePosition start = tokenizer.consume().getPosition(); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_BEGIN); + private WhileKeyword parseWhileLoop(Lexer lexer, ScopeBuilder scopeBuilder) { + SourcePosition start = lexer.consume().getPosition(); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_BEGIN); scopeBuilder = scopeBuilder.innerLoopScope(); - Expression condition = parseExpression(tokenizer, true, scopeBuilder); + Expression condition = parseExpression(lexer, true, scopeBuilder); ParserUtil.ensureReturnType(condition, Expression.ReturnType.BOOLEAN); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); - return new WhileKeyword(parseStatementBlock(tokenizer, scopeBuilder, ReturnType.VOID), (Expression) condition, start); // While loop + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); + return new WhileKeyword(parseStatementBlock(lexer, scopeBuilder, ReturnType.VOID), (Expression) condition, + start); // While loop } - private IfKeyword parseIfStatement(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - SourcePosition start = tokenizer.consume().getPosition(); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_BEGIN); - Expression condition = parseExpression(tokenizer, true, scopeBuilder); + private IfKeyword parseIfStatement(Lexer lexer, ScopeBuilder scopeBuilder) { + SourcePosition start = lexer.consume().getPosition(); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_BEGIN); + Expression condition = parseExpression(lexer, true, scopeBuilder); ParserUtil.ensureReturnType(condition, Expression.ReturnType.BOOLEAN); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); Block elseBlock = null; - Block statement = parseStatementBlock(tokenizer, scopeBuilder, ReturnType.VOID); + Block statement = parseStatementBlock(lexer, scopeBuilder, ReturnType.VOID); List, Block>> elseIf = new ArrayList<>(); - while(tokenizer.hasNext() && tokenizer.current().isType(Token.Type.ELSE)) { - tokenizer.consume(); // Consume else. - if(tokenizer.current().isType(Token.Type.IF_STATEMENT)) { - tokenizer.consume(); // Consume if. - Expression elseCondition = parseExpression(tokenizer, true, scopeBuilder); + while(lexer.hasNext() && lexer.current().isType(TokenType.ELSE)) { + lexer.consume(); // Consume else. + if(lexer.current().isType(TokenType.IF_STATEMENT)) { + lexer.consume(); // Consume if. + Expression elseCondition = parseExpression(lexer, true, scopeBuilder); ParserUtil.ensureReturnType(elseCondition, Expression.ReturnType.BOOLEAN); - elseIf.add(Pair.of((Expression) elseCondition, parseStatementBlock(tokenizer, scopeBuilder, ReturnType.VOID))); + elseIf.add(Pair.of((Expression) elseCondition, parseStatementBlock(lexer, scopeBuilder, ReturnType.VOID))); } else { - elseBlock = parseStatementBlock(tokenizer, scopeBuilder, ReturnType.VOID); + elseBlock = parseStatementBlock(lexer, scopeBuilder, ReturnType.VOID); break; // Else must be last. } } @@ -119,74 +121,75 @@ public class Parser { return new IfKeyword(statement, (Expression) condition, elseIf, elseBlock, start); // If statement } - private Block parseStatementBlock(Tokenizer tokenizer, ScopeBuilder scopeBuilder, ReturnType blockReturnType) { - if(tokenizer.current().isType(Token.Type.BLOCK_BEGIN)) { - ParserUtil.ensureType(tokenizer.consume(), Token.Type.BLOCK_BEGIN); - Block block = parseBlock(tokenizer, scopeBuilder, blockReturnType); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.BLOCK_END); + private Block parseStatementBlock(Lexer lexer, ScopeBuilder scopeBuilder, ReturnType blockReturnType) { + if(lexer.current().isType(TokenType.BLOCK_BEGIN)) { + ParserUtil.ensureType(lexer.consume(), TokenType.BLOCK_BEGIN); + Block block = parseBlock(lexer, scopeBuilder, blockReturnType); + ParserUtil.ensureType(lexer.consume(), TokenType.BLOCK_END); return block; } else { - SourcePosition position = tokenizer.current().getPosition(); - return new Block(Collections.singletonList(parseStatement(tokenizer, scopeBuilder)), position, blockReturnType); + SourcePosition position = lexer.current().getPosition(); + return new Block(Collections.singletonList(parseStatement(lexer, scopeBuilder)), position, blockReturnType); } } - private ForKeyword parseForLoop(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - SourcePosition start = tokenizer.consume().getPosition(); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_BEGIN); + private ForKeyword parseForLoop(Lexer lexer, ScopeBuilder scopeBuilder) { + SourcePosition start = lexer.consume().getPosition(); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_BEGIN); scopeBuilder = scopeBuilder.innerLoopScope(); // new scope - Token f = tokenizer.current(); - ParserUtil.ensureType(f, Token.Type.TYPE_NUMBER, Token.Type.TYPE_STRING, Token.Type.TYPE_BOOLEAN, Token.Type.IDENTIFIER); + Token f = lexer.current(); + ParserUtil.ensureType(f, TokenType.TYPE_NUMBER, TokenType.TYPE_STRING, TokenType.TYPE_BOOLEAN, TokenType.IDENTIFIER); Expression initializer; if(f.isVariableDeclaration()) { - Expression forVar = parseDeclaration(tokenizer, scopeBuilder); - Token name = tokenizer.current(); + Expression forVar = parseDeclaration(lexer, scopeBuilder); + Token name = lexer.current(); if(scopeBuilder.containsFunction(name.getContent()) || scopeBuilder.contains(name.getContent())) throw new ParseException(name.getContent() + " is already defined in this scope", name.getPosition()); initializer = forVar; - } else initializer = parseExpression(tokenizer, true, scopeBuilder); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END); - Expression conditional = parseExpression(tokenizer, true, scopeBuilder); + } else initializer = parseExpression(lexer, true, scopeBuilder); + ParserUtil.ensureType(lexer.consume(), TokenType.STATEMENT_END); + Expression conditional = parseExpression(lexer, true, scopeBuilder); ParserUtil.ensureReturnType(conditional, Expression.ReturnType.BOOLEAN); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END); + ParserUtil.ensureType(lexer.consume(), TokenType.STATEMENT_END); Expression incrementer; - Token token = tokenizer.current(); + Token token = lexer.current(); if(scopeBuilder.contains(token.getContent())) { // Assume variable assignment - incrementer = parseAssignment(tokenizer, scopeBuilder); - } else incrementer = parseFunctionInvocation(tokenizer, true, scopeBuilder); + incrementer = parseAssignment(lexer, scopeBuilder); + } else incrementer = parseFunctionInvocation(lexer, true, scopeBuilder); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); - return new ForKeyword(parseStatementBlock(tokenizer, scopeBuilder, ReturnType.VOID), initializer, (Expression) conditional, incrementer, + return new ForKeyword(parseStatementBlock(lexer, scopeBuilder, ReturnType.VOID), initializer, (Expression) conditional, + incrementer, start); } - private Expression parseExpression(Tokenizer tokenizer, boolean full, ScopeBuilder scopeBuilder) { + private Expression parseExpression(Lexer lexer, boolean full, ScopeBuilder scopeBuilder) { boolean booleanInverted = false; // Check for boolean not operator boolean negate = false; - if(tokenizer.current().isType(Token.Type.BOOLEAN_NOT)) { + if(lexer.current().isType(TokenType.BOOLEAN_NOT)) { booleanInverted = true; - tokenizer.consume(); - } else if(tokenizer.current().isType(Token.Type.SUBTRACTION_OPERATOR)) { + lexer.consume(); + } else if(lexer.current().isType(TokenType.SUBTRACTION_OPERATOR)) { negate = true; - tokenizer.consume(); + lexer.consume(); } - Token id = tokenizer.current(); + Token id = lexer.current(); - ParserUtil.ensureType(id, Token.Type.IDENTIFIER, Token.Type.BOOLEAN, Token.Type.STRING, Token.Type.NUMBER, Token.Type.GROUP_BEGIN); + ParserUtil.ensureType(id, TokenType.IDENTIFIER, TokenType.BOOLEAN, TokenType.STRING, TokenType.NUMBER, TokenType.GROUP_BEGIN); Expression expression; if(id.isConstant()) { - expression = parseConstantExpression(tokenizer); - } else if(id.isType(Token.Type.GROUP_BEGIN)) { // Parse grouped expression - expression = parseExpressionGroup(tokenizer, scopeBuilder); + expression = parseConstantExpression(lexer); + } else if(id.isType(TokenType.GROUP_BEGIN)) { // Parse grouped expression + expression = parseExpressionGroup(lexer, scopeBuilder); } else { if(scopeBuilder.containsFunction(id.getContent())) - expression = parseFunctionInvocation(tokenizer, false, scopeBuilder); + expression = parseFunctionInvocation(lexer, false, scopeBuilder); else if(scopeBuilder.contains(id.getContent())) { - ParserUtil.ensureType(tokenizer.consume(), Token.Type.IDENTIFIER); + ParserUtil.ensureType(lexer.consume(), TokenType.IDENTIFIER); String varId = id.getContent(); ReturnType varType = scopeBuilder.getType(varId); expression = switch(varType) { @@ -207,14 +210,14 @@ public class Parser { expression = new NegationOperation((Expression) expression, expression.getPosition()); } - if(full && tokenizer.current().isBinaryOperator()) { // Parse binary operations - return parseBinaryOperation(expression, tokenizer, scopeBuilder); + if(full && lexer.current().isBinaryOperator()) { // Parse binary operations + return parseBinaryOperation(expression, lexer, scopeBuilder); } return expression; } - private ConstantExpression parseConstantExpression(Tokenizer tokenizer) { - Token constantToken = tokenizer.consume(); + private ConstantExpression parseConstantExpression(Lexer lexer) { + Token constantToken = lexer.consume(); SourcePosition position = constantToken.getPosition(); return switch(constantToken.getType()) { case NUMBER -> { @@ -223,31 +226,32 @@ public class Parser { } case STRING -> new StringConstant(constantToken.getContent(), position); case BOOLEAN -> new BooleanConstant(Boolean.parseBoolean(constantToken.getContent()), position); - default -> throw new UnsupportedOperationException("Unsupported constant token: " + constantToken.getType() + " at position: " + position); + default -> throw new UnsupportedOperationException( + "Unsupported constant token: " + constantToken.getType() + " at position: " + position); }; } - private Expression parseExpressionGroup(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_BEGIN); - Expression expression = parseExpression(tokenizer, true, scopeBuilder); // Parse inside of group as a separate expression - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); + private Expression parseExpressionGroup(Lexer lexer, ScopeBuilder scopeBuilder) { + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_BEGIN); + Expression expression = parseExpression(lexer, true, scopeBuilder); // Parse inside of group as a separate expression + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); return expression; } - private BinaryOperation parseBinaryOperation(Expression left, Tokenizer tokenizer, + private BinaryOperation parseBinaryOperation(Expression left, Lexer lexer, ScopeBuilder scopeBuilder) { - Token binaryOperator = tokenizer.consume(); + Token binaryOperator = lexer.consume(); ParserUtil.checkBinaryOperator(binaryOperator); - Expression right = parseExpression(tokenizer, false, scopeBuilder); + Expression right = parseExpression(lexer, false, scopeBuilder); - Token other = tokenizer.current(); + Token other = lexer.current(); if(ParserUtil.hasPrecedence(binaryOperator.getType(), other.getType())) - return assemble(left, parseBinaryOperation(right, tokenizer, scopeBuilder), binaryOperator); - + return assemble(left, parseBinaryOperation(right, lexer, scopeBuilder), binaryOperator); + if(other.isBinaryOperator()) - return parseBinaryOperation(assemble(left, right, binaryOperator), tokenizer, scopeBuilder); + return parseBinaryOperation(assemble(left, right, binaryOperator), lexer, scopeBuilder); return assemble(left, right, binaryOperator); } @@ -292,43 +296,46 @@ public class Parser { } } - private Expression parseDeclaration(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - Token type = tokenizer.consume(); + private Expression parseDeclaration(Lexer lexer, ScopeBuilder scopeBuilder) { + Token type = lexer.consume(); - Token identifier = tokenizer.consume(); - ParserUtil.ensureType(identifier, Token.Type.IDENTIFIER); + Token identifier = lexer.consume(); + ParserUtil.ensureType(identifier, TokenType.IDENTIFIER); - Token declarationType = tokenizer.consume(); - ParserUtil.ensureType(declarationType, Token.Type.ASSIGNMENT, Token.Type.GROUP_BEGIN); + Token declarationType = lexer.consume(); + ParserUtil.ensureType(declarationType, TokenType.ASSIGNMENT, TokenType.GROUP_BEGIN); return switch(declarationType.getType()) { - case ASSIGNMENT -> parseVariableDeclaration(tokenizer, scopeBuilder, type, identifier); - case GROUP_BEGIN -> parseFunctionDeclaration(tokenizer, scopeBuilder, type, identifier); + case ASSIGNMENT -> parseVariableDeclaration(lexer, scopeBuilder, type, identifier); + case GROUP_BEGIN -> parseFunctionDeclaration(lexer, scopeBuilder, type, identifier); default -> throw new ParseException("Illegal type for declaration: " + type, declarationType.getPosition()); }; } - private Expression parseVariableDeclaration(Tokenizer tokenizer, ScopeBuilder scopeBuilder, Token type, Token identifier) { - ParserUtil.ensureType(type, Token.Type.TYPE_STRING, Token.Type.TYPE_BOOLEAN, Token.Type.TYPE_NUMBER); + private Expression parseVariableDeclaration(Lexer lexer, ScopeBuilder scopeBuilder, Token type, Token identifier) { + ParserUtil.ensureType(type, TokenType.TYPE_STRING, TokenType.TYPE_BOOLEAN, TokenType.TYPE_NUMBER); if(scopeBuilder.contains(identifier.getContent())) throw new ParseException(identifier.getContent() + " is already defined in this scope", identifier.getPosition()); - Expression value = parseExpression(tokenizer, true, scopeBuilder); + Expression value = parseExpression(lexer, true, scopeBuilder); ParserUtil.ensureReturnType(value, ParserUtil.getVariableReturnType(type)); String variableName = identifier.getContent(); return switch(value.returnType()) { - case NUMBER -> new NumAssignmentNode((Expression) value, identifier.getPosition(), scopeBuilder.declareNum(variableName)); - case STRING -> new StrAssignmentNode((Expression) value, identifier.getPosition(), scopeBuilder.declareStr(variableName)); - case BOOLEAN -> new BoolAssignmentNode((Expression) value, identifier.getPosition(), scopeBuilder.declareBool(variableName)); + case NUMBER -> new NumAssignmentNode((Expression) value, identifier.getPosition(), + scopeBuilder.declareNum(variableName)); + case STRING -> new StrAssignmentNode((Expression) value, identifier.getPosition(), + scopeBuilder.declareStr(variableName)); + case BOOLEAN -> new BoolAssignmentNode((Expression) value, identifier.getPosition(), + scopeBuilder.declareBool(variableName)); default -> throw new ParseException("Illegal type for variable declaration: " + type, value.getPosition()); }; } - private Expression parseFunctionDeclaration(Tokenizer tokenizer, ScopeBuilder scopeBuilder, Token type, Token identifier) { - ParserUtil.ensureType(type, Token.Type.TYPE_STRING, Token.Type.TYPE_BOOLEAN, Token.Type.TYPE_NUMBER, Token.Type.TYPE_VOID); + private Expression parseFunctionDeclaration(Lexer lexer, ScopeBuilder scopeBuilder, Token type, Token identifier) { + ParserUtil.ensureType(type, TokenType.TYPE_STRING, TokenType.TYPE_BOOLEAN, TokenType.TYPE_NUMBER, TokenType.TYPE_VOID); if(scopeBuilder.contains(identifier.getContent())) throw new ParseException(identifier.getContent() + " is already defined in this scope", identifier.getPosition()); @@ -338,14 +345,15 @@ public class Parser { ScopeBuilder functionBodyScope = scopeBuilder.functionScope(); // Declare argument names into function body scope - List> argumentInfo = getFunctionArgumentsDeclaration(tokenizer).stream().map(arg -> Pair.of(switch(arg.getRight()) { - case NUMBER -> functionBodyScope.declareNum(arg.getLeft()); - case BOOLEAN -> functionBodyScope.declareBool(arg.getLeft()); - case STRING -> functionBodyScope.declareStr(arg.getLeft()); - default -> throw new IllegalArgumentException("Unsupported argument type: " + arg.getRight()); - }, arg.getRight())).toList(); + List> argumentInfo = getFunctionArgumentsDeclaration(lexer).stream().map( + arg -> Pair.of(switch(arg.getRight()) { + case NUMBER -> functionBodyScope.declareNum(arg.getLeft()); + case BOOLEAN -> functionBodyScope.declareBool(arg.getLeft()); + case STRING -> functionBodyScope.declareStr(arg.getLeft()); + default -> throw new IllegalArgumentException("Unsupported argument type: " + arg.getRight()); + }, arg.getRight())).toList(); - Block body = parseStatementBlock(tokenizer, functionBodyScope, returnType); + Block body = parseStatementBlock(lexer, functionBodyScope, returnType); FunctionBuilder functionBuilder = new UserDefinedFunctionBuilder<>(returnType, argumentInfo, body, functionBodyScope); @@ -353,104 +361,109 @@ public class Parser { return Expression.NOOP; } - private List> getFunctionArgumentsDeclaration(Tokenizer tokenizer) { + private List> getFunctionArgumentsDeclaration(Lexer lexer) { List> arguments = new ArrayList<>(); - while (tokenizer.current().getType() != Token.Type.GROUP_END) { + while(lexer.current().getType() != TokenType.GROUP_END) { // Parse argument type - Token typeToken = tokenizer.consume(); - ParserUtil.ensureType(typeToken, Token.Type.TYPE_BOOLEAN, Token.Type.TYPE_STRING, Token.Type.TYPE_NUMBER); + Token typeToken = lexer.consume(); + ParserUtil.ensureType(typeToken, TokenType.TYPE_BOOLEAN, TokenType.TYPE_STRING, TokenType.TYPE_NUMBER); ReturnType argType = ParserUtil.getVariableReturnType(typeToken); // Parse argument name - Token identifierToken = tokenizer.consume(); - ParserUtil.ensureType(identifierToken, Token.Type.IDENTIFIER); + Token identifierToken = lexer.consume(); + ParserUtil.ensureType(identifierToken, TokenType.IDENTIFIER); String argName = identifierToken.getContent(); arguments.add(Pair.of(argName, argType)); // Consume separator if present, trailing separators are allowed - if (tokenizer.current().isType(Token.Type.SEPARATOR)) tokenizer.consume(); + if(lexer.current().isType(TokenType.SEPARATOR)) lexer.consume(); } - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); return arguments; } - private Block parseBlock(Tokenizer tokenizer, ScopeBuilder scopeBuilder, ReturnType blockReturnType) { + private Block parseBlock(Lexer lexer, ScopeBuilder scopeBuilder, ReturnType blockReturnType) { List> expressions = new ArrayList<>(); scopeBuilder = scopeBuilder.innerScope(); - SourcePosition startPosition = tokenizer.current().getPosition(); + SourcePosition startPosition = lexer.current().getPosition(); boolean hasReturn = false; // Parse each statement - while(tokenizer.hasNext()) { - Token token = tokenizer.current(); - if(token.isType(Token.Type.BLOCK_END)) break; // Stop parsing at block end. - Expression expression = parseStatement(tokenizer, scopeBuilder); + while(lexer.hasNext()) { + Token token = lexer.current(); + if(token.isType(TokenType.BLOCK_END)) break; // Stop parsing at block end. + Expression expression = parseStatement(lexer, scopeBuilder); if(expression != Expression.NOOP) { expressions.add(expression); } if(expression instanceof ReturnKeyword returnKeyword) { hasReturn = true; - if (returnKeyword.dataReturnType() != blockReturnType) - throw new ParseException("Invalid return type, expected " + blockReturnType + ", found " + returnKeyword.dataReturnType(), expression.getPosition()); + if(returnKeyword.dataReturnType() != blockReturnType) + throw new ParseException( + "Invalid return type, expected " + blockReturnType + ", found " + returnKeyword.dataReturnType(), + expression.getPosition()); } } - if (blockReturnType != ReturnType.VOID && !hasReturn) + if(blockReturnType != ReturnType.VOID && !hasReturn) throw new ParseException("Block does not contain a return statement, must return type " + blockReturnType, startPosition); return new Block(expressions, startPosition, blockReturnType); } - private Expression parseStatement(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - Token token = tokenizer.current(); + private Expression parseStatement(Lexer lexer, ScopeBuilder scopeBuilder) { + Token token = lexer.current(); // Include BREAK and CONTINUE as valid token types if scope is within a loop - if(scopeBuilder.isInLoop()) ParserUtil.ensureType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.TYPE_NUMBER, Token.Type.TYPE_STRING, Token.Type.TYPE_BOOLEAN, Token.Type.TYPE_VOID, - Token.Type.RETURN, Token.Type.BREAK, Token.Type.CONTINUE, Token.Type.FAIL); - else ParserUtil.ensureType(token, Token.Type.IDENTIFIER, Token.Type.IF_STATEMENT, Token.Type.WHILE_LOOP, Token.Type.FOR_LOOP, - Token.Type.TYPE_NUMBER, Token.Type.TYPE_STRING, Token.Type.TYPE_BOOLEAN, Token.Type.TYPE_VOID, Token.Type.RETURN, - Token.Type.FAIL); + if(scopeBuilder.isInLoop()) ParserUtil.ensureType(token, TokenType.IDENTIFIER, TokenType.IF_STATEMENT, TokenType.WHILE_LOOP, + TokenType.FOR_LOOP, + TokenType.TYPE_NUMBER, TokenType.TYPE_STRING, TokenType.TYPE_BOOLEAN, + TokenType.TYPE_VOID, + TokenType.RETURN, TokenType.BREAK, TokenType.CONTINUE, TokenType.FAIL); + else ParserUtil.ensureType(token, TokenType.IDENTIFIER, TokenType.IF_STATEMENT, TokenType.WHILE_LOOP, TokenType.FOR_LOOP, + TokenType.TYPE_NUMBER, TokenType.TYPE_STRING, TokenType.TYPE_BOOLEAN, TokenType.TYPE_VOID, + TokenType.RETURN, + TokenType.FAIL); Expression expression = switch(token.getType()) { - case FOR_LOOP -> parseForLoop(tokenizer, scopeBuilder); - case IF_STATEMENT -> parseIfStatement(tokenizer, scopeBuilder); - case WHILE_LOOP -> parseWhileLoop(tokenizer, scopeBuilder); + case FOR_LOOP -> parseForLoop(lexer, scopeBuilder); + case IF_STATEMENT -> parseIfStatement(lexer, scopeBuilder); + case WHILE_LOOP -> parseWhileLoop(lexer, scopeBuilder); case IDENTIFIER -> { - if(scopeBuilder.contains(token.getContent())) yield parseAssignment(tokenizer, scopeBuilder); // Assume variable assignment - else yield parseFunctionInvocation(tokenizer, true, scopeBuilder); + if(scopeBuilder.contains(token.getContent())) yield parseAssignment(lexer, scopeBuilder); // Assume variable assignment + else yield parseFunctionInvocation(lexer, true, scopeBuilder); } - case TYPE_NUMBER, TYPE_STRING, TYPE_BOOLEAN, TYPE_VOID -> parseDeclaration(tokenizer, scopeBuilder); - case RETURN -> parseReturn(tokenizer, scopeBuilder); - case BREAK -> new BreakKeyword(tokenizer.consume().getPosition()); - case CONTINUE -> new ContinueKeyword(tokenizer.consume().getPosition()); - case FAIL -> new FailKeyword(tokenizer.consume().getPosition()); + case TYPE_NUMBER, TYPE_STRING, TYPE_BOOLEAN, TYPE_VOID -> parseDeclaration(lexer, scopeBuilder); + case RETURN -> parseReturn(lexer, scopeBuilder); + case BREAK -> new BreakKeyword(lexer.consume().getPosition()); + case CONTINUE -> new ContinueKeyword(lexer.consume().getPosition()); + case FAIL -> new FailKeyword(lexer.consume().getPosition()); default -> throw new UnsupportedOperationException("Unexpected token " + token.getType() + ": " + token.getPosition()); }; - if(!token.isControlStructure() && expression != Expression.NOOP) ParserUtil.ensureType(tokenizer.consume(), Token.Type.STATEMENT_END); + if(!token.isControlStructure() && expression != Expression.NOOP) ParserUtil.ensureType(lexer.consume(), TokenType.STATEMENT_END); return expression; } - private ReturnKeyword parseReturn(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - Token returnToken = tokenizer.consume(); - ParserUtil.ensureType(returnToken, Token.Type.RETURN); + private ReturnKeyword parseReturn(Lexer lexer, ScopeBuilder scopeBuilder) { + Token returnToken = lexer.consume(); + ParserUtil.ensureType(returnToken, TokenType.RETURN); Expression data = null; - if (!tokenizer.current().isType(Token.Type.STATEMENT_END)) { - data = parseExpression(tokenizer, true, scopeBuilder); + if(!lexer.current().isType(TokenType.STATEMENT_END)) { + data = parseExpression(lexer, true, scopeBuilder); } return new ReturnKeyword(data, returnToken.getPosition()); } - private VariableAssignmentNode parseAssignment(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { - Token identifier = tokenizer.consume(); + private VariableAssignmentNode parseAssignment(Lexer lexer, ScopeBuilder scopeBuilder) { + Token identifier = lexer.consume(); - ParserUtil.ensureType(identifier, Token.Type.IDENTIFIER); + ParserUtil.ensureType(identifier, TokenType.IDENTIFIER); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.ASSIGNMENT); + ParserUtil.ensureType(lexer.consume(), TokenType.ASSIGNMENT); - Expression value = parseExpression(tokenizer, true, scopeBuilder); + Expression value = parseExpression(lexer, true, scopeBuilder); String id = identifier.getContent(); @@ -466,20 +479,20 @@ public class Parser { }; } - private Expression parseFunctionInvocation(Tokenizer tokenizer, boolean fullStatement, ScopeBuilder scopeBuilder) { - Token identifier = tokenizer.consume(); - ParserUtil.ensureType(identifier, Token.Type.IDENTIFIER); // First token must be identifier + private Expression parseFunctionInvocation(Lexer lexer, boolean fullStatement, ScopeBuilder scopeBuilder) { + Token identifier = lexer.consume(); + ParserUtil.ensureType(identifier, TokenType.IDENTIFIER); // First token must be identifier if(!scopeBuilder.containsFunction(identifier.getContent())) throw new ParseException("Function \"" + identifier.getContent() + "\" is not defined in this scope", identifier.getPosition()); - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_BEGIN); // Second is body begin + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_BEGIN); // Second is body begin - List> args = getFunctionArgs(tokenizer, scopeBuilder); // Extract arguments, consume the rest. + List> args = getFunctionArgs(lexer, scopeBuilder); // Extract arguments, consume the rest. - ParserUtil.ensureType(tokenizer.consume(), Token.Type.GROUP_END); // Remove body end + ParserUtil.ensureType(lexer.consume(), TokenType.GROUP_END); // Remove body end - if(fullStatement) ParserUtil.ensureType(tokenizer.current(), Token.Type.STATEMENT_END); + if(fullStatement) ParserUtil.ensureType(lexer.current(), TokenType.STATEMENT_END); if(ignoredFunctions.contains(identifier.getContent())) { return Expression.NOOP; @@ -503,13 +516,13 @@ public class Parser { throw new UnsupportedOperationException("Unsupported function: " + identifier.getContent()); } - private List> getFunctionArgs(Tokenizer tokenizer, ScopeBuilder scopeBuilder) { + private List> getFunctionArgs(Lexer lexer, ScopeBuilder scopeBuilder) { List> args = new ArrayList<>(); - while(!tokenizer.current().isType(Token.Type.GROUP_END)) { - args.add(parseExpression(tokenizer, true, scopeBuilder)); - ParserUtil.ensureType(tokenizer.current(), Token.Type.SEPARATOR, Token.Type.GROUP_END); - if(tokenizer.current().isType(Token.Type.SEPARATOR)) tokenizer.consume(); + while(!lexer.current().isType(TokenType.GROUP_END)) { + args.add(parseExpression(lexer, true, scopeBuilder)); + ParserUtil.ensureType(lexer.current(), TokenType.SEPARATOR, TokenType.GROUP_END); + if(lexer.current().isType(TokenType.SEPARATOR)) lexer.consume(); } return args; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java index 03b8ef262..d79559067 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/ParserUtil.java @@ -12,47 +12,48 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.dfsek.terra.addons.terrascript.lexer.Token; +import com.dfsek.terra.addons.terrascript.lexer.Token.TokenType; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.Token; public class ParserUtil { - private static final Map> PRECEDENCE = new HashMap<>(); // If second has precedence, true. - private static final List ARITHMETIC = Arrays.asList(Token.Type.ADDITION_OPERATOR, Token.Type.SUBTRACTION_OPERATOR, - Token.Type.MULTIPLICATION_OPERATOR, Token.Type.DIVISION_OPERATOR, - Token.Type.MODULO_OPERATOR); - private static final List COMPARISON = Arrays.asList(Token.Type.EQUALS_OPERATOR, Token.Type.NOT_EQUALS_OPERATOR, - Token.Type.LESS_THAN_OPERATOR, Token.Type.LESS_THAN_OR_EQUALS_OPERATOR, - Token.Type.GREATER_THAN_OPERATOR, - Token.Type.GREATER_THAN_OR_EQUALS_OPERATOR); + private static final Map> PRECEDENCE = new HashMap<>(); // If second has precedence, true. + private static final List ARITHMETIC = Arrays.asList(TokenType.ADDITION_OPERATOR, TokenType.SUBTRACTION_OPERATOR, + TokenType.MULTIPLICATION_OPERATOR, TokenType.DIVISION_OPERATOR, + TokenType.MODULO_OPERATOR); + private static final List COMPARISON = Arrays.asList(TokenType.EQUALS_OPERATOR, TokenType.NOT_EQUALS_OPERATOR, + TokenType.LESS_THAN_OPERATOR, TokenType.LESS_THAN_OR_EQUALS_OPERATOR, + TokenType.GREATER_THAN_OPERATOR, + TokenType.GREATER_THAN_OR_EQUALS_OPERATOR); static { // Setup precedence - Map add = new HashMap<>(); // Addition/subtraction before Multiplication/division. - add.put(Token.Type.MULTIPLICATION_OPERATOR, true); - add.put(Token.Type.DIVISION_OPERATOR, true); + Map add = new HashMap<>(); // Addition/subtraction before Multiplication/division. + add.put(TokenType.MULTIPLICATION_OPERATOR, true); + add.put(TokenType.DIVISION_OPERATOR, true); - PRECEDENCE.put(Token.Type.ADDITION_OPERATOR, add); - PRECEDENCE.put(Token.Type.SUBTRACTION_OPERATOR, add); + PRECEDENCE.put(TokenType.ADDITION_OPERATOR, add); + PRECEDENCE.put(TokenType.SUBTRACTION_OPERATOR, add); - Map numericBoolean = new HashMap<>(); + Map numericBoolean = new HashMap<>(); ARITHMETIC.forEach(op -> numericBoolean.put(op, true)); // Numbers before comparison COMPARISON.forEach(op -> PRECEDENCE.put(op, numericBoolean)); - Map booleanOps = new HashMap<>(); + Map booleanOps = new HashMap<>(); ARITHMETIC.forEach(op -> booleanOps.put(op, true)); // Everything before boolean COMPARISON.forEach(op -> booleanOps.put(op, true)); - PRECEDENCE.put(Token.Type.BOOLEAN_AND, booleanOps); - PRECEDENCE.put(Token.Type.BOOLEAN_OR, booleanOps); + PRECEDENCE.put(TokenType.BOOLEAN_AND, booleanOps); + PRECEDENCE.put(TokenType.BOOLEAN_OR, booleanOps); } - public static void ensureType(Token token, Token.Type... expected) { - for(Token.Type type : expected) if(token.getType().equals(type)) return; + public static void ensureType(Token token, TokenType... expected) { + for(TokenType type : expected) if(token.getType().equals(type)) return; throw new ParseException("Expected " + Arrays.toString(expected) + " but found " + token.getType(), token.getPosition()); } @@ -77,13 +78,6 @@ public class ParserUtil { } } - public static void checkVarType(Token token, Expression.ReturnType returnType) { - if(returnType.equals(Expression.ReturnType.STRING) && token.getType().equals(Token.Type.TYPE_STRING)) return; - if(returnType.equals(Expression.ReturnType.NUMBER) && token.getType().equals(Token.Type.TYPE_NUMBER)) return; - if(returnType.equals(Expression.ReturnType.BOOLEAN) && token.getType().equals(Token.Type.TYPE_BOOLEAN)) return; - throw new ParseException("Type mismatch, cannot convert from " + returnType + " to " + token.getType(), token.getPosition()); - } - /** * Checks if token is a binary operator * @@ -107,9 +101,9 @@ public class ParserUtil { }; } - public static boolean hasPrecedence(Token.Type first, Token.Type second) { + public static boolean hasPrecedence(TokenType first, TokenType second) { if(!PRECEDENCE.containsKey(first)) return false; - Map pre = PRECEDENCE.get(first); + Map pre = PRECEDENCE.get(first); if(!pre.containsKey(second)) return false; return pre.get(second); } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java index e1a7d9902..da788864e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/exceptions/ParseException.java @@ -9,7 +9,7 @@ package com.dfsek.terra.addons.terrascript.parser.exceptions; import java.io.Serial; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public class ParseException extends RuntimeException { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java index fae90f49f..f174d4ede 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Block.java @@ -9,9 +9,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class Block implements Expression> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Executable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Executable.java index c7831ae61..154e5747b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Executable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Executable.java @@ -7,12 +7,12 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Scope.ScopeBuilder; public class Executable { private final Block script; private final ThreadLocal scope; - + public Executable(Block script, ScopeBuilder scopeBuilder) { this.script = script; this.scope = ThreadLocal.withInitial(scopeBuilder::build); } - + public boolean execute(ImplementationArguments arguments) { return script.evaluate(arguments, scope.get()).level() != Block.EvaluationLevel.FAIL; } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Expression.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Expression.java index 9e8820a9f..c4d7dc239 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Expression.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Expression.java @@ -7,24 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public interface Expression { - ReturnType returnType(); - - T evaluate(ImplementationArguments implementationArguments, Scope scope); - - default double applyDouble(ImplementationArguments implementationArguments, Scope scope) { - throw new UnsupportedOperationException("Cannot apply " + this + " as double"); - } - - default boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { - throw new UnsupportedOperationException("Cannot apply " + this + " as double"); - } - - SourcePosition getPosition(); - Expression NOOP = new Expression<>() { @Override public ReturnType returnType() { @@ -42,6 +28,21 @@ public interface Expression { } }; + ReturnType returnType(); + + T evaluate(ImplementationArguments implementationArguments, Scope scope); + + default double applyDouble(ImplementationArguments implementationArguments, Scope scope) { + throw new UnsupportedOperationException("Cannot apply " + this + " as double"); + } + + default boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { + throw new UnsupportedOperationException("Cannot apply " + this + " as double"); + } + + SourcePosition getPosition(); + + enum ReturnType { NUMBER(true), STRING(true), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java index 57126b1bf..84447cea1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/Scope.java @@ -1,15 +1,14 @@ package com.dfsek.terra.addons.terrascript.parser.lang; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; -import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; - import net.jafama.FastMath; import java.util.HashMap; import java.util.Map; import com.dfsek.terra.addons.terrascript.parser.lang.Expression.ReturnType; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; +import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.api.util.generic.pair.Pair; @@ -87,7 +86,7 @@ public class Scope { public ScopeBuilder innerLoopScope() { return new ScopeBuilder(this, true); } - public ScopeBuilder functionScope() { return new ScopeBuilder(functions); } + public ScopeBuilder functionScope() { return new ScopeBuilder(functions); } public ScopeBuilder registerFunction(String name, FunctionBuilder> functionBuilder) { functions.put(name, functionBuilder); @@ -143,14 +142,14 @@ public class Scope { parent.updateBoolSize(size); } } - + private void updateNumSize(int size) { this.numSize = FastMath.max(numSize, size); if(parent != null) { parent.updateNumSize(size); } } - + private void updateStrSize(int size) { this.strSize = FastMath.max(strSize, size); if(parent != null) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java index adabeb05b..98fc49823 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/BooleanConstant.java @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BooleanConstant extends ConstantExpression { private final boolean constant; - + public BooleanConstant(Boolean constant, SourcePosition position) { super(constant, position); this.constant = constant; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java index 47a7376c8..70877d551 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/ConstantExpression.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class ConstantExpression implements Expression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java index 5548ebc6b..4713dd323 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/NumericConstant.java @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NumericConstant extends ConstantExpression { private final double constant; - + public NumericConstant(Number constant, SourcePosition position) { super(constant, position); this.constant = constant.doubleValue(); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java index d27f4977c..89edc0b27 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/constants/StringConstant.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.constants; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class StringConstant extends ConstantExpression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java index d25b31510..f1970ff1a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/Function.java @@ -7,10 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; + public interface Function extends Expression { @Override diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java index 327ec7513..345b86528 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/FunctionBuilder.java @@ -9,8 +9,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public interface FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/UserDefinedFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/UserDefinedFunctionBuilder.java index 061cec7a7..24849dd57 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/UserDefinedFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/functions/UserDefinedFunctionBuilder.java @@ -1,16 +1,16 @@ package com.dfsek.terra.addons.terrascript.parser.lang.functions; +import java.util.List; + +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Expression.ReturnType; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.Scope.ScopeBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.generic.pair.Pair; -import java.util.List; - public class UserDefinedFunctionBuilder> implements FunctionBuilder { @@ -19,7 +19,8 @@ public class UserDefinedFunctionBuilder> implements Functi private final ScopeBuilder bodyScopeBuilder; private final Block body; - public UserDefinedFunctionBuilder(ReturnType returnType, List> argumentInfo, Block body, ScopeBuilder functionBodyScope) { + public UserDefinedFunctionBuilder(ReturnType returnType, List> argumentInfo, Block body, + ScopeBuilder functionBodyScope) { this.returnType = returnType; this.bodyScopeBuilder = functionBodyScope; this.body = body; @@ -30,7 +31,7 @@ public class UserDefinedFunctionBuilder> implements Functi public T build(List> argumentList, SourcePosition position) { //noinspection unchecked return (T) new Function() { - + private final ThreadLocal threadLocalScope = ThreadLocal.withInitial(bodyScopeBuilder::build); @Override @@ -42,7 +43,7 @@ public class UserDefinedFunctionBuilder> implements Functi public Object evaluate(ImplementationArguments implementationArguments, Scope scope) { Scope bodyScope = threadLocalScope.get(); // Pass arguments into scope of function body - for (int i = 0; i < argumentList.size(); i++) { + for(int i = 0; i < argumentList.size(); i++) { Pair argInfo = argumentInfo.get(i); Expression argExpression = argumentList.get(i); switch(argInfo.getRight()) { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java index 355a988df..be1d66c7b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/BreakKeyword.java @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BreakKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java index 5ee52af54..fe35c95e5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ContinueKeyword.java @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class ContinueKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java index 94a7c402f..e50c9de18 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/FailKeyword.java @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class FailKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java index 05b56858b..1d86bf84f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/flow/ReturnKeyword.java @@ -7,15 +7,15 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.flow; +import javax.annotation.Nullable; + +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; - -import javax.annotation.Nullable; public class ReturnKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java index baa4cdb2a..adc83c369 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/ForKeyword.java @@ -7,13 +7,13 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; +import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class ForKeyword implements Keyword> { @@ -23,7 +23,8 @@ public class ForKeyword implements Keyword> { private final Expression incrementer; private final SourcePosition position; - public ForKeyword(Block conditional, Expression initializer, Expression statement, Expression incrementer, SourcePosition position) { + public ForKeyword(Block conditional, Expression initializer, Expression statement, Expression incrementer, + SourcePosition position) { this.conditional = conditional; this.initializer = initializer; this.statement = statement; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java index b97c9736a..8fe1287c6 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/IfKeyword.java @@ -7,18 +7,17 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; -import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; - import org.jetbrains.annotations.Nullable; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block; +import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; +import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.generic.pair.Pair; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java index fcf9f47f9..fbdc3c8a9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/keywords/looplike/WhileKeyword.java @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.terrascript.parser.lang.keywords.looplike; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Block; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationInfo; import com.dfsek.terra.addons.terrascript.parser.lang.Block.EvaluationLevel; +import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Keyword; -import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class WhileKeyword implements Keyword> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java index be897014c..f915029b8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BinaryOperation.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class BinaryOperation implements Expression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java index 4fe865a3c..a607794f5 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanAndOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BooleanAndOperation extends BinaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java index 3d25d58b6..15fb390ce 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanNotOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BooleanNotOperation extends UnaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java index 96fb141f6..5a9fac555 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/BooleanOrOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BooleanOrOperation extends BinaryOperation { @@ -27,7 +27,7 @@ public class BooleanOrOperation extends BinaryOperation { public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyBoolean(implementationArguments, scope) || right.applyBoolean(implementationArguments, scope); } - + @Override public ReturnType returnType() { return ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java index e4cfe509e..518ef130c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ConcatenationOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class ConcatenationOperation extends BinaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java index 2e4255b64..84bcfb5b7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/DivisionOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class DivisionOperation extends BinaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java index 215d05e46..500fdd256 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/ModuloOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class ModuloOperation extends BinaryOperation { @@ -27,7 +27,7 @@ public class ModuloOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) % right.applyDouble(implementationArguments, scope); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java index 5cbbbbbaf..553926a0a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/MultiplicationOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class MultiplicationOperation extends BinaryOperation { @@ -27,7 +27,7 @@ public class MultiplicationOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) * right.applyDouble(implementationArguments, scope); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java index b6bd0e9a3..0ce4443d2 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NegationOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NegationOperation extends UnaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java index c58d2464a..7c8bc5d0c 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/NumberAdditionOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NumberAdditionOperation extends BinaryOperation { @@ -27,7 +27,7 @@ public class NumberAdditionOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) + right.applyDouble(implementationArguments, scope); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java index 106993239..bdd5c5615 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/SubtractionOperation.java @@ -7,10 +7,10 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class SubtractionOperation extends BinaryOperation { @@ -27,7 +27,7 @@ public class SubtractionOperation extends BinaryOperation { public double applyDouble(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) - right.applyDouble(implementationArguments, scope); } - + @Override public ReturnType returnType() { return ReturnType.NUMBER; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java index a6c92f315..f7032382a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/UnaryOperation.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class UnaryOperation implements Expression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java index fb03a31df..fe1e9e8ea 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/EqualsStatement.java @@ -9,11 +9,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import static com.dfsek.terra.api.util.MathUtil.EPSILON; @@ -42,7 +42,7 @@ public class EqualsStatement extends BinaryOperation { if(leftValue instanceof Number l && rightValue instanceof Number r) { return FastMath.abs(l.doubleValue() - r.doubleValue()) <= EPSILON; } - + return leftValue.equals(rightValue); } } diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java index f26e3757a..2bb2b45c1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterOrEqualsThanStatement.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class GreaterOrEqualsThanStatement extends BinaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java index e30b12bd0..948683275 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/GreaterThanStatement.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class GreaterThanStatement extends BinaryOperation { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java index c3b4f2581..0c8d8aa69 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanOrEqualsStatement.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class LessThanOrEqualsStatement extends BinaryOperation { @@ -29,7 +29,7 @@ public class LessThanOrEqualsStatement extends BinaryOperation public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) <= right.applyDouble(implementationArguments, scope); } - + @Override public Expression.ReturnType returnType() { return Expression.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java index 94490e04b..cea97f682 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/LessThanStatement.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class LessThanStatement extends BinaryOperation { @@ -29,7 +29,7 @@ public class LessThanStatement extends BinaryOperation { public boolean applyBoolean(ImplementationArguments implementationArguments, Scope scope) { return left.applyDouble(implementationArguments, scope) < right.applyDouble(implementationArguments, scope); } - + @Override public Expression.ReturnType returnType() { return Expression.ReturnType.BOOLEAN; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java index d5dd2c90b..5d10209fd 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/operations/statements/NotEqualsStatement.java @@ -9,11 +9,11 @@ package com.dfsek.terra.addons.terrascript.parser.lang.operations.statements; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.operations.BinaryOperation; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import static com.dfsek.terra.api.util.MathUtil.EPSILON; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java index 2c7fe1dfe..681c55cad 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/BooleanVariable.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BooleanVariable implements Variable { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java index 1e0c8f30d..c51b1d5c0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/NumberVariable.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NumberVariable implements Variable { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java index fcafa08cc..04990cbc4 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/StringVariable.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class StringVariable implements Variable { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java index 53844ed5b..dc2ad5eea 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/Variable.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public interface Variable { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/BoolAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/BoolAssignmentNode.java index 09068ca06..e30ab0375 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/BoolAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/BoolAssignmentNode.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BoolAssignmentNode extends VariableAssignmentNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java index 5eb3b450e..9e423ccd1 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/NumAssignmentNode.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NumAssignmentNode extends VariableAssignmentNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/StrAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/StrAssignmentNode.java index fe203d791..2650622f0 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/StrAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/StrAssignmentNode.java @@ -1,9 +1,9 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class StrAssignmentNode extends VariableAssignmentNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java index a42b75e4e..eddf45461 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/assign/VariableAssignmentNode.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.assign; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class VariableAssignmentNode implements Expression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/BoolVariableReferenceNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/BoolVariableReferenceNode.java index 6b0b212b1..20ef61bae 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/BoolVariableReferenceNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/BoolVariableReferenceNode.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.reference; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BoolVariableReferenceNode extends VariableReferenceNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/NumVariableReferenceNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/NumVariableReferenceNode.java index 287708cb3..946d29c02 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/NumVariableReferenceNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/NumVariableReferenceNode.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.reference; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class NumVariableReferenceNode extends VariableReferenceNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/StrVariableReferenceNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/StrVariableReferenceNode.java index 3babc57d7..66aa63d9b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/StrVariableReferenceNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/StrVariableReferenceNode.java @@ -1,8 +1,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.reference; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class StrVariableReferenceNode extends VariableReferenceNode { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java index de5b919e5..9272dd554 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/parser/lang/variables/reference/VariableReferenceNode.java @@ -7,8 +7,8 @@ package com.dfsek.terra.addons.terrascript.parser.lang.variables.reference; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public abstract class VariableReferenceNode implements Expression { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java index 6d7eee265..815af1f1d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/StructureScript.java @@ -7,10 +7,6 @@ package com.dfsek.terra.addons.terrascript.script; -import com.dfsek.terra.addons.terrascript.parser.lang.Scope; - -import com.dfsek.terra.addons.terrascript.parser.lang.Scope.ScopeBuilder; - import net.jafama.FastMath; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; @@ -24,6 +20,7 @@ import java.util.Random; import com.dfsek.terra.addons.terrascript.parser.Parser; import com.dfsek.terra.addons.terrascript.parser.lang.Executable; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.Scope.ScopeBuilder; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.builders.BinaryNumberFunctionBuilder; import com.dfsek.terra.addons.terrascript.script.builders.BiomeFunctionBuilder; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java index 5543d337a..284764053 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BinaryNumberFunctionBuilder.java @@ -10,12 +10,12 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; import java.util.function.BiFunction; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class BinaryNumberFunctionBuilder implements FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java index 71a62a158..23c489b5a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BiomeFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BiomeFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java index 834cab341..fe6377bb8 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/BlockFunctionBuilder.java @@ -9,13 +9,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.constants.BooleanConstant; import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.BlockFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java index 7a28ca5da..ca0b56427 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/CheckBlockFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.CheckBlockFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class CheckBlockFunctionBuilder implements FunctionBuilder { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java index 3d81d7e52..fba747650 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/EntityFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.EntityFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java index 54dffc9bc..59ec8804f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/GetMarkFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.GetMarkFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class GetMarkFunctionBuilder implements FunctionBuilder { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java index dbc0a0ac5..500491021 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/LootFunctionBuilder.java @@ -9,11 +9,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.functions.LootFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.LootTable; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java index c5cda97a0..3e7dd6f7e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/PullFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.PullFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java index 1e5142d05..72fa5338e 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RandomFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.RandomFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class RandomFunctionBuilder implements FunctionBuilder { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java index 1d6ae90cc..9aad77048 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/RecursionsFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.RecursionsFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class RecursionsFunctionBuilder implements FunctionBuilder { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java index 2977cafe9..490ef8ffc 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/SetMarkFunctionBuilder.java @@ -9,10 +9,10 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.SetMarkFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class SetMarkFunctionBuilder implements FunctionBuilder { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java index a59a7462f..7b4e193c7 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StateFunctionBuilder.java @@ -9,11 +9,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StateFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java index 71b5262b6..a464a3f2d 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/StructureFunctionBuilder.java @@ -10,11 +10,11 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; import java.util.stream.Collectors; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.functions.StructureFunction; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java index 2d784df59..47ba20d53 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryBooleanFunctionBuilder.java @@ -10,13 +10,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; import java.util.function.BiConsumer; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class UnaryBooleanFunctionBuilder implements FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java index 4de5199ae..66d023ffe 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryNumberFunctionBuilder.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class UnaryNumberFunctionBuilder implements FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java index 6f266c28e..331faee33 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/UnaryStringFunctionBuilder.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class UnaryStringFunctionBuilder implements FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java index a6a81cc84..3618d5597 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/builders/ZeroArgFunctionBuilder.java @@ -9,13 +9,13 @@ package com.dfsek.terra.addons.terrascript.script.builders; import java.util.List; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class ZeroArgFunctionBuilder implements FunctionBuilder> { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java index ea3e5b82e..77341776b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BiomeFunction.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java index fa7a5c75e..9299177f9 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/BlockFunction.java @@ -14,13 +14,13 @@ import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; @@ -69,7 +69,8 @@ public class BlockFunction implements Function { void setBlock(ImplementationArguments implementationArguments, Scope scope, TerraImplementationArguments arguments, BlockState rot) { Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); try { Vector3.Mutable set = Vector3.of(FastMath.roundToInt(xz.getX()), y.evaluate(implementationArguments, scope).doubleValue(), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java index ad383a63c..c61c038ff 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/CheckBlockFunction.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java index 0261010d6..a168d3a36 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/EntityFunction.java @@ -7,14 +7,14 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.entity.Entity; import com.dfsek.terra.api.entity.EntityType; @@ -46,7 +46,8 @@ public class EntityFunction implements Function { public Void evaluate(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); Entity entity = arguments.getWorld().spawnEntity(Vector3.of(xz.getX(), y.evaluate(implementationArguments, scope).doubleValue(), xz.getZ()) diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java index 230aa2125..042f82a0f 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/GetMarkFunction.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; @@ -35,7 +35,8 @@ public class GetMarkFunction implements Function { public String evaluate(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); String mark = arguments.getMark(Vector3.of(FastMath.floorToInt(xz.getX()), FastMath.floorToInt( y.evaluate(implementationArguments, scope).doubleValue()), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java index eeae70e9d..04f8f49de 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/LootFunction.java @@ -13,13 +13,13 @@ import org.slf4j.LoggerFactory; import java.util.Random; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.block.entity.Container; @@ -70,7 +70,7 @@ public class LootFunction implements Function { y.evaluate(implementationArguments, scope) .intValue(), FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()).immutable(); - + try { BlockEntity data = arguments.getWorld().getBlockEntity(apply); if(!(data instanceof Container container)) { @@ -78,12 +78,12 @@ public class LootFunction implements Function { apply, data); return; } - + LootPopulateEvent event = new LootPopulateEvent(container, table, arguments.getWorld().getPack(), script); platform.getEventManager().callEvent(event); if(event.isCancelled()) return; - + event.getTable().fillInventory(container.getInventory(), new Random(apply.hashCode())); data.update(false); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java index db79330ac..ebcde348b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/PullFunction.java @@ -9,14 +9,14 @@ package com.dfsek.terra.addons.terrascript.script.functions; import net.jafama.FastMath; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.exceptions.ParseException; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.constants.ConstantExpression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.block.state.BlockState; import com.dfsek.terra.api.util.RotationUtil; @@ -44,7 +44,8 @@ public class PullFunction implements Function { public Void evaluate(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); Vector3.Mutable mutable = Vector3.of(FastMath.roundToInt(xz.getX()), y.evaluate(implementationArguments, scope).intValue(), FastMath.roundToInt(xz.getZ())).mutable().add(arguments.getOrigin()); diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java index 0d08f0a9a..d1ed7d26b 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RandomFunction.java @@ -7,12 +7,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class RandomFunction implements Function { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java index 098265399..de6d1e030 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/RecursionsFunction.java @@ -7,11 +7,11 @@ package com.dfsek.terra.addons.terrascript.script.functions; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; public class RecursionsFunction implements Function { diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java index 5f3e2346e..373b5f727 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/SetMarkFunction.java @@ -9,12 +9,12 @@ package com.dfsek.terra.addons.terrascript.script.functions; import net.jafama.FastMath; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; @@ -25,7 +25,8 @@ public class SetMarkFunction implements Function { private final SourcePosition position; private final Expression mark; - public SetMarkFunction(Expression x, Expression y, Expression z, Expression mark, SourcePosition position) { + public SetMarkFunction(Expression x, Expression y, Expression z, Expression mark, + SourcePosition position) { this.position = position; this.mark = mark; this.x = x; @@ -37,7 +38,8 @@ public class SetMarkFunction implements Function { public Void evaluate(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); arguments.setMark(Vector3.of(FastMath.floorToInt(xz.getX()), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java index b938fe12f..ffa69b338 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StateFunction.java @@ -11,12 +11,12 @@ import net.jafama.FastMath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.block.entity.BlockEntity; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; @@ -42,7 +42,8 @@ public class StateFunction implements Function { public Void evaluate(ImplementationArguments implementationArguments, Scope scope) { TerraImplementationArguments arguments = (TerraImplementationArguments) implementationArguments; Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); Vector3 origin = Vector3.of(FastMath.roundToInt(xz.getX()), y.evaluate(implementationArguments, scope).intValue(), diff --git a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java index 8eec96cc3..8effdd60a 100644 --- a/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java +++ b/common/addons/structure-terrascript-loader/src/main/java/com/dfsek/terra/addons/terrascript/script/functions/StructureFunction.java @@ -13,13 +13,13 @@ import org.slf4j.LoggerFactory; import java.util.List; -import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; +import com.dfsek.terra.addons.terrascript.parser.lang.ImplementationArguments; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.StructureScript; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; import com.dfsek.terra.api.Platform; import com.dfsek.terra.api.registry.Registry; import com.dfsek.terra.api.structure.Structure; @@ -62,7 +62,8 @@ public class StructureFunction implements Function { throw new RuntimeException("Structure recursion too deep: " + arguments.getRecursions()); Vector2 xz = RotationUtil.rotateVector(Vector2.of(x.evaluate(implementationArguments, scope).doubleValue(), - z.evaluate(implementationArguments, scope).doubleValue()), arguments.getRotation()); + z.evaluate(implementationArguments, scope).doubleValue()), + arguments.getRotation()); String app = id.evaluate(implementationArguments, scope); diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadStreamTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadStreamTest.java index a1f0ccbbe..3676008e9 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadStreamTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/LookaheadStreamTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.Test; import java.io.StringReader; -import com.dfsek.terra.addons.terrascript.tokenizer.LookaheadStream; +import com.dfsek.terra.addons.terrascript.lexer.LookaheadStream; public class LookaheadStreamTest { diff --git a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java index 7428cabed..f677b04f0 100644 --- a/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java +++ b/common/addons/structure-terrascript-loader/src/test/java/structure/ParserTest.java @@ -26,7 +26,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public class ParserTest { diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java index 89a35c5fd..acbb5da06 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunction.java @@ -16,7 +16,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.api.util.RotationUtil; import com.dfsek.terra.api.util.vector.Vector2; import com.dfsek.terra.api.util.vector.Vector3; diff --git a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunctionBuilder.java b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunctionBuilder.java index e4d20789b..f38ae10ce 100644 --- a/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunctionBuilder.java +++ b/common/addons/terrascript-function-check-noise-3d/src/main/java/com/dfsek/terra/addon/terrascript/check/CheckFunctionBuilder.java @@ -11,7 +11,7 @@ import java.util.List; import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.api.Platform; diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java index 41f9b45ec..d3e241a88 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/ConstantSamplerFunction.java @@ -5,7 +5,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java index d82192a4d..538df8432 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunction.java @@ -7,7 +7,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Expression; import com.dfsek.terra.addons.terrascript.parser.lang.Scope; import com.dfsek.terra.addons.terrascript.parser.lang.functions.Function; import com.dfsek.terra.addons.terrascript.script.TerraImplementationArguments; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; import com.dfsek.terra.api.noise.NoiseSampler; diff --git a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java index 75fe5e1ee..612497450 100644 --- a/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java +++ b/common/addons/terrascript-function-sampler/src/main/java/com/dfsek/terra/addons/terrascript/sampler/SamplerFunctionBuilder.java @@ -11,7 +11,7 @@ import com.dfsek.terra.addons.terrascript.parser.lang.Expression.ReturnType; import com.dfsek.terra.addons.terrascript.parser.lang.constants.NumericConstant; import com.dfsek.terra.addons.terrascript.parser.lang.constants.StringConstant; import com.dfsek.terra.addons.terrascript.parser.lang.functions.FunctionBuilder; -import com.dfsek.terra.addons.terrascript.tokenizer.SourcePosition; +import com.dfsek.terra.addons.terrascript.lexer.SourcePosition; public class SamplerFunctionBuilder implements FunctionBuilder> {