diff --git a/src/main/java/org/apache/commons/jexl3/internal/Engine.java b/src/main/java/org/apache/commons/jexl3/internal/Engine.java index 2aeed16ce..6b78ad4b9 100644 --- a/src/main/java/org/apache/commons/jexl3/internal/Engine.java +++ b/src/main/java/org/apache/commons/jexl3/internal/Engine.java @@ -40,6 +40,7 @@ import org.apache.commons.jexl3.parser.ASTStringLiteral; import org.apache.commons.jexl3.parser.JexlNode; import org.apache.commons.jexl3.parser.Parser; +import org.apache.commons.jexl3.parser.StringProvider; import org.apache.commons.logging.Log; @@ -148,7 +149,7 @@ private UberspectHolder() {} * The {@link Parser}; when parsing expressions, this engine uses the parser if it * is not already in use otherwise it will create a new temporary one. */ - protected final Parser parser = new Parser(";"); //$NON-NLS-1$ + protected final Parser parser = new Parser(new StringProvider(";")); //$NON-NLS-1$ /** * The expression max length to hit the cache. */ @@ -872,7 +873,7 @@ protected ASTJexlScript parse(final JexlInfo info, final JexlFeatures parsingf, } } else { // ...otherwise parser was in use, create a new temporary one - final Parser lparser = new Parser(";"); + final Parser lparser = new Parser(new StringProvider(";")); script = lparser.parse(ninfo, features, src, scope); } if (source != null) { diff --git a/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt b/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt index 8621fba1d..301447212 100644 --- a/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt +++ b/src/main/java/org/apache/commons/jexl3/parser/Parser.jjt @@ -19,7 +19,7 @@ options { MULTI=true; - //STATIC=false; + STATIC=false; JAVA_TEMPLATE_TYPE="modern"; VISITOR=true; NODE_SCOPE_HOOK=true; @@ -454,16 +454,22 @@ Object pragmaValue() #void : { Token v; LinkedList lstr = new LinkedList(); +Object result; } { - LOOKAHEAD(1) v= { return NumberParser.parseInteger(v.image); } - | LOOKAHEAD(1) v= { return NumberParser.parseDouble(v.image); } - | LOOKAHEAD(1) v= { return Parser.buildString(v.image, true); } - | LOOKAHEAD(1) pragmaKey(lstr) { return stringify(lstr); } - | LOOKAHEAD(1) { return true; } - | LOOKAHEAD(1) { return false; } - | LOOKAHEAD(1) { return null; } - | LOOKAHEAD(1) { return Double.NaN; } + ( + LOOKAHEAD(1) v= { result = NumberParser.parseInteger(v.image); } + | LOOKAHEAD(1) v= { result = NumberParser.parseDouble(v.image); } + | LOOKAHEAD(1) v= { result = Parser.buildString(v.image, true); } + | LOOKAHEAD(1) pragmaKey(lstr) { result = stringify(lstr); } + | LOOKAHEAD(1) { result = true; } + | LOOKAHEAD(1) { result = false; } + | LOOKAHEAD(1) { result = null; } + | LOOKAHEAD(1) { result = Double.NaN; } + ) + { + return result; + } }