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/10/05 08:11:56 UTC
groovy git commit: Minor refactoring: compilationUnit
Repository: groovy
Updated Branches:
refs/heads/master 6db885207 -> 196d93272
Minor refactoring: compilationUnit
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/196d9327
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/196d9327
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/196d9327
Branch: refs/heads/master
Commit: 196d9327284cdac1a5dc162181e417afd8454da1
Parents: 6db8852
Author: sunlan <su...@apache.org>
Authored: Thu Oct 5 16:11:48 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Thu Oct 5 16:11:48 2017 +0800
----------------------------------------------------------------------
src/antlr/GroovyParser.g4 | 6 +++++-
.../org/apache/groovy/parser/antlr4/AstBuilder.java | 15 ++++++++++++---
2 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/196d9327/src/antlr/GroovyParser.g4
----------------------------------------------------------------------
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index 23e7e7a..3f92ce4 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -98,7 +98,11 @@ options {
// starting point for parsing a groovy file
compilationUnit
: nls
- (packageDeclaration (sep | EOF))? (statement (sep | EOF))* EOF
+ packageDeclaration? sep? statements? EOF
+ ;
+
+statements
+ : statement (sep statement)* sep?
;
packageDeclaration
http://git-wip-us.apache.org/repos/asf/groovy/blob/196d9327/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 157a5be..6172c68 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
@@ -246,9 +246,7 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
public ModuleNode visitCompilationUnit(CompilationUnitContext ctx) {
this.visit(ctx.packageDeclaration());
- ctx.statement().stream()
- .map(this::visit)
-// .filter(e -> e instanceof Statement)
+ this.visitStatements(ctx.statements())
.forEach(e -> {
if (e instanceof DeclarationListStatement) { // local variable declaration
((DeclarationListStatement) e).getDeclarationStatements().forEach(moduleNode::addStatement);
@@ -280,6 +278,17 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
}
@Override
+ public List<ASTNode> visitStatements(StatementsContext ctx) {
+ if (!asBoolean(ctx)) {
+ return Collections.emptyList();
+ }
+
+ return ctx.statement().stream()
+ .map(e -> (ASTNode) visit(e))
+ .collect(Collectors.toList());
+ }
+
+ @Override
public PackageNode visitPackageDeclaration(PackageDeclarationContext ctx) {
String packageName = this.visitQualifiedName(ctx.qualifiedName());
moduleNode.setPackageName(packageName + DOT_STR);