1 package fri.patterns.interpreter.parsergenerator.examples; 2 3 import java.io.*; 4 import fri.util.TimeStopper; 5 import fri.patterns.interpreter.parsergenerator.builder.SerializedLexer; 6 import fri.patterns.interpreter.parsergenerator.lexer.*; 7 import fri.patterns.interpreter.parsergenerator.syntax.*; 8 import fri.patterns.interpreter.parsergenerator.syntax.builder.*; 9 10 15 16 public class DtdLexer 17 { 18 public static void main(String [] args) 19 throws Exception 20 { 21 if (args.length <= 0) { 22 System.err.println("SYNTAX: java "+DtdLexer.class.getName()+" file.dtd [file.dtd ...]"); 23 System.err.println(" Example DTD Parser"); 24 System.exit(1); 25 } 26 27 TimeStopper timer = new TimeStopper(); 28 29 SerializedLexer builder = new SerializedLexer(); 30 LexerImpl lexer; 31 32 if ((lexer = (LexerImpl) builder.readLexer(null, "Dtd")) == null) { Syntax dtdSyntax = new SyntaxBuilder(new InputStreamReader(DtdLexer.class.getResourceAsStream("Dtd.syntax"))).getSyntax(); 35 Syntax xmlSyntax = new SyntaxBuilder(new InputStreamReader(DtdLexer.class.getResourceAsStream("Xml.syntax"))).getSyntax(); 37 38 dtdSyntax.resolveFrom(xmlSyntax); 40 42 SyntaxSeparation separation = new SyntaxSeparation(dtdSyntax); 44 lexer = (LexerImpl) builder.buildAndStoreLexer( separation.getLexerSyntax(), 46 "Dtd", 47 separation.getTokenSymbols(), 48 separation.getIgnoredSymbols()); 49 } 50 51 System.err.println("time to build DTD file parser was "+timer.getInterval()); 52 53 for (int i = 0; i < args.length; i++) { 54 String parseFile = args[i]; 55 FileReader parseInput = new FileReader(parseFile); 56 lexer.setInput(parseInput); 57 58 System.err.println("======================== Parsing: "+parseFile+" ========================"); 59 boolean ok = lexer.lex(new XmlLexer.PrintXmlLexerSemantic()); 60 System.err.println("========================================================"); 61 62 System.err.println("Lexing took "+timer.getInterval()+" millis."); 63 System.err.println("Result was: "+ok); 64 } 65 } 66 67 } 68 | Popular Tags |