All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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