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