public VisitorFile(OutputModelFactory factory, string fileName)
: base(factory, fileName)
{
Grammar g = factory.GetGrammar();
namedActions = BuildNamedActions(g);
parserName = g.GetRecognizerName();
grammarName = g.name;
foreach (KeyValuePair<string, IList<RuleAST>> entry in g.contextASTs)
{
foreach (RuleAST ruleAST in entry.Value)
{
try
{
IDictionary<string, IList<System.Tuple<int, AltAST>>> labeledAlternatives = g.GetLabeledAlternatives(ruleAST);
visitorNames.UnionWith(labeledAlternatives.Keys);
}
catch (RecognitionException)
{
}
}
}
foreach (Rule r in g.rules.Values)
{
visitorNames.Add(r.GetBaseContext());
}
foreach (Rule r in g.rules.Values)
{
IDictionary<string, IList<System.Tuple<int, AltAST>>> labels = r.GetAltLabels();
if (labels != null)
{
foreach (KeyValuePair<string, IList<System.Tuple<int, AltAST>>> pair in labels)
{
visitorLabelRuleNames[pair.Key] = r.name;
}
}
}
ActionAST ast;
if (g.namedActions.TryGetValue("header", out ast) && ast != null)
header = new Action(factory, ast);
genPackage = factory.GetGrammar().tool.genPackage;
exportMacro = factory.GetGrammar().GetOptionString("exportMacro");
}
}