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 }