=========== comparisons =========== from File f where (f = f) or f != f and f < f and (f > f or f <= f) and f >= f select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (disjunction (par_expr (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (conjunction (conjunction (conjunction (comp_term (variable (varName (simpleId))) (compop (ne)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (lt)) (variable (varName (simpleId))))) (par_expr (disjunction (comp_term (variable (varName (simpleId))) (compop (gt)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (le)) (variable (varName (simpleId))))))) (comp_term (variable (varName (simpleId))) (compop (ge)) (variable (varName (simpleId)))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ========== instanceof ========== from Foo f where f instanceof Foo select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (instance_of (variable (varName (simpleId))) (instanceof) (typeExpr (className))) (asExprs (asExpr (variable (varName (simpleId)))))))) ===== range ===== from int i where i in [0..10] select i --- (ql (moduleMember (select (varDecl (typeExpr (typeLiteral)) (varName (simpleId))) (in_expr (variable (varName (simpleId))) (in) (range (literal (integer)) (literal (integer)))) (asExprs (asExpr (variable (varName (simpleId)))))))) ================= predicateRef call ================= from int i where bar(i) and module::baz+() select i --- (ql (moduleMember (select (varDecl (typeExpr (typeLiteral)) (varName (simpleId))) (conjunction (classless_predicate_call (aritylessPredicateExpr (literalId)) (variable (varName (simpleId)))) (classless_predicate_call (aritylessPredicateExpr (moduleExpr (simpleId)) (literalId)) (closure (plus)))) (asExprs (asExpr (variable (varName (simpleId)))))))) ================================= calls with results & method calls ================================= from int i select i.foo+(), 1.foo(), 1.1.foo() --- (ql (moduleMember (select (varDecl (typeExpr (typeLiteral)) (varName (simpleId))) (asExprs (asExpr (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName) (closure (plus))))) (asExpr (qualified_expr (literal (integer)) (qualifiedRhs (predicateName)))) (asExpr (qualified_expr (literal (float)) (qualifiedRhs (predicateName)))))))) ============== quantification ============== from Foo f where exists(f.aThing()) or exists(Foo f | f.aThing()) or exists(Foo f | f.aThing() | f.aThing()) or forall(Foo f | f.aThing() | f.aThing()) or forex(Foo f | f.aThing() | f.aThing()) select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (disjunction (disjunction (disjunction (disjunction (quantified (quantifier (exists)) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName)))) (quantified (quantifier (exists)) (varDecl (typeExpr (className)) (varName (simpleId))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))))) (quantified (quantifier (exists)) (varDecl (typeExpr (className)) (varName (simpleId))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))))) (quantified (quantifier (forall)) (varDecl (typeExpr (className)) (varName (simpleId))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))))) (quantified (quantifier (forex)) (varDecl (typeExpr (className)) (varName (simpleId))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))) (qualified_expr (variable (varName (simpleId))) (qualifiedRhs (predicateName))))) (asExprs (asExpr (variable (varName (simpleId))))))))