import tokeniterator.*;

public class AlbBinUtil {


  public static String albBin2string(NodoBin alb) {
    if (alb == null) 
      return "()";
    else 
      return( "(" + alb.info + " " + 
              albBin2string(alb.sinistro) + " " +
              albBin2string(alb.destro) + ")"
        );
  }
  
  
  public static NodoBin string2albBin(String s) {
    // A -> ( B
    // B -> ) | a A A )
    TokenIterator ti = new TokenIterator(s,"()"," ");
    return A(ti);
  }
  
  private static NodoBin A(TokenIterator ti) {
    ti.next(); //ho letto "("
    return B(ti);
  }
  
  private static NodoBin B(TokenIterator ti) {
    String tk = ti.next();
    if (tk.equals(")")) return null;
    else {
      NodoBin a = new NodoBin();
      a.info = tk;
      a.sinistro = A(ti);
      a.destro = A(ti);
      ti.next(); // ho letto ")"
      return a;
    }
  }
}

  
