1program = _{ SOI ~ implicit ~ EOI } 2implicit= ${ or ~ (WHITESPACE+ ~ or )* } 3 4or = !{ and ~ (or_op ~ and)+ | and } 5and = { comp ~ (and_op ~ comp)+ | comp } 6comp = { array ~ eq_op ~ array | array } 7 8array = ${ term } 9 10term = _{ ASCII_ALPHANUMERIC+ } 11or_op = { "||" } 12and_op = { "&&" } 13eq_op = { "=" } 14WHITESPACE = _{ " " | "\t" | NEWLINE }