public virtual void GenerateATNs(Grammar g)
{
DOTGenerator dotGenerator = new DOTGenerator(g);
IList<Grammar> grammars = new List<Grammar>();
grammars.Add(g);
IList<Grammar> imported = g.GetAllImportedGrammars();
if (imported != null)
{
foreach (Grammar importedGrammar in imported)
grammars.Add(importedGrammar);
}
foreach (Grammar ig in grammars)
{
foreach (Rule r in ig.rules.Values)
{
try
{
string dot = dotGenerator.GetDOT(g.atn.ruleToStartState[r.index], g.IsLexer());
if (dot != null)
{
WriteDOTFile(g, r, dot);
}
}
catch (IOException ioe)
{
errMgr.ToolError(ErrorType.CANNOT_WRITE_FILE, ioe);
}
}
}
}