> This is a simple file format for storing tabular content. It's meant to work like CSV files. So far only the low-level encoding is specified, handling e.g. type conversion, etc., is left to a higher-level abstraction layer (as yet unwritten.)
> An *.sv file consists of one or more documents separated by ASCII Group Separator character (0x1D), sv files are UTF-8 encoded.
> Each document can have an optional header indicated by the presence of ASCII Start of Heading character (0x01) followed by zero or more records of metadata. If present, the first record should be field names, the second record should be type names, any further records are user-defined. The first two records (names and types) must be the same length as the data records. The header is concluded by an ASCII Start of Text character (0x02).
> Records are separated by ASCII Record Separator characters (0x1E), and data units (fields) of each record are separated by ASCII Unit Separator characters (0x1F). All record values must be strings.
> ...a grammar:
sv ::= doc [GS sv]
doc ::= [header] records
header ::= SOH records STX
records ::= record [RS records]
record ::= field [US record]
field ::=
A table of the sv ASCII characters: 1 01 00000001 SOH  Start of Heading
2 02 00000010 STX  Start of Text
29 1D 00011101 GS  Group Separator
30 1E 00011110 RS  Record Separator
31 1F 00011111 US  Unit Separator