001package org.clafer.ast; 002 003import org.clafer.common.Check; 004 005/** 006 * Negate a boolean expression. 007 * 008 * @author jimmy 009 */ 010public class AstNot implements AstBoolExpr { 011 012 private final AstBoolExpr expr; 013 014 AstNot(AstBoolExpr expr) { 015 this.expr = Check.notNull(expr); 016 } 017 018 /** 019 * Returns the expression to negated. 020 * 021 * @return the expression to negate 022 */ 023 public AstBoolExpr getExpr() { 024 return expr; 025 } 026 027 /** 028 * {@inheritDoc} 029 */ 030 @Override 031 public <A, B> B accept(AstExprVisitor<A, B> visitor, A a) { 032 return visitor.visit(this, a); 033 } 034 035 /** 036 * {@inheritDoc} 037 */ 038 @Override 039 public String toString() { 040 return "!(" + expr + ")"; 041 } 042}