|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Diggins.Jigsaw
{
public class CSVGrammar : Grammar
{
public static Rule NL = Opt((MatchChar('\r') + MatchChar('\n')) | MatchChar('\r'));
public static Rule UnquotedChar = Node(ExceptCharSet(" \n,\""));
public static Rule UnquotedField = Node(ZeroOrMore(UnquotedChar));
public static Rule QuotedChar = Node(MatchString("\"\"") | MatchChar('\n') | MatchChar(',') | UnquotedChar);
public static Rule QuotedField = Node(MatchChar('"') + ZeroOrMore(QuotedChar) + MatchChar('"'));
public static Rule Field = Node(QuotedField | UnquotedField);
public static Rule Record = Node(Opt(Field) + ZeroOrMore(MatchChar(',') | Field));
public static Rule Records = Node(Opt(Record) + ZeroOrMore(MatchChar('\n') + Record)) + End;
static CSVGrammar() { InitGrammar(typeof(CSVGrammar)); }
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.