Newer
Older
zweic / sources / zweic / GeneratorTest.scala
/*  zweic -- a compiler for Zwei
 *
 *  Stephane Micheloud & LAMP
 *
 *  $Id$
 */

package zweic;

/**
 * usage: scala zweic.GeneratorTest <file.zwei> [ <file.risc> ]
 */
object GeneratorTest {
  import java.io._;

  def main(args: Array[String]) = {
    if (args.length == 0) {
      Console.println("usage: scala zweic.GeneratorTest <file.zwei> [ <file.risc> ]");
      System.exit(1)
    }
    try {
      val in = new FileInputStream(args(0));
      val tree = new Parser(in).parse;
      in.close();
      if (Report.errors > 0)
        System.err.println(Report.errors + " errors found.");
      else {
        val analyzer = new Analyzer();
        analyzer.analyzeProgram(tree);
        if (Report.errors > 0)
          System.err.println(Report.errors + " errors found.");
        else {
          val out = if (args.length < 2) new PrintWriter(System.out)
                    else new PrintWriter(new FileWriter(args(1)));
          val generator = new Generator(analyzer);
          generator.gen(tree);
          generator.code.write(out)
        }
      }
      System.exit(if (Report.errors > 0) 1 else 0)
    }
    catch {
      case e: IOException => Report.fail(e.getMessage());
    }
  }

}