diff --git a/tool/src/org/antlr/v4/codegen/model/ListenerFile.java b/tool/src/org/antlr/v4/codegen/model/ListenerFile.java index 9cd38a5b36..a857ce15dc 100644 --- a/tool/src/org/antlr/v4/codegen/model/ListenerFile.java +++ b/tool/src/org/antlr/v4/codegen/model/ListenerFile.java @@ -12,11 +12,7 @@ import org.antlr.v4.tool.ast.ActionAST; import org.antlr.v4.tool.ast.AltAST; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; /** A model object representing a parse tree listener file. * These are the rules specific events triggered by a parse tree visitor. @@ -61,7 +57,9 @@ public ListenerFile(OutputModelFactory factory, String fileName) { } } ActionAST ast = g.namedActions.get("header"); - if ( ast!=null ) header = new Action(factory, ast); + if ( ast!=null && ast.getScope()==null ) { + header = new Action(factory, ast); + } genPackage = g.tool.genPackage; accessLevel = g.getOptionString("accessLevel"); exportMacro = g.getOptionString("exportMacro"); diff --git a/tool/src/org/antlr/v4/codegen/model/VisitorFile.java b/tool/src/org/antlr/v4/codegen/model/VisitorFile.java index f647d5e168..bdd0758777 100644 --- a/tool/src/org/antlr/v4/codegen/model/VisitorFile.java +++ b/tool/src/org/antlr/v4/codegen/model/VisitorFile.java @@ -12,11 +12,7 @@ import org.antlr.v4.tool.ast.ActionAST; import org.antlr.v4.tool.ast.AltAST; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; public class VisitorFile extends OutputFile { public String genPackage; // from -package cmd-line @@ -41,7 +37,7 @@ public class VisitorFile extends OutputFile { public VisitorFile(OutputModelFactory factory, String fileName) { super(factory, fileName); Grammar g = factory.getGrammar(); - namedActions = buildNamedActions(g); + namedActions = buildNamedActions(g, ast -> ast.getScope()==null); parserName = g.getRecognizerName(); grammarName = g.name; for (Rule r : g.rules.values()) {