package oops;
import java.util.Vector;
import oops.parser.Goal;
import oops.parser.GoalAdapter;

/** lines: [{ [ sum ] '\n' }].
    -Dlines.gen=true to reduce to a Vector,
    -Dlines.gen=false to evaluate.
  */
public class lines extends GoalAdapter {
  /** stores a tree for each sum.
      @serial lines Vector with one tree per sum
    */
  protected Vector lines;
  { if (Boolean.getBoolean("lines.gen")) lines = new Vector(); }

  /** presents result of reduction.
      @param sender just received reduce().
      @param node was created by sender.
    */
  public void shift (Goal sender, Object node) {
    if (lines == null) System.out.println(((Number)node).floatValue());
    else lines.addElement(node);
  }

  /** concludes rule recognition.
      @return null or Vector of sum trees.
    */
  public Object reduce () {
    return lines;
  }
}

