
jason.asSyntax.directives.Directive Maven / Gradle / Ivy
Show all versions of jason Show documentation
package jason.asSyntax.directives;
import jason.asSemantics.Agent;
import jason.asSyntax.Pred;
/**
* Interface for all compiler directives (e.g. include and goal patterns).
*
* There are two kinds of directives: single directive and begin/end directive.
* The single directive does not have inner plans, as, for instance, the
* include:
*
* ...
* { include("a.asl") }
* ...
*
*
*
begin/end directives have inner plans, as used in goal patterns:
*
* ...
* { begin ebdg(g) }
* +!g : bel <- action1.
* +!g <- action2.
* { end }
* ...
*
* This pattern will change these two plans to:
*
* +!g : g.
* +!g : not (p__1(g)) & bel <- +p__1(g); action1; ?g.
* +!g : not (p__2(g)) <- +p__2(g); action2; ?g.
* -!g <- !g.
* +g <- -p__1(g); -p__2(g); .dropGoal(g,true).
*
*
* Goal patterns are proposed in the paper:
*
* Jomi Fred Hubner, Rafael H. Bordini, and Michael Wooldridge.
* Programming declarative goals using plan patterns.
In Matteo
* Baldoni and Ulle Endriss, editors, Proceedings of the Fourth
* International Workshop on Declarative Agent Languages and
* Technologies (DALT 2006), held with AAMAS 2006, 8th May, Hakodate,
* Japan, pages 65-81. Springer, 2006.
*
*
* @author jomi
*/
public interface Directive {
/**
* This method is called to process the directive.
*
* @param directive the directive as defined in the source (e.g. "include("bla.asl")")
* @param outerContent the representation of the agent where the directive is being processed (the method should not change this agent state)
* @param innerContent the content (plans, beliefs, ...) inside the begin/end directive (as in goal patterns)
* @return the agent (plans, bels, ...) with the result of the directive.
*/
Agent process(Pred directive, Agent outerContent, Agent innerContent);
}