001package org.clafer.ast; 002 003/** 004 * Dynamic dispatch for AST expressions. 005 * 006 * @param <A> the parameter type 007 * @param <B> the return type 008 * @author jimmy 009 */ 010public interface AstExprVisitor<A, B> { 011 012 public B visit(AstThis ast, A a); 013 014 public B visit(AstGlobal ast, A a); 015 016 public B visit(AstConstant ast, A a); 017 018 public B visit(AstJoin ast, A a); 019 020 public B visit(AstJoinParent ast, A a); 021 022 public B visit(AstJoinRef ast, A a); 023 024 public B visit(AstNot ast, A a); 025 026 public B visit(AstMinus ast, A a); 027 028 public B visit(AstCard ast, A a); 029 030 public B visit(AstSetTest ast, A a); 031 032 public B visit(AstCompare ast, A a); 033 034 public B visit(AstArithm ast, A a); 035 036 public B visit(AstSum ast, A a); 037 038 public B visit(AstBoolArithm ast, A a); 039 040 public B visit(AstDifference ast, A a); 041 042 public B visit(AstIntersection ast, A a); 043 044 public B visit(AstUnion ast, A a); 045 046 public B visit(AstMembership ast, A a); 047 048 public B visit(AstTernary ast, A a); 049 050 public B visit(AstIfThenElse ast, A a); 051 052 public B visit(AstDowncast ast, A a); 053 054 public B visit(AstUpcast ast, A a); 055 056 public B visit(AstLocal ast, A a); 057 058 public B visit(AstQuantify ast, A a); 059}