⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javaparser.java

📁 java 词法分析器,用于一般的C,C++,VB,PS/SQL 语句的翻译
💻 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 + -