This is an automated email from the ASF dual-hosted git repository. colegreer pushed a commit to branch TINKERPOP-3236 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
commit a0e0ff9e327c66d27021c1d652641e34f2ae8e0c Author: Cole Greer <[email protected]> AuthorDate: Tue Mar 17 09:44:04 2026 -0700 [TINKERPOP-3236] Expand grammar argument types for coin and pagerank steps to numericArgument --- CHANGELOG.asciidoc | 1 + .../tinkerpop/gremlin/language/grammar/ArgumentVisitor.java | 10 +++++----- .../gremlin/language/grammar/DefaultGremlinBaseVisitor.java | 2 +- .../gremlin/language/grammar/GenericLiteralVisitor.java | 4 ++-- .../gremlin/language/grammar/TraversalMethodVisitor.java | 4 ++-- .../gremlin/language/grammar/ArgumentVisitorTest.java | 2 +- gremlin-language/src/main/antlr4/Gremlin.g4 | 8 ++++---- 7 files changed, 16 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index 555e70a604..984c5dd4f4 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -29,6 +29,7 @@ image::https://raw.githubusercontent.com/apache/tinkerpop/master/docs/static/ima * Fixed bug in `SubgraphStrategy` where specifying `edges` and `vertices` filters that had `map`-type steps could generate an error. * Fixed bug in `ReservedKeysVerificationStrategy` where `AddPropertyStep` was not triggering proper validations. * Fixed bug in `mergeE` where `onCreate` validation of invalid static argument overrides did not trigger until traversal runtime. +* Expand grammar argument types for `coin` and `pagerank` steps to `numericArgument` from `floatArgument`. * Added `closeSessionPostGraphOp` to the Gremlin Server settings to indicate that the `Session` should be closed on either a successful commit or rollback. * Added `SessionedChildClient` that borrows connections from a different `Client` for use with `Sessions`. * Added `reuseConnectionsForSessions` to Java GLV settings to decide whether to use `SessionedChildClient` for remote transactions. diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java index a461896fa7..9b7212c638 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitor.java @@ -66,8 +66,8 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> { /** * Wrapper to visit function for float types. */ - public Number parseNumber(final GremlinParser.FloatArgumentContext ctx) { - return (Number) visitFloatArgument(ctx); + public Number parseNumber(final GremlinParser.NumericArgumentContext ctx) { + return (Number) visitNumericArgument(ctx); } /** @@ -240,9 +240,9 @@ public class ArgumentVisitor extends DefaultGremlinBaseVisitor<Object> { } @Override - public Object visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) { - if (ctx.floatLiteral() != null) { - return antlr.genericVisitor.parseFloating(ctx.floatLiteral()); + public Object visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) { + if (ctx.numericLiteral() != null) { + return antlr.genericVisitor.parseNumeric(ctx.numericLiteral()); } else { return visitVariable(ctx.variable()); } diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java index c0432ddd83..3582444ab6 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/DefaultGremlinBaseVisitor.java @@ -1462,7 +1462,7 @@ public class DefaultGremlinBaseVisitor<T> extends AbstractParseTreeVisitor<T> im /** * {@inheritDoc} */ - @Override public T visitFloatArgument(final GremlinParser.FloatArgumentContext ctx) { notImplemented(ctx); return null; } + @Override public T visitNumericArgument(final GremlinParser.NumericArgumentContext ctx) { notImplemented(ctx); return null; } /** * {@inheritDoc} */ diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java index d7f87f298a..a4d5a8b641 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/GenericLiteralVisitor.java @@ -63,8 +63,8 @@ public class GenericLiteralVisitor extends DefaultGremlinBaseVisitor<Object> { /** * Parse floating literal context and return a floating type number. */ - public Number parseFloating(final GremlinParser.FloatLiteralContext floatLiteral) { - return (Number) visitFloatLiteral(floatLiteral); + public Number parseNumeric(final GremlinParser.NumericLiteralContext numericLiteral) { + return (Number) visitNumericLiteral(numericLiteral); } /** diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java index 6dcafe2e65..222af839e3 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/language/grammar/TraversalMethodVisitor.java @@ -443,7 +443,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal> */ @Override public GraphTraversal visitTraversalMethod_coin(final GremlinParser.TraversalMethod_coinContext ctx) { - return graphTraversal.coin(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue()); + return graphTraversal.coin(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue()); } /** @@ -1228,7 +1228,7 @@ public class TraversalMethodVisitor extends TraversalRootVisitor<GraphTraversal> */ @Override public GraphTraversal visitTraversalMethod_pageRank_double(final GremlinParser.TraversalMethod_pageRank_doubleContext ctx) { - return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitFloatArgument(ctx.floatArgument())).doubleValue()); + return graphTraversal.pageRank(((Number) antlr.argumentVisitor.visitNumericArgument(ctx.numericArgument())).doubleValue()); } /** diff --git a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java index 8c2472eebc..4c64c1804d 100644 --- a/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java +++ b/gremlin-core/src/test/java/org/apache/tinkerpop/gremlin/language/grammar/ArgumentVisitorTest.java @@ -178,7 +178,7 @@ public class ArgumentVisitorTest { }); } else if (clazz.equals(Float.class)) { assertParsing(() -> { - final GremlinParser.FloatArgumentContext ctx = parser.floatArgument(); + final GremlinParser.NumericArgumentContext ctx = parser.numericArgument(); return antlrToLanguage.argumentVisitor.parseNumber(ctx); }); } else if (clazz.equals(String.class)) { diff --git a/gremlin-language/src/main/antlr4/Gremlin.g4 b/gremlin-language/src/main/antlr4/Gremlin.g4 index 35a4b934e0..0b7a224790 100644 --- a/gremlin-language/src/main/antlr4/Gremlin.g4 +++ b/gremlin-language/src/main/antlr4/Gremlin.g4 @@ -409,7 +409,7 @@ traversalMethod_coalesce ; traversalMethod_coin - : 'coin' LPAREN floatArgument RPAREN + : 'coin' LPAREN numericArgument RPAREN ; traversalMethod_combine @@ -668,7 +668,7 @@ traversalMethod_outV traversalMethod_pageRank : 'pageRank' LPAREN RPAREN #traversalMethod_pageRank_Empty - | 'pageRank' LPAREN floatArgument RPAREN #traversalMethod_pageRank_double + | 'pageRank' LPAREN numericArgument RPAREN #traversalMethod_pageRank_double ; traversalMethod_path @@ -1486,8 +1486,8 @@ integerArgument | variable ; -floatArgument - : floatLiteral +numericArgument + : numericLiteral | variable ;
