diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-11-22 15:19:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-22 15:19:42 +0100 |
commit | ea7d530c80515724f8384ded392da5b9a3ab3741 (patch) | |
tree | 64d17747179cf40077f1504361413add6be59936 | |
parent | af3ed2033e8c4b9cd999196daf28f8c6eb018534 (diff) | |
parent | 589b52b4f74fc52597b6347abb8ccbc65eeb4f08 (diff) |
Merge pull request #20153 from vespa-engine/revert-20078-balder/upgrade-antlr
Revert "antlr4 4.5 -> 4.9.3"
-rw-r--r-- | cloud-tenant-base-dependencies-enforcer/pom.xml | 2 | ||||
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java | 44 | ||||
-rw-r--r-- | parent/pom.xml | 2 |
3 files changed, 34 insertions, 14 deletions
diff --git a/cloud-tenant-base-dependencies-enforcer/pom.xml b/cloud-tenant-base-dependencies-enforcer/pom.xml index 7113787a715..e2cc7085353 100644 --- a/cloud-tenant-base-dependencies-enforcer/pom.xml +++ b/cloud-tenant-base-dependencies-enforcer/pom.xml @@ -238,7 +238,7 @@ <include>net.java.dev.jna:jna:4.5.2:jar:test</include> <include>org.abego.treelayout:org.abego.treelayout.core:1.0.1:jar:test</include> <include>org.antlr:antlr-runtime:3.5.2:jar:test</include> - <include>org.antlr:antlr4-runtime:4.9.3:jar:test</include> + <include>org.antlr:antlr4-runtime:4.5:jar:test</include> <include>org.apache.commons:commons-exec:1.3:jar:test</include> <include>org.apache.commons:commons-math3:3.6.1:jar:test</include> <include>org.apache.httpcomponents:httpclient:4.5.12:jar:test</include> diff --git a/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java b/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java index d32033249f1..e1e88c83725 100644 --- a/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java +++ b/container-search/src/main/java/com/yahoo/search/yql/ProgramParser.java @@ -65,6 +65,8 @@ import org.antlr.v4.runtime.Recognizer; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.TokenStream; import org.antlr.v4.runtime.atn.PredictionMode; +import org.antlr.v4.runtime.misc.NotNull; +import org.antlr.v4.runtime.misc.Nullable; import org.antlr.v4.runtime.tree.ParseTree; import org.antlr.v4.runtime.tree.RuleNode; import org.antlr.v4.runtime.tree.TerminalNode; @@ -100,12 +102,12 @@ final class ProgramParser { lexer.addErrorListener(new BaseErrorListener() { @Override - public void syntaxError(Recognizer<?, ?> recognizer, - Object offendingSymbol, + public void syntaxError(@NotNull Recognizer<?, ?> recognizer, + @Nullable Object offendingSymbol, int line, int charPositionInLine, - String msg, - RecognitionException e) { + @NotNull String msg, + @Nullable RecognitionException e) { throw new ProgramCompileException(new Location(programName, line, charPositionInLine), "%s", msg); } @@ -117,12 +119,12 @@ final class ProgramParser { parser.addErrorListener(new BaseErrorListener() { @Override - public void syntaxError(Recognizer<?, ?> recognizer, - Object offendingSymbol, + public void syntaxError(@NotNull Recognizer<?, ?> recognizer, + @Nullable Object offendingSymbol, int line, int charPositionInLine, - String msg, - RecognitionException e) { + @NotNull String msg, + @Nullable RecognitionException e) { throw new ProgramCompileException(new Location(programName, line, charPositionInLine), "%s", msg); } @@ -193,6 +195,7 @@ final class ProgramParser { final Scope parent; Set<String> cursors = ImmutableSet.of(); Set<String> variables = ImmutableSet.of(); + Set<String> views = Sets.newHashSet(); Map<String, Binding> bindings = Maps.newHashMap(); final yqlplusParser parser; final String programName; @@ -244,6 +247,13 @@ final class ProgramParser { return variables.contains(name) || (parent != null && parent.isVariable(name)); } + public void bindModule(Location loc, List<String> binding, String symbolName) { + if (isBound(symbolName)) { + throw new ProgramCompileException(loc, "Name '%s' is already used.", symbolName); + } + root.bindings.put(symbolName, new Binding(binding)); + } + public void defineDataSource(Location loc, String name) { if (isCursor(name)) { throw new ProgramCompileException(loc, "Alias '%s' is already used.", name); @@ -265,6 +275,16 @@ final class ProgramParser { } + public void defineView(Location loc, String text) { + if (this != root) { + throw new IllegalStateException("Views MUST be defined in 'root' scope only"); + } + if (views.contains(text)) { + throw new ProgramCompileException(loc, "View '%s' already defined", text); + } + views.add(text); + } + Scope child() { return new Scope(root, this); } @@ -331,8 +351,8 @@ final class ProgramParser { List<Orderby_fieldContext> orderFieds = ((OrderbyContext) child) .orderby_fields().orderby_field(); orderby = Lists.newArrayListWithExpectedSize(orderFieds.size()); - for (var field: orderFieds) { - orderby.add(convertSortKey(field, scope)); + for (int j = 0; j < orderFieds.size(); ++j) { + orderby.add(convertSortKey(orderFieds.get(j), scope)); } break; case yqlplusParser.RULE_limit: @@ -906,8 +926,8 @@ final class ProgramParser { List<String> path = readName((Namespaced_nameContext) parseTree.getChild(0)); Location loc = toLocation(scope, parseTree.getChild(0)); String alias = path.get(0); - OperatorNode<ExpressionOperator> result; - int start; + OperatorNode<ExpressionOperator> result = null; + int start = 0; if (scope.isCursor(alias)) { if (path.size() > 1) { result = OperatorNode.create(loc, ExpressionOperator.READ_FIELD, alias, path.get(1)); diff --git a/parent/pom.xml b/parent/pom.xml index 67f0d25a50d..3b7801e1ffc 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -874,7 +874,7 @@ <aircompressor.version>0.21</aircompressor.version> <airline.version>0.7</airline.version> <antlr.version>3.5.2</antlr.version> - <antlr4.version>4.9.3</antlr4.version> + <antlr4.version>4.5</antlr4.version> <apache.httpclient.version>4.5.13</apache.httpclient.version> <apache.httpcore.version>4.4.13</apache.httpcore.version> <apache.httpclient5.version>5.1.1</apache.httpclient5.version> |