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

📄 howtooverridelexerimpl.java

📁 java 词法分析器,用于一般的C,C++,VB,PS/SQL 语句的翻译
💻 JAVA
字号:
package fri.patterns.interpreter.parsergenerator.examples;import java.util.List;import java.util.Map;import fri.patterns.interpreter.parsergenerator.Lexer;import fri.patterns.interpreter.parsergenerator.Parser;import fri.patterns.interpreter.parsergenerator.Token;import fri.patterns.interpreter.parsergenerator.builder.SerializedLexer;import fri.patterns.interpreter.parsergenerator.builder.SerializedParser;import fri.patterns.interpreter.parsergenerator.lexer.LexerBuilder;import fri.patterns.interpreter.parsergenerator.lexer.LexerException;import fri.patterns.interpreter.parsergenerator.lexer.LexerImpl;import fri.patterns.interpreter.parsergenerator.lexer.Strategy;import fri.patterns.interpreter.parsergenerator.syntax.Syntax;import fri.patterns.interpreter.parsergenerator.syntax.SyntaxException;/** * This sample shows how to set another Lexer implementation * into the Parser-builder. *  * @author Fritz Ritzberger */public class HowToOverrideLexerImpl {	public static void main(String args[])		throws Exception	{		// a Lexer derivate class that prints a message		class OverrideLexer extends LexerImpl		{			public OverrideLexer(List ignoredSymbols, Map charConsumers)	{				super(ignoredSymbols, charConsumers);			}			/** Could provide another lexing Strategy. */			public Strategy newStrategy()	{				return super.newStrategy();			}		};		// override the Parser builder to install the new Lexer implementation		SerializedParser builder = new SerializedParser()	{			protected SerializedLexer newSerializedLexer()	// override SerializedLexer factory method				throws Exception			{				return new SerializedLexer()	{					protected LexerBuilder newLexerBuilder(Syntax syntax, List ignoredSymbols)	// override LexerBuilder factory method						throws LexerException, SyntaxException					{						return new LexerBuilder(syntax, ignoredSymbols)	{							public Lexer getLexer()	{	// override Lexer factory method								return new OverrideLexer(ignoredSymbols, charConsumers);							}						};					}				};			}		};				String [][] syntaxInput = {			{ "Start", "\"Hello\"", "\"World\"" },			{ Token.IGNORED, "`whitespaces`" },		};				Parser parser = builder.get(syntaxInput);		boolean ok = parser.parse("Hello World");		System.err.println("Parsing was "+ok);	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -