import java.util.*; import java.io.*; public class SymbolsReader { StreamTokenizer tokenizer; SymbolsReader(String symbolsFilename, Hashtable symbolsTable) throws IOException { InputStream symbolsFile = new FileInputStream(symbolsFilename); tokenizer = new StreamTokenizer(symbolsFile); tokenizer.resetSyntax(); tokenizer.eolIsSignificant(false); tokenizer.wordChars('0', '9'); tokenizer.wordChars('a', 'z'); tokenizer.wordChars('A', 'Z'); tokenizer.wordChars('_', '_'); tokenizer.wordChars('.', '.'); tokenizer.wordChars('?', '?'); tokenizer.whitespaceChars(' ',' '); tokenizer.whitespaceChars('\t','\t'); tokenizer.whitespaceChars('\n','\n'); tokenizer.whitespaceChars('\r','\r'); int addr; char type; String name; int nr=0; while(true) { if((name = nextToken()) == null) break; addr = (int) Long.parseLong(name, 16); // System.out.print(Integer.toHexString(addr)+"\t"); if((name = nextToken()) == null) break; type = name.charAt(0); // System.out.print(type+"\t"); if((name = nextToken()) == null) break; // System.out.println(name); if(Character.toLowerCase(type) == 't') { symbolsTable.put(new Integer(addr),name); nr++; } } System.out.println(nr+" symbols read."); } String nextToken() throws IOException { if (tokenizer.nextToken() == StreamTokenizer.TT_EOF) return null; switch(tokenizer.ttype) { case StreamTokenizer.TT_EOL: System.out.println("Unexpected EOL ?!?"); return null; case StreamTokenizer.TT_NUMBER: System.out.println("Unexpected NUMBER ?!?"); return null; case StreamTokenizer.TT_WORD: return tokenizer.sval; default: System.out.println("Unexpected char: "+ (char)tokenizer.ttype); return null; } } } // Local Variables: // c-basic-offset: 8 // End: