MODULE ::= EXPR* EXPR ::= | OR | ASSERT ASSERT ::= (assert_eq|assert_ne) tuple OR ::= AND (or AND)* AND ::= TERM (and TERM)* TERM ::= FACTOR ((add|sub) FACTOR)* FACTOR ::= USUB ((mul|div|mod) USUB)* USUB ::= sub* NOT NOT ::= not* POW POW ::= LITERAL (pow LITERAL)? LITERAL ::= | BUILTIN | TUPLE | opar EXPR cpar TUPLE ::= | opar EXPR+ cpar BUILTIN ::= num | bool