Program = *l "" + List(Expression) - *l "" EOF.
Expression : LetExp | CNF.
LetExp = *l "" +
"" Literal ""
+ Expression - *l "" -.
CNF = *l "" + List(Clause) - *l
[*l "" ClauseCount ""]
[*l "" ClauseCount ""] "".
Clause = *l "" Weight Literals "".
Literals = *l "" + List(Literal) - *l "".
Literal : Pos | Neg.
// expanded: common Variable .
Pos = "" Variable "".
Neg = "" Variable "".
Variable = Ident.
Weight = "" int "".
ClauseCount = "" int "".
List(S) ~ {S} .
Main = String.