private static String version = Globals.version;
private static String scriptName = Globals.scriptName;
public static void main(String args[]) {
JTBParser parser;
Node root;
try { if ( !processCommandLine(args) ) return; }
catch (InvalidCommandLineException e) {
System.err.println(progName + ": " + e.getMessage());
return;
}
catch (Exception e) { Errors.hardErr(e.getMessage()); }
System.err.println(progName + " version " + version);
System.err.println(progName + ": Reading from " + Globals.inFilename +
"...");
parser = new JTBParser(in);
try {
root = parser.JavaCCInput();
System.err.println(progName + ": Input file parsed successfully.");
//
// Perform actions based on command-line flags
//
ClassGenerator vcg = new ClassGenerator();
Vector list;
FileGenerator gen = null;
Errors.resetCounts();
if ( !Globals.noSemanticCheck ) {
root.accept(new SemanticChecker());
if ( Errors.errorCount() > 0 ) {
Errors.printSummary();
return;
}
}
root.accept(vcg); // create the class list
list = vcg.getClassList();
if ( Errors.errorCount() > 0 ) {
Errors.printSummary();
return;
}
if ( Globals.printGrammarToOut ) root.accept(new Printer(System.out));
if ( Globals.printClassList ) {
gen = new FileGenerator(list);
System.out.println("\nThe classes generated and the fields each " +
"contains are as follows:\n");
gen.printClassList(new PrintWriter(System.out, true));
}
if ( Globals.generateFiles ) {
Annotator annotator;
try {
root.accept(new Annotator());
if ( Errors.errorCount() > 0 ) {
Errors.printSummary();
return;
}
System.err.println(progName + ": \"" + Globals.outFilename +
"\" generated to current directory.");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" + Globals.outFilename +
"\" already exists. Won't overwrite.");
}
if ( gen == null ) {
gen = new FileGenerator(list);
if ( Errors.errorCount() > 0 ) {
Errors.printSummary();
return;
}
}
try { gen.generateAutoClassFiles(); }
catch (FileExistsException e) {
System.err.println(progName + ": One or more of the automatic "+
"node class files already exists. Won't overwrite.");
}
try {
gen.generateClassFiles();
System.err.println(progName + ": Syntax tree Java source " +
"files generated to directory \"" + Globals.nodeDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": One or more of the generated "+
"node class files already exists. Won't overwrite.");
}
System.err.println();
try {
gen.generateVisitorFile();
System.err.println(progName + ": \"" + Globals.GJVisitorName +
".java\" generated " + "to directory \"" +
Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" + Globals.GJVisitorName +
"\" already exists. Won't overwrite.");
}
try {
new OldFileGenerator(list).generateVisitorFile();
System.err.println(progName + ": \"" + Globals.visitorName +
".java\" generated " + "to directory \"" +
Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" + Globals.visitorName +
"\" already exists. Won't overwrite.");
}
try {
new NoArguFileGenerator(list).generateVisitorFile();
System.err.println(progName + ": \"" + Globals.GJNoArguVisitorName +
".java\" generated " + "to directory \"" +
Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" + Globals.GJNoArguVisitorName +
"\" already exists. Won't overwrite.");
}
try {
new VoidFileGenerator(list).generateVisitorFile();
System.err.println(progName + ": \"" + Globals.GJVoidVisitorName +
".java\" generated " + "to directory \"" +
Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" + Globals.GJVoidVisitorName +
"\" already exists. Won't overwrite.");
}
try {
new GJDepthFirstVisitorBuilder(list).generateDepthFirstVisitor();
System.err.println(progName + ": \"" +
GJDepthFirstVisitorBuilder.outFilename + "\" " +
"generated to directory \"" + Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" +
GJDepthFirstVisitorBuilder.outFilename + "\" already exists. "+
"Won't overwrite.");
}
try {
new OldDepthFirstVisitorBuilder(list).generateDepthFirstVisitor();
System.err.println(progName + ": \"" +
OldDepthFirstVisitorBuilder.outFilename + "\" " +
"generated to directory \"" + Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" +
OldDepthFirstVisitorBuilder.outFilename + "\" already exists. "+
"Won't overwrite.");
}
try {
new GJNoArguDepthFirstBuilder(list).generateDepthFirstVisitor();
System.err.println(progName + ": \"" +
GJNoArguDepthFirstBuilder.outFilename + "\" " +
"generated to directory \"" + Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" +
GJNoArguDepthFirstBuilder.outFilename + "\" already exists. "+
"Won't overwrite.");
}
try {
new GJVoidDepthFirstBuilder(list).generateDepthFirstVisitor();
System.err.println(progName + ": \"" +
GJVoidDepthFirstBuilder.outFilename + "\" " +
"generated to directory \"" + Globals.visitorDir + "\".");
}
catch (FileExistsException e) {
System.err.println(progName + ": \"" +
GJDepthFirstVisitorBuilder.outFilename + "\" already exists. "+
"Won't overwrite.");
}
System.err.println();
if ( Globals.schemeToolkit ) {
root.accept(new SchemeSemanticChecker());
if ( Errors.errorCount() > 0 ) {
Errors.printSummary();
return;
}