WHITESPACE = _{ " " | "\t" | NEWLINE }
START = _{ SOI ~ (OR_STMT | AND_STMT | STMT) ~ EOI}
AND_STMT = { (PAR_STMT | STMT) ~ "AND" ~ (PAR_STMT | AND_STMT | STMT) }
PAR_STMT = { "(" ~ OR_STMT ~ ")" }
OR_STMT = { (AND_STMT | STMT) ~ "OR" ~ (AND_STMT | OR_STMT | STMT) }
STMT = { BREAKING_STMT | ARRAY_STMT }
ARRAY_STMT = { OBJECT ~ "IN" ~ ARRAY }
BREAKING_STMT = { "breaking" }
ARRAY = { "[" ~ LITERAL ~ ("," ~ LITERAL)* ~ "]" }
OBJECT = { TYPE_OBJECT | SCOPE_OBJECT }
TYPE_OBJECT = { "type" }
SCOPE_OBJECT = { "scope" }
LITERAL = @{ ASCII_ALPHA_LOWER ~ (ASCII_ALPHA_LOWER | "-")* | "General" }