groovy git commit: Minor refactoring: compilationUnit
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: sunlanAuthored: Thu Oct 5 16:30:37 2017 +0800 Committer: sunlan 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 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 implements Groov } @Override +public List visitStatements(StatementsContext ctx) { +if (!asBoolean(ctx)) { +return Collections.emptyList(); +} + +List 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);
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: sunlanAuthored: Thu Oct 5 16:11:48 2017 +0800 Committer: sunlan 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 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 implements Groov } @Override +public List 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);