List of usage examples for java.io StreamTokenizer nextToken
public int nextToken() throws IOException
From source file:SumFile.java
static void sumfile(String filename) throws IOException { Reader r = new BufferedReader(new FileReader(filename)); StreamTokenizer stok = new StreamTokenizer(r); stok.parseNumbers();//from w ww . ja va 2s . c om double sum = 0; stok.nextToken(); while (stok.ttype != StreamTokenizer.TT_EOF) { if (stok.ttype == StreamTokenizer.TT_NUMBER) sum += stok.nval; else System.out.println("Nonnumber: " + stok.sval); stok.nextToken(); } System.out.println("The file sum is " + sum); }
From source file:SumLine.java
static void sumLines(String filename) throws IOException { LineNumberReader lnr = new LineNumberReader(new FileReader(filename)); lnr.setLineNumber(1);// w w w. ja va2 s . com StreamTokenizer stok = new StreamTokenizer(lnr); stok.parseNumbers(); stok.eolIsSignificant(true); stok.nextToken(); while (stok.ttype != StreamTokenizer.TT_EOF) { int lineno = lnr.getLineNumber(); double sum = 0; while (stok.ttype != StreamTokenizer.TT_EOL) { if (stok.ttype == StreamTokenizer.TT_NUMBER) sum += stok.nval; stok.nextToken(); } System.out.println("Sum of line " + lineno + " is " + sum); stok.nextToken(); } }
From source file:Command.java
/** * This static method creates a Command using the specified target object, * and the specified string. The string should contain method name followed * by an optional parenthesized comma-separated argument list and a * semicolon. The arguments may be boolean, integer or double literals, or * double-quoted strings. The parser is lenient about missing commas, * semicolons and quotes, but throws an IOException if it cannot parse the * string.//from w w w. j a v a 2 s . c o m */ public static Command parse(Object target, String text) throws IOException { String methodname; // The name of the method ArrayList args = new ArrayList(); // Hold arguments as we parse them. ArrayList types = new ArrayList(); // Hold argument types. // Convert the string into a character stream, and use the // StreamTokenizer class to convert it into a stream of tokens StreamTokenizer t = new StreamTokenizer(new StringReader(text)); // The first token must be the method name int c = t.nextToken(); // read a token if (c != t.TT_WORD) // check the token type throw new IOException("Missing method name for command"); methodname = t.sval; // Remember the method name // Now we either need a semicolon or a open paren c = t.nextToken(); if (c == '(') { // If we see an open paren, then parse an arg list for (;;) { // Loop 'till end of arglist c = t.nextToken(); // Read next token if (c == ')') { // See if we're done parsing arguments. c = t.nextToken(); // If so, parse an optional semicolon if (c != ';') t.pushBack(); break; // Now stop the loop. } // Otherwise, the token is an argument; figure out its type if (c == t.TT_WORD) { // If the token is an identifier, parse boolean literals, // and treat any other tokens as unquoted string literals. if (t.sval.equals("true")) { // Boolean literal args.add(Boolean.TRUE); types.add(boolean.class); } else if (t.sval.equals("false")) { // Boolean literal args.add(Boolean.FALSE); types.add(boolean.class); } else { // Assume its a string args.add(t.sval); types.add(String.class); } } else if (c == '"') { // If the token is a quoted string args.add(t.sval); types.add(String.class); } else if (c == t.TT_NUMBER) { // If the token is a number int i = (int) t.nval; if (i == t.nval) { // Check if its an integer // Note: this code treats a token like "2.0" as an int! args.add(new Integer(i)); types.add(int.class); } else { // Otherwise, its a double args.add(new Double(t.nval)); types.add(double.class); } } else { // Any other token is an error throw new IOException( "Unexpected token " + t.sval + " in argument list of " + methodname + "()."); } // Next should be a comma, but we don't complain if its not c = t.nextToken(); if (c != ',') t.pushBack(); } } else if (c != ';') { // if a method name is not followed by a paren t.pushBack(); // then allow a semi-colon but don't require it. } // We've parsed the argument list. // Next, convert the lists of argument values and types to arrays Object[] argValues = args.toArray(); Class[] argtypes = (Class[]) types.toArray(new Class[argValues.length]); // At this point, we've got a method name, and arrays of argument // values and types. Use reflection on the class of the target object // to find a method with the given name and argument types. Throw // an exception if we can't find the named method. Method method; try { method = target.getClass().getMethod(methodname, argtypes); } catch (Exception e) { throw new IOException("No such method found, or wrong argument " + "types: " + methodname); } // Finally, create and return a Command object, using the target object // passed to this method, the Method object we obtained above, and // the array of argument values we parsed from the string. return new Command(target, method, argValues); }
From source file:gda.device.detector.mythen.data.MythenDataFileUtils.java
protected static double[][] getDataFromReaderUsingStreamTokenizer(Reader r, FileType type) throws IOException { try {// w ww . ja va2s. c o m List<double[]> data = new Vector<double[]>(); StreamTokenizer st = new StreamTokenizer(r); while (st.nextToken() != StreamTokenizer.TT_EOF) { double angle = st.nval; st.nextToken(); double count = st.nval; //st.nextToken(); if (type == FileType.PROCESSED) { st.nextToken(); double error = st.nval; data.add(new double[] { angle, count, error }); } else if (type == FileType.PROCESSED_WITH_CHANNELS) { st.nextToken(); double error = st.nval; double channel = st.nval; data.add(new double[] { angle, count, error, channel }); } else { data.add(new double[] { angle, count }); } } return data.toArray(new double[data.size()][]); } finally { try { r.close(); } catch (IOException e) { // ignore } } }
From source file:com.indeed.imhotep.index.builder.util.SmartArgs.java
/** * parse a String into an argument list, in the same way java parses * arguments passed to main()/*from www .j a v a 2s .c o m*/ */ public static String[] parseArgParams(String line) { StreamTokenizer tok = new StreamTokenizer(new StringReader(line)); tok.resetSyntax(); tok.wordChars('\u0000', '\uFFFF'); tok.whitespaceChars(' ', ' '); tok.quoteChar('\"'); ArrayList<String> output = new ArrayList<String>(); try { while (tok.nextToken() != StreamTokenizer.TT_EOF) { output.add(tok.sval); } } catch (IOException e) { } return output.toArray(new String[output.size()]); }
From source file:edu.buffalo.cse.pigout.parser.PigOutMacro.java
private static boolean matchDollarAlias(StreamTokenizer st, boolean next) throws IOException { int type = next ? st.nextToken() : st.ttype; if (type == StreamTokenizer.TT_WORD && st.sval.charAt(0) == '$' && st.sval.length() > 1) { return true; }/* w ww . j a v a 2 s . co m*/ if (next) st.pushBack(); return false; }
From source file:edu.buffalo.cse.pigout.parser.PigOutMacro.java
private static boolean matchChar(StreamTokenizer st, int c, boolean next) throws IOException { int type = next ? st.nextToken() : st.ttype; if (type == c) return true; if (next)// w w w .j ava 2 s .co m st.pushBack(); return false; }
From source file:edu.buffalo.cse.pigout.parser.PigOutMacro.java
private static boolean matchWord(StreamTokenizer st, String word, boolean next) throws IOException { int type = next ? st.nextToken() : st.ttype; if (type == StreamTokenizer.TT_WORD && st.sval.equalsIgnoreCase(word)) { return true; }/*from w w w. j a v a 2s . com*/ if (next) st.pushBack(); return false; }
From source file:edu.buffalo.cse.pigout.parser.PigOutMacro.java
private static void skipSingleLineComment(StreamTokenizer st) throws IOException { int lineNo = st.lineno(); int lookahead = st.nextToken(); while (lookahead != StreamTokenizer.TT_EOF && lookahead != '\n') { if (st.lineno() > lineNo) break; lookahead = st.nextToken();/*from w ww.j av a 2 s. c o m*/ } st.pushBack(); }
From source file:edu.buffalo.cse.pigout.parser.PigOutMacro.java
private static boolean isMultiValueReturn(StreamTokenizer st, List<String> mlist, boolean comma) throws IOException { int lookahead = st.nextToken(); if ((comma && lookahead == StreamTokenizer.TT_WORD) || (!comma && matchChar(st, ',', false))) { if (matchDollarAlias(st, false)) { mlist.add(st.sval);/*from www . j ava2 s. com*/ } return isMultiValueReturn(st, mlist, !comma); } if (!comma && lookahead == '=' && !matchChar(st, '=', true)) { return true; } return false; }