package stupid;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.PrintWriter;
import rebelsky.compiler.misc.AdvCharStream;
import rebelsky.compiler.misc.StandardCharStream;
import rebelsky.compiler.parser.Node;
import rebelsky.compiler.parser.TreePrinter;

/**
 * Print out a Stupid parse tree.  See StupidParser.java for
 * details of tghe syntax of the Stupid language.
 *
 * @author Samuel A. Rebelsky
 * @version 1.0 of December 2002
 */
public class ParseStupid
{
  public static void main(String[] args) 
    throws Exception
  {
    String fname;

     // Determine the file name to use
    if (args.length == 0) 
      throw new Exception("Usage: java ParseStupid file.stupid");
    else 
      fname = args[0];

    // Create the character stream that the tokenizer will  use.
    AdvCharStream acs =
      new AdvCharStream(
        new StandardCharStream(
          new BufferedReader(
            new FileReader(fname))));

    // Create the tokenizer
    StupidTokenizer tokenizer = new StupidTokenizer(acs);

    // Build the parse tree
    StupidParser parser = new StupidParser();
    Node tree = parser.parse(tokenizer);

    // Print the tree
    TreePrinter.print(tree, new PrintWriter(System.out, true));

  } // main(String[])
} // class ParseStupid

