Changeset 9724 for branches/HeuristicLab.Problems.GPDL/GpdlCompiler
- Timestamp:
- 07/19/13 00:31:12 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Problems.GPDL/GpdlCompiler/Program.cs
r9528 r9724 1 // ATTENTION: Replace all occurences of GpdlCompiler by the compiler name! 2 3 // GpdlCompiler.cs HDO, 2006-08-28 1 // GpdlCompiler.cs HDO, 2006-08-28 4 2 // ----- 5 3 // Main program for compiler generated from GpdlCompiler.atg with Coco-2. … … 7 5 8 6 using System; 9 using System.IO; 10 11 using Lex = GPDefLex; 12 using Syn = GPDefSyn; 7 using HeuristicLab.Problems.GPDL; 13 8 14 9 public class GpdlCompiler { 15 10 16 private static String NAME = "GpdlCompiler";17 private static bool interactiveMode;18 19 private static void Abort(String abortKind, String moduleName,20 String methName, String descr) {21 Console.WriteLine();22 Console.WriteLine("*** {0} in class {1} method {2}",23 abortKind, moduleName, methName);24 Console.WriteLine("*** {0}", descr);25 Console.WriteLine();26 Console.WriteLine();27 Console.WriteLine(NAME + " aborted");28 Utils.Modules(Utils.ModuleAction.cleanupModule);29 if (interactiveMode) {30 Console.Write("type [CR] to quit");31 string dummy = Console.ReadLine();32 } // if33 Environment.Exit(Utils.EXIT_FAILURE);34 } // Abort35 36 private static int CompileFile(String srcFileName) {37 FileStream srcFs = null;38 try {39 srcFs = new FileStream(srcFileName, FileMode.Open);40 }41 catch (Exception) {42 Console.WriteLine("*** file \"{0}\" not found", srcFileName);43 return Utils.EXIT_FAILURE;44 } // try/catch45 try {46 Lex.src = new StreamReader(srcFs);47 Console.WriteLine("parsing ...");48 Syn.Parse();49 Lex.src.Close();50 Lex.src.Dispose();51 Lex.src = null;52 if (Errors.NumOfErrors() > 0) {53 Console.WriteLine("listing ...");54 String lstFileName = Path.ChangeExtension(srcFileName, ".lst");55 FileStream lstFs = null;56 try {57 lstFs = new FileStream(lstFileName, FileMode.Create);58 }59 catch (Exception) {60 Utils.FatalError(NAME, "CompileFile", "file \"{0}\" not created", lstFileName);61 return Utils.EXIT_FAILURE;62 } // try/catch63 StreamWriter lstWriter = null;64 try {65 lstWriter = new StreamWriter(lstFs);66 StreamReader srcFsReader = null;67 try { // open the source file a second time to generate the error listing68 srcFsReader = new StreamReader(new FileStream(srcFileName, FileMode.Open));69 lstWriter.WriteLine(NAME + " (file: \"{0}\")", srcFileName);70 Errors.GenerateListing(srcFsReader, lstWriter, Errors.ListingShape.longListing);71 }72 finally {73 srcFsReader.Close();74 srcFsReader.Dispose();75 } // try/finally76 Console.WriteLine("{0} error(s) detected", Errors.NumOfErrors());77 }78 finally {79 lstWriter.Close();80 lstWriter.Dispose();81 } // try/finally82 } else83 Console.WriteLine("no errors detected");84 }85 finally {86 if (Lex.src != null) {87 Lex.src.Close();88 Lex.src.Dispose();89 Lex.src = null;90 } // if91 Utils.Modules(Utils.ModuleAction.resetModule);92 } // try/finally to make sure srcFs and srcReader are closed93 return Utils.EXIT_SUCCESS;94 } // CompileFile95 96 97 11 public static void Main(String[] args) { 98 12 //-----------------------------------|---------------------------------------- 99 int result = 0; 13 if (args.Length > 0) { 14 Scanner scanner = new Scanner(args[0]); 15 Parser parser = new Parser(scanner); 16 parser.Parse(); 17 } else 18 Console.WriteLine("-- No source file specified"); 19 } 100 20 101 // --- install modules --- 102 Utils.InstallModule("Utils", new Utils.ModuleMethodDelegate(Utils.UtilsMethod)); 103 Utils.InstallModule("Sets", new Utils.ModuleMethodDelegate(Sets.SetsMethod)); 104 Utils.InstallModule("Errors", new Utils.ModuleMethodDelegate(Errors.ErrorsMethod)); 105 106 Utils.InstallModule("GPDefLex", new Utils.ModuleMethodDelegate(GPDefLex.GPDefLexMethod)); 107 Utils.InstallModule("GPDefSem", new Utils.ModuleMethodDelegate(GPDefSem.GPDefSemMethod)); 108 Utils.InstallModule("GPDefSyn", new Utils.ModuleMethodDelegate(GPDefSyn.GPDefSynMethod)); 109 110 // --- initialize modules --- 111 Utils.Modules(Utils.ModuleAction.initModule); 112 113 Errors.PushAbortMethod(new Errors.AbortMethod(Abort)); 114 115 Console.WriteLine("---------------------------"); 116 Console.WriteLine(" {0} Compiler {1," + (5 - NAME.Length) + "} Version X ", NAME, ""); 117 Console.WriteLine(" Frontend gen. with Coco-2"); 118 Console.WriteLine("---------------------------"); 119 Console.WriteLine(); 120 121 if (args.Length > 0) { // command line mode 122 interactiveMode = false; 123 Console.WriteLine(); 124 int i = 0; 125 do { 126 Console.WriteLine("source file \"{0}\"", args[i]); 127 result = CompileFile(args[i]); 128 if (result != Utils.EXIT_SUCCESS) 129 Environment.Exit(result); 130 Console.WriteLine(); 131 i++; 132 } while (i < args.Length); 133 } else { // args.Length == 0, interactive mode 134 interactiveMode = true; 135 for (; ; ) { 136 String srcFileName; 137 Utils.GetInputFileName("source file > ", out srcFileName); 138 if (srcFileName.Length > 0) { 139 result = CompileFile(srcFileName); 140 if (result != Utils.EXIT_SUCCESS) 141 Environment.Exit(result); 142 } // if 143 char answerCh; 144 do { 145 Console.WriteLine(); 146 Console.Write("[c]ontinue or [q]uit > "); 147 answerCh = Char.ToUpper(Console.ReadKey().KeyChar); 148 } while (answerCh != 'C' && answerCh != 'Q'); 149 if (answerCh == 'Q') 150 break; 151 else // answerCh == 'C' 152 Console.WriteLine(); 153 } // for 154 } // else 155 156 Utils.Modules(Utils.ModuleAction.cleanupModule); 157 Environment.Exit(Utils.EXIT_SUCCESS); 158 159 } // Main 160 161 } // GpdlCompiler 162 163 // End of GpdlCompiler.cs 164 //=====================================|======================================== 21 }
Note: See TracChangeset
for help on using the changeset viewer.