//! A parser for a WSV file
WHITESPACE = _{ (!"\n" ~ WHITE_SPACE) }
NewLine = { "\"/\"" }
DoubleQuote = { "\"\"" }
StringPart = { (!("\n" | "\"") ~ ANY)+ }
Null = { "-" }
Value = @{ (!("\n" | "\"" | "#" | WHITESPACE) ~ ANY)+ }
String = ${ ("\"" ~ (DoubleQuote | NewLine | StringPart)* ~ "\"") }
Comment = _{ "#" ~ (!"\n" ~ ANY)* ~ &("\n" | EOI) }
Line = ${ (Null | String | Value)? ~ (WHITESPACE+ ~ (Null | String | Value))* ~ WHITESPACE* ~ Comment? }
Wsv = { SOI ~ Line ~ ("\n" ~ Line)* ~ EOI }