// See https://datatracker.ietf.org/doc/html/rfc4180.html.
file                 = { row ~ (NEWLINE ~ row)* ~ NEWLINE? }
row                  = { item ~ (comma ~ item)* }
item                 = { escaped_item | non_escaped_item }
escaped_item_content = { (legal_ascii | comma | NEWLINE | double_quote{2})* }
escaped_item         = { double_quote ~ escaped_item_content ~ double_quote }
non_escaped_item     = { legal_ascii+ }
legal_ascii          = { '\x20'..'\x21' | '\x23'..'\x2B' | '\x2D'..'\x7E' }
comma                = { "," }
double_quote         = { "\"" }
