Ejemplo n.º 1
0
		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);
			}
		}
Ejemplo n.º 2
0
 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));
     }
 }
Ejemplo n.º 3
0
 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));
     }
 }
Ejemplo n.º 4
0
 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));
     }
 }