package eis.iilang;
/**
* This interface adheres to the visitor pattern
* (@see <a href="http://en.wikipedia.org/wiki/Visitor_pattern">http://en.wikipedia.org/wiki/Visitor_pattern</a>).
* It should be used whenever an IIL-element is to be transformed into another representation.
* For each such representation a specialized visitor is expected.
*
* Note that this is an object-visitor. That is, each object can take an arbitrary
* object as its second parameter and can return another object.
*
* @author tristanbehrens
*
*/
public interface IILObjectVisitor {
public Object visit(Action element, Object object);
public Object visit(DataContainer element, Object object);
public Object visit(Function element, Object object);
public Object visit(Identifier element, Object object);
public Object visit(IILElement element, Object object);
public Object visit(Numeral element, Object object);
public Object visit(Parameter element, Object object);
public Object visit(ParameterList element, Object object);
public Object visit(Percept element, Object object);
public Object visit(TruthValue element, Object object);
}