program = _{ SOI ~ implicit ~ EOI } implicit= ${ or ~ (WHITESPACE+ ~ or )* } or = !{ and ~ (or_op ~ and)+ | and } and = { comp ~ (and_op ~ comp)+ | comp } comp = { array ~ eq_op ~ array | array } array = ${ term } term = _{ ASCII_ALPHANUMERIC+ } or_op = { "||" } and_op = { "&&" } eq_op = { "=" } WHITESPACE = _{ " " | "\t" | NEWLINE }