import java.io.StreamTokenizer; import java.io.*; import java.util.Hashtable; import java.net.URL; public class Parser { Hashtable ht; Hashtable aht; TextInput caller; public void start(TextInput pcaller) { ht = new Hashtable(30); aht = new Hashtable(70); caller = pcaller; // open file try { URL inputFile = new URL("http://acg.media.mit.edu/mas962/ps1/code.txt"); StreamTokenizer st = new StreamTokenizer(inputFile.openStream()); int ttt = st.nextToken(); st.toString(); String key = st.sval; ttt = st.nextToken(); st.toString(); String object = st.sval; System.err.println(key+" : "+object); // get first pair while(ttt != st.TT_EOF){ ht.put(key, object); // get next pair ttt = st.nextToken(); st.toString(); key = st.sval; ttt = st.nextToken(); st.toString(); object = st.sval; System.err.println(key+" : "+object); } } catch (Exception e) { System.err.println("mari ex!: " + e); } } public void addExtraChars() { // put in numbers String type = new String("number"); int count = 0; while(count < 10) { Integer i = new Integer(count); aht.put(new String(i.toString()), i); count = count + 1; } // put in a space aht.put(new String(" "), new Integer(10)); aht.put(new String(">"), new Integer(11)); // indent aht.put(new String("<"), new Integer(12)); // deindent aht.put(new String("-"), new Integer(13)); // uppercase aht.put(new String("+"), new Integer(14)); // lowercase aht.put(new String("\\"), new Integer(15)); // tab in aht.put(new String("/"), new Integer(16)); // tab out aht.put(new String("["), new Integer(17)); // + ispace aht.put(new String("]"), new Integer(18)); // - ispace aht.put(new String("("), new Integer(19)); // + bspace aht.put(new String(")"), new Integer(20)); // - bspace aht.put(new String("{"), new Integer(21)); // crack on aht.put(new String("}"), new Integer(22)); // crack off aht.put(new String("|"), new Integer(28)); // | aht.put(new String("$"), new Integer(29)); // tab aht.put(new String("#"), new Integer(30)); // newline } public String p2Parse(String key) { String obj = (String)ht.get(key); return obj; } public String p3Parse(String key) { String obj = (String)ht.get(key); if(obj == null) { Integer aobj = (Integer)aht.get(key); if(aobj == null) return obj; switch(aobj.intValue()) { case 0: return aobj.toString(); // break; case 1: return aobj.toString(); // break; case 2: return aobj.toString(); // break; case 3: return aobj.toString(); // break; case 4: return aobj.toString(); // break; case 5: return aobj.toString(); // break; case 6: return aobj.toString(); // break; case 7: return aobj.toString(); // break; case 8: return aobj.toString(); // break; case 9: return aobj.toString(); // break; case 10: return aobj.toString(); // break; case 11: caller.leftin = caller.leftin + 1; break; case 12: caller.leftin = caller.leftin - 1; break; case 13: caller.lc = caller.lc + 1; break; case 14: caller.uc = caller.uc + 1; break; case 21: caller.tab = caller.tab + 1; break; case 22: caller.tab = caller.tab - 1; break; case 17: caller.space = caller.space + 1; break; case 18: caller.space = caller.space - 1; break; case 19: caller.bspace = caller.bspace + 1; break; case 20: caller.bspace = caller.bspace - 1; break; case 15: if(caller.stepsUp == true) caller.stepsUp = false; else caller.stepsUp = true; break; case 16: if(caller.stepsDown == true) caller.stepsDown = false; else caller.stepsDown = true; break; case 29: caller.remainingSpace = caller.remainingSpace - 72; return new String("\t"); case 30: caller.remainingSpace = caller.taWidth; return new String("\n"); default: break; } return obj; } else return obj; } }