1 package fri.patterns.interpreter.parsergenerator.examples; 2 3 import java.util.List ; 4 import java.util.Map ; 5 import fri.patterns.interpreter.parsergenerator.Lexer; 6 import fri.patterns.interpreter.parsergenerator.Parser; 7 import fri.patterns.interpreter.parsergenerator.Token; 8 import fri.patterns.interpreter.parsergenerator.builder.SerializedLexer; 9 import fri.patterns.interpreter.parsergenerator.builder.SerializedParser; 10 import fri.patterns.interpreter.parsergenerator.lexer.LexerBuilder; 11 import fri.patterns.interpreter.parsergenerator.lexer.LexerException; 12 import fri.patterns.interpreter.parsergenerator.lexer.LexerImpl; 13 import fri.patterns.interpreter.parsergenerator.lexer.Strategy; 14 import fri.patterns.interpreter.parsergenerator.syntax.Syntax; 15 import fri.patterns.interpreter.parsergenerator.syntax.SyntaxException; 16 17 23 public class HowToOverrideLexerImpl { 24 public static void main(String args[]) 25 throws Exception 26 { 27 class OverrideLexer extends LexerImpl 29 { 30 public OverrideLexer(List ignoredSymbols, Map charConsumers) { 31 super(ignoredSymbols, charConsumers); 32 } 33 34 public Strategy newStrategy() { 35 return super.newStrategy(); 36 } 37 }; 38 39 SerializedParser builder = new SerializedParser() { 41 protected SerializedLexer newSerializedLexer() throws Exception 43 { 44 return new SerializedLexer() { 45 protected LexerBuilder newLexerBuilder(Syntax syntax, List ignoredSymbols) throws LexerException, SyntaxException 47 { 48 return new LexerBuilder(syntax, ignoredSymbols) { 49 public Lexer getLexer() { return new OverrideLexer(ignoredSymbols, charConsumers); 51 } 52 }; 53 } 54 }; 55 } 56 }; 57 58 String [][] syntaxInput = { 59 { "Start", "\"Hello\"", "\"World\"" }, 60 { Token.IGNORED, "`whitespaces`" }, 61 }; 62 63 Parser parser = builder.get(syntaxInput); 64 boolean ok = parser.parse("Hello World"); 65 System.err.println("Parsing was "+ok); 66 } 67 68 } 69 | Popular Tags |