You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2017/09/15 15:54:00 UTC
groovy git commit: Refine the grammar: 1)`def` is still required for
performance when declaring tuple;
2)Stop supporting command expression in parentheses
Repository: groovy
Updated Branches:
refs/heads/master a2fe3a5fd -> 7c773923e
Refine the grammar: 1)`def` is still required for performance when declaring tuple; 2)Stop supporting command expression in parentheses
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7c773923
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7c773923
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7c773923
Branch: refs/heads/master
Commit: 7c773923eddfbdf6a4a91e603fd4573927082bf2
Parents: a2fe3a5
Author: sunlan <su...@apache.org>
Authored: Fri Sep 15 23:53:49 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Sep 15 23:53:49 2017 +0800
----------------------------------------------------------------------
src/antlr/GroovyParser.g4 | 7 ++++++-
.../apache/groovy/parser/antlr4/AstBuilder.java | 18 +++++++++++++++++-
.../groovy/parser/antlr4/GroovyParserTest.groovy | 4 +++-
.../core/LocalVariableDeclaration_02x.groovy | 3 +++
4 files changed, 29 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/7c773923/src/antlr/GroovyParser.g4
----------------------------------------------------------------------
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index 009f415..8f8aad3 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -779,7 +779,7 @@ parExpression
;
expressionInPar
- : LPAREN enhancedStatementExpression rparen
+ : LPAREN enhancedExpression rparen
;
expressionList[boolean canSpread]
@@ -915,6 +915,11 @@ expression
enhancedStatementExpression #assignmentExprAlt
;
+enhancedExpression
+ : expression
+ | standardLambdaExpression
+ ;
+
commandExpression
: pathExpression
(
http://git-wip-us.apache.org/repos/asf/groovy/blob/7c773923/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 2f538fa..01f4213 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -1779,6 +1779,22 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
}
@Override
+ public Expression visitEnhancedExpression(EnhancedExpressionContext ctx) {
+ Expression expression;
+
+ if (asBoolean(ctx.expression())) {
+ expression = (Expression) this.visit(ctx.expression());
+ } else if (asBoolean(ctx.standardLambdaExpression())) {
+ expression = this.visitStandardLambdaExpression(ctx.standardLambdaExpression());
+ } else {
+ throw createParsingFailedException("Unsupported enhanced expression: " + ctx.getText(), ctx);
+ }
+
+ return configureAST(expression, ctx);
+ }
+
+
+ @Override
public ExpressionStatement visitCommandExprAlt(CommandExprAltContext ctx) {
return configureAST(new ExpressionStatement(this.visitCommandExpression(ctx.commandExpression())), ctx);
}
@@ -1907,7 +1923,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
@Override
public Expression visitExpressionInPar(ExpressionInParContext ctx) {
- return this.visitEnhancedStatementExpression(ctx.enhancedStatementExpression());
+ return this.visitEnhancedExpression(ctx.enhancedExpression());
}
@Override
http://git-wip-us.apache.org/repos/asf/groovy/blob/7c773923/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
index 84ff8fc..91cd61f 100644
--- a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
+++ b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
@@ -282,6 +282,8 @@ class GroovyParserTest extends GroovyTestCase {
void "test groovy core - LocalVariableDeclaration"() {
doTest('core/LocalVariableDeclaration_01.groovy', [Token]); // [class org.codehaus.groovy.syntax.Token][startLine]:: 9 != 8
+ doRunAndTest('core/LocalVariableDeclaration_02x.groovy')
+
}
void "test groovy core - MethodDeclaration"() {
@@ -331,7 +333,7 @@ class GroovyParserTest extends GroovyTestCase {
doTest('core/Command_03.groovy', [ExpressionStatement, Parameter]);
doTest('core/Command_04.groovy', [ExpressionStatement]);
doTest('core/Command_05.groovy');
- doRunAndTest('core/Command_06x.groovy')
+// doRunAndTest('core/Command_06x.groovy')
}
/*
http://git-wip-us.apache.org/repos/asf/groovy/blob/7c773923/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_02x.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_02x.groovy b/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_02x.groovy
new file mode 100644
index 0000000..1e3a2ba
--- /dev/null
+++ b/subprojects/parser-antlr4/src/test/resources/core/LocalVariableDeclaration_02x.groovy
@@ -0,0 +1,3 @@
+def (int x, int y) = [1, 2]
+assert 1 == x
+assert 2 == y