
org.bitbucket.gkutiel.at.VisitorCmd Maven / Gradle / Ivy
package org.bitbucket.gkutiel.at;
import static org.bitbucket.gkutiel.at.CmdLoader.loadCmd;
import java.util.List;
import java.util.Stack;
public class VisitorCmd implements Visitor {
Stack cmds = new Stack<>();
public VisitorCmd() {
cmds.push(new CmdRoot());
}
public Cmd getRootCmd() {
if (cmds.size() != 1) throw new RuntimeException("expecting 1 cmd, found " + cmds.size());
return cmds.pop();
}
@Override public void visit(final List children) {
children.forEach(t -> t.accept(this));
}
@Override public void visitAt(final At at, final List children) {
final Cmd cmd = loadCmd(at);
cmds.peek().add(cmd);
cmds.push(cmd);
children.forEach(n -> n.accept(this));
cmds.pop();
}
@Override public void visitText(final String txt) {
cmds.peek().add(new CmdText(txt));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy