Test = List(InputOutput) EOF. InputOutput = "input" CNF "assignment" Literal "expected" "output" CNF. CNF = "and" List(Clause) [ int] [ int]. Clause = "or" List(Literal). Literal : Pos | Neg common Variable. Pos = . Neg = "!". Variable = Ident. List(S) ~ "(" {S} ")". Main = String.