/// <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); }
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); } }