Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_6_X 444abbf58 -> b6c999d06


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/b6c999d0
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b6c999d0
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b6c999d0

Branch: refs/heads/GROOVY_2_6_X
Commit: b6c999d06529109e0c4a382fb3f1b249201d6431
Parents: 444abbf
Author: sunlan <sun...@apache.org>
Authored: Thu Oct 5 16:30:37 2017 +0800
Committer: sunlan <sun...@apache.org>
Committed: Thu Oct 5 16:30:37 2017 +0800

----------------------------------------------------------------------
 src/antlr/GroovyParser.g4                         |  6 +++++-
 .../apache/groovy/parser/antlr4/AstBuilder.java   | 18 ++++++++++++++++--
 2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/b6c999d0/src/antlr/GroovyParser.g4
----------------------------------------------------------------------
diff --git a/src/antlr/GroovyParser.g4 b/src/antlr/GroovyParser.g4
index 700344b..39f3315 100644
--- a/src/antlr/GroovyParser.g4
+++ b/src/antlr/GroovyParser.g4
@@ -131,7 +131,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/b6c999d0/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 7dfef2a..97eafa0 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
@@ -243,8 +243,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor<Object> implements Groov
     public ModuleNode visitCompilationUnit(CompilationUnitContext ctx) {
         this.visit(ctx.packageDeclaration());
 
-        for (StatementContext s : ctx.statement()) {
-            Object e = this.visit(s);
+        for (ASTNode e : this.visitStatements(ctx.statements())) {
             if (e instanceof DeclarationListStatement) { // local variable 
declaration
                 for (Statement ds : ((DeclarationListStatement) 
e).getDeclarationStatements()) {
                     moduleNode.addStatement(ds);
@@ -277,6 +276,21 @@ public class AstBuilder extends 
GroovyParserBaseVisitor<Object> implements Groov
     }
 
     @Override
+    public List<ASTNode> visitStatements(StatementsContext ctx) {
+        if (!asBoolean(ctx)) {
+            return Collections.emptyList();
+        }
+
+        List<ASTNode> nodeList = new ArrayList<>();
+
+        for (StatementContext statementContext : ctx.statement()) {
+            nodeList.add((ASTNode) this.visit(statementContext));
+        }
+
+        return nodeList;
+    }
+
+    @Override
     public PackageNode visitPackageDeclaration(PackageDeclarationContext ctx) {
         String packageName = this.visitQualifiedName(ctx.qualifiedName());
         moduleNode.setPackageName(packageName + DOT_STR);

Reply via email to