public virtual IList<string> GetGeneratedFileList()
{
AbstractTarget target = generator.GetTarget();
if (target == null)
{
// if the target could not be loaded, no code will be generated.
return new List<string>();
}
IList<string> files = new List<string>();
// add generated recognizer; e.g., TParser.java
if (generator.GetTarget().NeedsHeader())
{
files.Add(GetOutputFile(generator.GetRecognizerFileName(true)));
}
files.Add(GetOutputFile(generator.GetRecognizerFileName(false)));
// add output vocab file; e.g., T.tokens. This is always generated to
// the base output directory, which will be just . if there is no -o option
//
files.Add(GetOutputFile(generator.GetVocabFileName()));
// are we generating a .h file?
Template headerExtST = null;
Template extST = target.GetTemplates().GetInstanceOf("codeFileExtension");
if (target.GetTemplates().IsDefined("headerFile"))
{
headerExtST = target.GetTemplates().GetInstanceOf("headerFileExtension");
string suffix = Grammar.GetGrammarTypeToFileNameSuffix(g.Type);
string fileName = g.name + suffix + headerExtST.Render();
files.Add(GetOutputFile(fileName));
}
if (g.IsCombined())
{
// add autogenerated lexer; e.g., TLexer.java TLexer.h TLexer.tokens
string suffix = Grammar.GetGrammarTypeToFileNameSuffix(ANTLRParser.LEXER);
string lexer = g.name + suffix + extST.Render();
files.Add(GetOutputFile(lexer));
string lexerTokens = g.name + suffix + CodeGenerator.VOCAB_FILE_EXTENSION;
files.Add(GetOutputFile(lexerTokens));
// TLexer.h
if (headerExtST != null)
{
string header = g.name + suffix + headerExtST.Render();
files.Add(GetOutputFile(header));
}
}
if (g.tool.gen_listener)
{
// add generated listener; e.g., TListener.java
if (generator.GetTarget().NeedsHeader())
{
files.Add(GetOutputFile(generator.GetListenerFileName(true)));
}
files.Add(GetOutputFile(generator.GetListenerFileName(false)));
// add generated base listener; e.g., TBaseListener.java
if (generator.GetTarget().NeedsHeader())
{
files.Add(GetOutputFile(generator.GetBaseListenerFileName(true)));
}
files.Add(GetOutputFile(generator.GetBaseListenerFileName(false)));
}
if (g.tool.gen_visitor)
{
// add generated visitor; e.g., TVisitor.java
if (generator.GetTarget().NeedsHeader())
{
files.Add(GetOutputFile(generator.GetVisitorFileName(true)));
}
files.Add(GetOutputFile(generator.GetVisitorFileName(false)));
// add generated base visitor; e.g., TBaseVisitor.java
if (generator.GetTarget().NeedsHeader())
{
files.Add(GetOutputFile(generator.GetBaseVisitorFileName(true)));
}
files.Add(GetOutputFile(generator.GetBaseVisitorFileName(false)));
}
// handle generated files for imported grammars
IList<Grammar> imports = g.GetAllImportedGrammars();
if (imports != null)
{
foreach (Grammar g in imports)
{
//string outputDir = tool.GetOutputDirectory(g.fileName);
//string fname = GroomQualifiedFileName(outputDir, g.GetRecognizerName() + extST.Render());
//files.Add(Path.Combine(outputDir, fname));
files.Add(GetOutputFile(g.fileName));
}
}
if (files.Count == 0)
{
return null;
}
return files;
}