WHITESPACE = _{ " " | "\t" | "\n" | "\r" } filters = { filter ~ ("," ~ filters)? } filter = { filter_name ~ ("(" ~ options ~ ")")? } filter_name = @{ ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "_")* } options = { option ~ ("," ~ options)? } option = { (option_name ~ "=")? ~ option_value } option_name = @{ ASCII_ALPHA ~ (ASCII_ALPHANUMERIC | "_")* } option_value = { JSON_NUMBER | JSON_STRING | JSON_BOOLEAN } JSON_NUMBER = @{ ("-")? ~ ("0" | ASCII_NONZERO_DIGIT ~ ASCII_DIGIT*) ~ ("." ~ ASCII_DIGIT*)? ~ (("e" | "E") ~ ("+" | "-")? ~ ASCII_DIGIT+)? } JSON_STRING = ${ "\"" ~ (("\\" ~ ANY) | (!("\"" | "\\") ~ ANY))* ~ "\"" } JSON_BOOLEAN = ${ "true" | "false" }