public virtual void Run()
{
program = new Program(Path.GetFileName(outputFileName), target);
foreach (string reference in references) {
LoadAssembly(reference, false);
}
foreach (string reference in softReferences) {
LoadAssembly(reference, true);
}
foreach (string fileName in inputFiles) {
StreamReader reader = new StreamReader(fileName);
Parser parser = new Parser(program, reader, fileName, report);
parser.Parse();
}
if (report.Errors > 0)
Environment.Exit(1);
ArrayList visitors = new ArrayList();
visitors.Add(new TypeCreatingVisitor(report));
visitors.Add(new TypeElementCreatingVisitor(report));
visitors.Add(new TypeCheckingVisitor(report));
visitors.Add(new CodeGeneratingVisitor(report));
foreach (NodeVisitor visitor in visitors) {
program.Accept(visitor);
if (report.Errors > 0)
Environment.Exit(1);
}
program.Assembly.Save(outputFileName);
}