From 77d1317964e5742eaf10c068ed23b1ee982d3ae7 Mon Sep 17 00:00:00 2001 From: TomyLobo Date: Sat, 29 Oct 2011 21:07:31 +0200 Subject: [PATCH] Added support for temporary variables --- .../com/sk89q/worldedit/expression/parser/Parser.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sk89q/worldedit/expression/parser/Parser.java b/src/main/java/com/sk89q/worldedit/expression/parser/Parser.java index 94bc16d93..65413c3d1 100644 --- a/src/main/java/com/sk89q/worldedit/expression/parser/Parser.java +++ b/src/main/java/com/sk89q/worldedit/expression/parser/Parser.java @@ -33,6 +33,7 @@ import com.sk89q.worldedit.expression.lexer.tokens.Token; import com.sk89q.worldedit.expression.runtime.Constant; import com.sk89q.worldedit.expression.runtime.Functions; import com.sk89q.worldedit.expression.runtime.RValue; +import com.sk89q.worldedit.expression.runtime.Variable; /** * Processes a list of tokens into an executable tree. @@ -103,7 +104,12 @@ public class Parser { } else { RValue variable = variables.get(identifierToken.value); if (variable == null) { - throw new ParserException(current.getPosition(), "Variable '" + identifierToken.value + "' not found"); + if (next instanceof OperatorToken && ((OperatorToken)next).operator.equals("=")) { + // Ugly hack to make temporary variables work while not sacrificing error reporting. + variables.put(identifierToken.value, variable = new Variable(0)); + } else { + throw new ParserException(current.getPosition(), "Variable '" + identifierToken.value + "' not found"); + } } halfProcessed.add(variable); }