/* Clock2Xml.java */
import java.util.ArrayList;
public class Clock2Xml implements Visitor
{
private boolean terminal = true;
public Object visit(Rule_Clock rule)
{
if (!terminal) System.out.println();
System.out.print("<Clock>");
terminal = false;
visitRules(rule.rules);
if (!terminal) System.out.println();
System.out.print("</Clock>");
terminal = false;
return null;
}
public Object visit(Rule_Hours rule)
{
if (!terminal) System.out.println();
System.out.print("<Hours>");
terminal = false;
visitRules(rule.rules);
if (!terminal) System.out.println();
System.out.print("</Hours>");
terminal = false;
return null;
}
public Object visit(Rule_Minutes rule)
{
if (!terminal) System.out.println();
System.out.print("<Minutes>");
terminal = false;
visitRules(rule.rules);
if (!terminal) System.out.println();
System.out.print("</Minutes>");
terminal = false;
return null;
}
public Object visit(Rule_Seconds rule)
{
if (!terminal) System.out.println();
System.out.print("<Seconds>");
terminal = false;
visitRules(rule.rules);
if (!terminal) System.out.println();
System.out.print("</Seconds>");
terminal = false;
return null;
}
public Object visit(Rule_Separator rule)
{
/* ----------------------- */
/* DON'T OUTPUT SEPARATORS */
/* ----------------------- */
return null;
}
public Object visit(Terminal_StringValue value)
{
System.out.print(value.spelling);
terminal = true;
return null;
}
public Object visit(Terminal_NumericValue value)
{
System.out.print(value.spelling);
terminal = true;
return null;
}
private Boolean visitRules(ArrayList<Rule> rules)
{
for (Rule rule : rules)
rule.accept(this);
return null;
}
}
/* eof */