protected CtfParser GetParser(Stream inputStream) { var input = new AntlrInputStream(inputStream); var lexer = new CtfLexer(input); var tokens = new CommonTokenStream(lexer); var parser = new CtfParser(tokens); TestErrorListener = new TestErrorListener(); parser.RemoveErrorListeners(); parser.AddErrorListener(TestErrorListener); return(parser); }
/// <summary> /// Parse the CTF stream. /// </summary> /// <param name="metadataStream">Metadata stream</param> /// <returns>Metadata parsed from the stream</returns> public ICtfMetadata Parse(Stream metadataStream) { string metadata = this.GetMetadata(metadataStream); this.parser = GetContext(metadata); // Error listeners can be switched out for debugging purposes. Leaving these comments here for easy access. //this.parser.RemoveErrorListeners(); //this.parser.AddErrorListener(new DebugErrorListener()); //this.parser.AddErrorListener(new DiagnosticErrorListener(false)); var fileContext = this.parser.file(); this.listener = new CtfListener(this.parser, this.metadataCustomization, this.metadataBuilder); var treeWalker = new ParseTreeWalker(); treeWalker.Walk(this.listener, fileContext); return(this.listener.GlobalScope); }