example_of_scannertest
package javac.parser; import static javac.parser.Symbols.*; public final class ScannerTest { public static void main(String[] args) throws Exception { scan("queens.java"); } private static void scan(String filename) throws Exception { java.io.InputStream in = new java.io.FileInputStream(filename); java_cup.runtime.Scanner lexer = new Yylex(in); java_cup.runtime.Symbol tok = null; do { tok = lexer.next_token(); if (tok.sym == STRING_LITERAL) { System.out.print("\"" + tok.value + "\""); } else if (tok.sym == INTEGER) { System.out.print(tok.value); } else if (tok.sym == CHARACTER) { System.out.print("'" + tok.value + "'"); } else if (tok.sym == ID) { System.out.print(tok.value); } else { System.out.print(symnames[tok.sym]); } } while (tok.sym != EOF); in.close(); } static String[] symnames = new String[1000]; static { symnames[LRBRACKET] = "[]"; symnames[DIVIDE] = " / "; symnames[LBRACKET] = "["; symnames[CHAR] = "char "; symnames[LPAREN] = "("; symnames[GREATER] = " > "; symnames[CONTINUE] = "continue"; symnames[INT] = "int "; symnames[LESS] = " < "; symnames[FOR] = "for "; symnames[MINUS] = " - "; symnames[RPAREN] = ") "; symnames[NOT] = "!"; symnames[SEMICOLON] = ";\n"; symnames[AND] = " && "; symnames[RECORD] = "record "; symnames[OR] = " || "; symnames[COMMA] = ", "; symnames[MULTIPLY] = " * "; symnames[PLUS] = " + "; symnames[ASSIGN] = " = "; symnames[IF] = "if "; symnames[DOT] = "."; symnames[EOF] = "<EOF>"; symnames[RETURN] = "return "; symnames[RBRACKET] = "]"; symnames[NEW] = "new "; symnames[error] = "<error>"; symnames[MODULO] = " % "; symnames[NULL] = "null"; symnames[NEQ] = " != "; symnames[BREAK] = "break"; symnames[EQ] = " == "; symnames[LBRACE] = "{\n"; symnames[NATIVE] = "native "; symnames[ELSE] = "else "; symnames[WHILE] = "while "; symnames[LESS_EQ] = " <= "; symnames[RBRACE] = "}\n"; symnames[STRING] = "string "; symnames[GREATER_EQ] = " >= "; } }
example_of_scannertest.txt · Last modified: 2012/03/01 01:56 by xjia