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()); }
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, 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)); } }