Compute ::= Expr | Decision '?' Compute ':' Compute

Decision ::= Decision ('||' | 'or') AndDecision | AndDecision

AndDecision ::= AndDecision ('&&' | 'and') NotDecision | NotDecision

NotDecision ::= '!' Comparison | Comparison

Comparison ::= '(' Decision ')' | Expr ('<' | '>' | '<=' | '>=' | '==' |

'!=') Expr

Expr ::= Expr '+' Term | Expr '-' Term | Expr '+.' Term | Term

Term ::= Term '*' NFactor | Term '/' NFactor | Term '%' NFactor | NFactor

Nfactor ::= Factor | '-' Factor

Factor ::= Value '^' NFactor | Value