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);