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