public static void main(String[] args) {
   java.io.Reader _main_reader;
   if (args.length == 1) {
      if (args[0].length() > 4 && args[0].indexOf(".jcc") + 4 == args[0].length()) {
         jcc.jcc.main(new String[] {args[0]});
         return;
      }
      if (args[0].length() <= 5 || args[0].indexOf(".gzcc") + 5 != args[0].length()) {
         System.err.println("Incorrect type of file.");
         return;
	  }
      try {
         _main_reader = 
            new java.io.BufferedReader(
               new java.io.FileReader(args[0]));
      } catch (java.io.IOException ex) {
         System.err.println(ex.getMessage());
         return;
      }
   }
   else {
      System.err.println("1 parameter required: read form file given by args[0]");
      return;
   }
   gzcc instGzcc = new gzcc(null);
   instGzcc.compilerName = args[0].substring(0, args[0].indexOf(".gzcc"));
   if (! instGzcc.isInitSucc()) {
      System.err.println(instGzcc.getInitErrInfo());
      try {
         _main_reader.close();
      } catch (java.io.IOException ex) {
         System.err.println(ex.getMessage());
      }
      return;
   }
   if (instGzcc.run(_main_reader)) {
      Writer _main_writer = null;
      try {
         _main_writer =
            new BufferedWriter(
               new FileWriter(instGzcc.compilerName + ".jcc"));
         _main_writer.write(instGzcc.report.toString());
      } catch (java.io.IOException ex) {
         System.err.println(ex.getMessage());
      } finally {
         try {
            _main_writer.close();
         } catch (java.io.IOException ex2) {
            System.err.println(ex2.getMessage());
         }
	  }
      jcc.jcc.main(new String[] {instGzcc.compilerName + ".jcc"});
   }
   else {
      System.err.println(instGzcc.errorMessage);
   }
   try {
      _main_reader.close();
   } catch (java.io.IOException ex) {
      System.err.println(ex.getMessage());
   }
} // main
