==== cast ==== select (Foo) f --- (ql (moduleMember (select (asExprs (asExpr (prefix_cast (typeExpr (className)) (variable (varName (simpleId))))))))) ======== dontcare ======== select foo(_) --- (ql (moduleMember (select (asExprs (asExpr (classless_predicate_call (aritylessPredicateExpr (literalId)) (underscore))))))) ==== unop ==== select - 5, + 5 --- (ql (moduleMember (select (asExprs (asExpr (unary_expr (unop (minus)) (literal (integer)))) (asExpr (unary_expr (unop (plus)) (literal (integer)))))))) ===== binop ===== select 5 + 5, 5 - 5, 5 * 5, 5 / 5, 5 % 5 --- (ql (moduleMember (select (asExprs (asExpr (add_expr (literal (integer)) (addop (plus)) (literal (integer)))) (asExpr (add_expr (literal (integer)) (addop (minus)) (literal (integer)))) (asExpr (mul_expr (literal (integer)) (mulop (star)) (literal (integer)))) (asExpr (mul_expr (literal (integer)) (mulop (slash)) (literal (integer)))) (asExpr (mul_expr (literal (integer)) (mulop (mod)) (literal (integer)))))))) ================ binop precedence ================ select // left associative 5 + 5 - 5, 5 - 5 + 5, // mul binds tighter 5 + 5 * 5, 5 + 5 / 5, 5 * 5 + 5, 5 / 5 + 5, // left associative 5 / 5 * 5, 5 * 5 / 5, // mod tighter, 5 * 5 % 5, 5 % 5 * 5 --- (ql (moduleMember (select (line_comment) (asExprs (asExpr (add_expr (add_expr (literal (integer)) (addop (plus)) (literal (integer))) (addop (minus)) (literal (integer)))) (asExpr (add_expr (add_expr (literal (integer)) (addop (minus)) (literal (integer))) (addop (plus)) (literal (integer)))) (line_comment) (asExpr (add_expr (literal (integer)) (addop (plus)) (mul_expr (literal (integer)) (mulop (star)) (literal (integer))))) (asExpr (add_expr (literal (integer)) (addop (plus)) (mul_expr (literal (integer)) (mulop (slash)) (literal (integer))))) (asExpr (add_expr (mul_expr (literal (integer)) (mulop (star)) (literal (integer))) (addop (plus)) (literal (integer)))) (asExpr (add_expr (mul_expr (literal (integer)) (mulop (slash)) (literal (integer))) (addop (plus)) (literal (integer)))) (line_comment) (asExpr (mul_expr (mul_expr (literal (integer)) (mulop (slash)) (literal (integer))) (mulop (star)) (literal (integer)))) (asExpr (mul_expr (mul_expr (literal (integer)) (mulop (star)) (literal (integer))) (mulop (slash)) (literal (integer)))) (line_comment) (asExpr (mul_expr (mul_expr (literal (integer)) (mulop (star)) (literal (integer))) (mulop (mod)) (literal (integer)))) (asExpr (mul_expr (mul_expr (literal (integer)) (mulop (mod)) (literal (integer))) (mulop (star)) (literal (integer))))))))