001package org.clafer.ast; 002 003import org.clafer.common.Check; 004 005/** 006 * 007 * @author jimmy 008 */ 009public class AstCompare implements AstBoolExpr { 010 011 private final AstSetExpr left; 012 private final Op op; 013 private final AstSetExpr right; 014 015 AstCompare(AstSetExpr left, Op op, AstSetExpr right) { 016 this.left = Check.notNull(left); 017 this.op = Check.notNull(op); 018 this.right = Check.notNull(right); 019 } 020 021 public Op getOp() { 022 return op; 023 } 024 025 public AstSetExpr getLeft() { 026 return left; 027 } 028 029 public AstSetExpr getRight() { 030 return right; 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 left + " " + op.getSyntax() + " " + right; 041 } 042 043 public static enum Op { 044 045 LessThan("<"), 046 LessThanEqual("<="), 047 GreaterThan(">"), 048 GreaterThanEqual(">="); 049 private final String syntax; 050 051 private Op(String syntax) { 052 this.syntax = syntax; 053 } 054 055 public String getSyntax() { 056 return syntax; 057 } 058 } 059}