/* Clock2Xml */

import java.util.ArrayList;

public class _Clock2Xml implements Visitor
{
  public void visit(Rule rule)
  {
    rule.visit(this);
  }

  public Object visit_Clock(Parser.Clock rule)
  {
    System.out.println("<Clock>");
    if (visitRules(rule.rules).booleanValue()) System.out.println("");
    System.out.println("</Clock>");

    return Boolean.FALSE;
  }

  public Object visit_Hours(Parser.Hours rule)
  {
    System.out.println("<Hours>");
    if (visitRules(rule.rules).booleanValue()) System.out.println("");
    System.out.println("</Hours>");

    return Boolean.FALSE;
  }

  public Object visit_Minutes(Parser.Minutes rule)
  {
    System.out.println("<Minutes>");
    if (visitRules(rule.rules).booleanValue()) System.out.println("");
    System.out.println("</Minutes>");

    return Boolean.FALSE;
  }

  public Object visit_Seconds(Parser.Seconds rule)
  {
    System.out.println("<Seconds>");
    if (visitRules(rule.rules).booleanValue()) System.out.println("");
    System.out.println("</Seconds>");

    return Boolean.FALSE;
  }

  public Object visit_Separator(Parser.Separator rule)
  {
    /* ----------------------- */
    /* DON'T OUTPUT SEPARATORS */
    /* ----------------------- */
    return Boolean.FALSE;
  }

  public Object visit_StringValue(Parser.StringValue value)
  {
    System.out.print(value.spelling);
    return Boolean.TRUE;
  }

  public Object visit_NumericValue(Parser.NumericValue value)
  {
    System.out.print(value.spelling);
    return Boolean.TRUE;
  }

  private Boolean visitRules(ArrayList<Rule> rules)
  {
    Boolean terminal = Boolean.FALSE;
    for (Rule rule : rules)
      terminal = (Boolean)rule.visit(this);
    return terminal;
  }
}

/* eof */