public IListSource<LNode> Parse(ILexer<Token> input, IMessageSink msgs, ParsingMode inputType = null, bool preserveComments = true) { if (preserveComments) { var saver = new TriviaSaver(input, (int)TokenType.Newline); var results = Parse(saver.Buffered(), input.SourceFile, msgs, inputType); var injector = new StandardTriviaInjector(saver.TriviaList, saver.SourceFile, (int)TokenType.Newline, "/*", "*/", "//"); return injector.Run(results.GetEnumerator()).Buffered(); } else { var lexer = new WhitespaceFilter(input); return Parse(lexer.Buffered(), input.SourceFile, msgs, inputType); } }
public IListSource <LNode> Parse(ILexer <Token> input, IMessageSink msgs, IParsingOptions options) { if (options.PreserveComments) { var saver = new TriviaSaver(input, (int)TokenType.Newline); var results = Parse(saver.Buffered(), input.SourceFile, msgs, options); var injector = new StandardTriviaInjector(saver.TriviaList, saver.SourceFile, (int)TokenType.Newline, "/*", "*/", "//", options.Mode != ParsingMode.Expressions); return(injector.Run(results.GetEnumerator()).Buffered()); } else { var lexer = new WhitespaceFilter(input); return(Parse(lexer.Buffered(), input.SourceFile, msgs, options)); } }
public IListSource <LNode> Parse(ILexer <Token> input, IMessageSink msgs, ParsingMode inputType = null, bool preserveComments = true) { if (preserveComments) { var saver = new TriviaSaver(input, (int)TokenType.Newline); var results = Parse(saver.Buffered(), input.SourceFile, msgs, inputType); var injector = new StandardTriviaInjector(saver.TriviaList, input.SourceFile, (int)TokenType.Newline, "/*", "*/", "//"); injector.SLCommentSuffix = @"\\"; return(injector.Run(results.GetEnumerator()).Buffered()); } else { return(Parse(new WhitespaceFilter(input).Buffered(), input.SourceFile, msgs, inputType)); } }
public IListSource <LNode> Parse(ILexer <Token> input, IMessageSink msgs, IParsingOptions options) { if (options.PreserveComments) { // Filter out whitespace, including some newlines (those directly inside square brackets or parentheses) var saver = new TriviaSaver(input, (int)TokenType.Newline); var results = Parse(saver.Buffered(), input.SourceFile, msgs, options); var injector = new StandardTriviaInjector(saver.TriviaList, input.SourceFile, (int)TokenType.Newline, "/*", "*/", "//", options.Mode != ParsingMode.Expressions); injector.SLCommentSuffix = @"\\"; return(injector.Run(results.GetEnumerator()).Buffered()); } else { return(Parse(new WhitespaceFilter(input).Buffered(), input.SourceFile, msgs, options)); } }