package formulaVisited;


/**
  A visitor that produces a string representation
  for each formula.
*/
public class VisitorToString implements Visitor {

  public Object visit(Conjunction _f) {
    return "(" + (String) _f.left .accept(this) +
           "&" + (String) _f.right.accept(this) + ")";
  }

  public Object visit(Disjunction _f) {
    return "[" + (String) _f.left .accept(this) +
           "|" + (String) _f.right.accept(this) + "]";
  }

  public Object visit(LogicalConstant _f) {
    if (LogicalConstant.one().equals(_f)) {  return "1";  }
    else                                  {  return "0";  }
  }

  public Object visit(LogicalVariable _f) {
    return _f.name;
  }

  public Object visit(Negation _f) {
    return "~" + _f.subformula.accept(this);
  }

}

