Skip to content

Instantly share code, notes, and snippets.

@mnzk
Created April 20, 2013 13:44
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mnzk/5426024 to your computer and use it in GitHub Desktop.
Save mnzk/5426024 to your computer and use it in GitHub Desktop.
CSV BNF (RFC4180) for instaparse
file = [header CRLF] record (CRLF record)* [CRLF]
header = name (COMMA name)*
record = field (COMMA field)*
name = field
field = (escaped | non-escaped)
escaped = DQUOTE (TEXTDATA | COMMA | CR | LF | 2DQUOTE)* DQUOTE
2DQUOTE = DQUOTE DQUOTE
non-escaped = TEXTDATA*
COMMA = '\u002C'
CR = '\u000D'
DQUOTE = '\u0022'
LF = '\u000A'
CRLF = CR LF
TEXTDATA = #'[\u0020-\u0021\u0023-\u002B\u002D-\u007E]'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment