Example usage for java.io StreamTokenizer nextToken

List of usage examples for java.io StreamTokenizer nextToken

Introduction

In this page you can find the example usage for java.io StreamTokenizer nextToken.

Prototype

public int nextToken() throws IOException 

Source Link

Document

Parses the next token from the input stream of this tokenizer.

Usage

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;
}