public DelimitedTextParser(char elementSeparator) { var any = new AnyTextParser(); var elementSeparatorParser = any.Char(elementSeparator); var escapeEscape = any.Chars('\\', '\\'); var escapeQuote = any.Chars('\\', '\"'); var validChars = any.Char(x => x != elementSeparator); TextParser rawString = validChars.ZeroOrMore(); var quotedChars = escapeEscape.Or(escapeQuote).Or(any.Char(x => x != '\"')); var quotedText = from open in any.Char('\"') from cs in quotedChars.ZeroOrMore() from close in any.Char('\"') select cs; var value = quotedText.Or(rawString); _parser = from vs in value.Split(elementSeparatorParser) select vs; }
public TextParserBuilder() { Any = new AnyTextParser(); Char = Any.Char(); }