ROOT ::= EXPR* EXPR ::= | OR | ASSERT ASSERT ::= assert EXPR eq EXPR 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 | opar EXPR cpar BUILTIN ::= | int | bool