Example #1
0
        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);
        }