import java.io.*; import squirrel.*; public class SchemeParser implements HasGrammar { private Grammar g; public SchemeParser() { g = new Grammar(); g.importFrom(new Standard()); g.addRule("", "( [] ) []"); g.addRule("", " [] []"); g.addRule("", "", "", ""); g.addRule("", "' "); g.addToken("", " []"); g.addToken("", "", ""); g.addToken("", "", ""); g.addToken("", "; [] "); g.addToken("", "! []"); g.addCharClass("", '!', '@', '#', '$','%','&','*','-','+', '=','\\',':',',','.','?','<','>','/'); g.addCharClass("", '\n'); } public Grammar getGrammar() {return g;} public Tree parse(Object obj) throws IOException { Parser p = new Parser(g, obj); p.parse(); return p.results().bestTree(); } public static void main(String[] args) throws IOException { if (args.length < 1) { System.out.println("Usage: SchemeParser schemefile1 ..."); } SchemeParser sp = new SchemeParser(); for (String filename: args) { File f = new File(filename); Tree result = sp.parse(f); if (result.isError()) { System.out.println(result.errorMessage()); } System.out.println(result.textTree()); } } }