001package org.clafer.ast; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public class AstMembership implements AstBoolExpr { 010 011 private final AstSetExpr member; 012 private final Op op; 013 private final AstSetExpr set; 014 015 AstMembership(AstSetExpr member, Op op, AstSetExpr set) { 016 this.member = Check.notNull(member); 017 this.op = Check.notNull(op); 018 this.set = Check.notNull(set); 019 } 020 021 public AstSetExpr getMember() { 022 return member; 023 } 024 025 public Op getOp() { 026 return op; 027 } 028 029 public AstSetExpr getSet() { 030 return set; 031 } 032 033 @Override 034 public <A, B> B accept(AstExprVisitor<A, B> visitor, A a) { 035 return visitor.visit(this, a); 036 } 037 038 @Override 039 public String toString() { 040 return member + " in " + set; 041 } 042 043 public static enum Op { 044 045 In("in"), 046 NotIn("not in"); 047 private final String syntax; 048 049 private Op(String syntax) { 050 this.syntax = syntax; 051 } 052 053 public String getSyntax() { 054 return syntax; 055 } 056 } 057}