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