public static Parser CreateParser(TextReader reader, PythonLanguageVersion version, ParserOptions parserOptions) { if (reader == null) { throw new ArgumentNullException("reader"); } var options = parserOptions ?? ParserOptions.Default; Parser parser = null; var tokenizer = new Tokenizer( version, options.ErrorSink, (options.Verbatim ? TokenizerOptions.Verbatim : TokenizerOptions.None) | TokenizerOptions.GroupingRecovery, (span, text) => options.RaiseProcessComment(parser, new CommentEventArgs(span, text))); tokenizer.Initialize(null, reader, SourceLocation.MinValue); tokenizer.IndentationInconsistencySeverity = options.IndentationInconsistencySeverity; parser = new Parser( tokenizer, options.ErrorSink ?? ErrorSink.Null, version, options.Verbatim, options.BindReferences, options.PrivatePrefix ) { _sourceReader = reader }; return parser; }
private static PythonAst ParseOneFile(PythonAst ast, Parser parser) { if (parser != null) { try { ast = parser.ParseFile(); } catch (BadSourceException) { } catch (Exception e) { if (e.IsCriticalException()) { throw; } Debug.Assert(false, String.Format("Failure in Python parser: {0}", e.ToString())); } } return ast; }
public TokenizerErrorSink(Parser parser) { _parser = parser; }