📄 javaparser.java
字号:
package fri.patterns.interpreter.parsergenerator.examples;import java.io.*;import fri.util.TimeStopper;import fri.patterns.interpreter.parsergenerator.*;import fri.patterns.interpreter.parsergenerator.builder.*;import fri.patterns.interpreter.parsergenerator.semantics.PrintSemantic;//import fri.patterns.interpreter.parsergenerator.syntax.builder.*;//import fri.patterns.interpreter.parsergenerator.parsertables.*;/** Example Java parser. @author Fritz Ritzberger, 2000*/public class JavaParser{ private static String testText = "Test"; public static void main(String [] args) throws Exception { if (args.length <= 0) { System.err.println("SYNTAX: java "+JavaParser.class.getName()+" file.java [file.java ...]"); System.err.println(" Example Java Parser"); } else { TimeStopper timer = new TimeStopper(); // read the syntax from EBNF file Reader syntaxInput = new InputStreamReader(JavaParser.class.getResourceAsStream("Java.syntax")); /* building from scratch, takes 4200 millis SyntaxBuilder builder = new SyntaxBuilder(syntaxInput); Lexer lexer = builder.getLexer(); lexer.setDebug(true); ParserTables tables = new LALRParserTables(builder.getParserSyntax()); Parser parser = new Parser(tables); parser.setLexer(lexer); */ /* building with precompiled tables, takes 1600 millis SyntaxBuilder builder = new SyntaxBuilder(syntaxInput); Lexer lexer = builder.getLexer(); ParserTables tables = new CompiledTables().get(builder.getParserSyntax(), "Java"); Parser parser = new Parser(tables); parser.setLexer(lexer); */ /* building serialized parser, takes 740 millis */ Parser parser = new SerializedParser().get(null, syntaxInput, "Java"); System.err.println("time to build Java file parser was "+timer.getInterval()); //parser.getParserTables().dumpSyntaxNodes(System.out); //parser.getParserTables().dump(System.err); // we want to receive Java comments and spaces/newlines parser.getLexer().addTokenListener(new Lexer.TokenListener() { public void tokenReceived(Token token, boolean ignored) { if (ignored) { System.err.println("------------- Ignored Token Received -------------------"); System.err.println(token.text); System.err.println("--------------------------------------------------------"); } } }); for (int i = 0; i < args.length; i++) { String fileToParse = args[i]; FileReader parseInput = new FileReader(fileToParse); System.err.println("========================================================"); System.err.println("Parsing: "+fileToParse); parser.setInput(parseInput); // set file input to lexer boolean ok = parser.parse(new PrintSemantic()); // parse input System.err.println("========================================================"); System.err.println("Parsing result from "+fileToParse+" is: "+ok+", parsing took "+timer.getInterval()+" millis"); } } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -