Пример #1
0
    public static LNode Parse(UString sexpr, string filename = "", IMessageSink msgs = null)
    {
        var lexer           = LesLanguageService.Value.Tokenize(sexpr, filename, msgs);
        var withoutComments = new WhitespaceFilter(lexer).Buffered();
        var parser          = new SExprParser(withoutComments, lexer.SourceFile, msgs);

        return(parser.Atom());
    }
Пример #2
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);
			}
		}
Пример #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, 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));
     }
 }