コード例 #1
0
        /// <summary>
        /// Creates a new parser from the specified input stream.
        /// </summary>
        /// <param name="inputStream">The stream to parse.</param>
        /// <param name="errorListener">
        /// Used to collect any errors encountered during lexing or parsing. If
        /// no listener is provided, the default Antlr listeners that output
        /// messages to the console will be used.
        /// </param>
        /// <returns>The parser.</returns>
        public static ThriftParser Create(
            Stream inputStream,
            CollectingErrorListener errorListener = null)
        {
            var charStream  = new AntlrInputStream(inputStream);
            var lexer       = new ThriftLexer(charStream);
            var tokenStream = new CommonTokenStream(lexer);

            ThriftParser parser = new ThriftParser(tokenStream);

            if (errorListener != null)
            {
                lexer.RemoveErrorListeners();
                lexer.AddErrorListener(errorListener);

                parser.RemoveErrorListeners();
                parser.AddErrorListener(errorListener);
            }

            return(parser);
        }
コード例 #2
0
        private ThriftFileElement loadSingleFile(DirectoryInfo base1, String path)
        {
            string   fileName = Path.Combine(base1.FullName, path);
            FileInfo file     = new FileInfo(fileName);

            if (!file.Exists)
            {
                return(null);
            }


            try
            {
                Location location = Location.Get(base1.FullName, path);
                string   data     = File.ReadAllText(file.FullName, Encoding.UTF8);

                return(ThriftParser.Parse(location, data, errorReporter));
            }
            catch (IOException e)
            {
                throw new IOException("Failed to load " + path + " from " + base1, e);
            }
        }