package typecheck; 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; import rebelsky.compiler.pascal.PascalTokenizer; /** * Print out a simple assignment language parse tree. See * AssignLangParser.java for details of the syntax of that * language. * * @author Samuel A. Rebelsky * @version 1.0 of October 2002 */ public class TestALP { 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 TestALP file.al"); 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 PascalTokenizer tokenizer = new PascalTokenizer(acs); // Build the parse tree AssignLangParser parser = new AssignLangParser(); Node tree = parser.parse(tokenizer); // Print the tree TreePrinter.print(tree, new PrintWriter(System.out, true)); // Check the types // AssignLangTyper.check(tree); System.out.println("The program seems to type check."); // Sanity check: Are there symbols left? while (tokenizer.hasMore()) System.err.println("Extra token: " + tokenizer.next().toString()); } // main(String[]) } // class TestALP