package nzdis.lang.fipaacl; /**/ import java.util.Hashtable; import nzdis.lang.fipaacl.analysis.DepthFirstAdapter; import nzdis.lang.fipaacl.node.*; /** * Creates the hash of identifiers with parameters as * strings. communicative act is under 'performative' key. * *@author Mariusz Nowostawski *@version @version@ $Revision: 1.1 $ */ public class MessageProcessorWalker extends DepthFirstAdapter { Hashtable hash = new Hashtable(); String performative = "performative"; StringBuffer param = null; String param_key = null; boolean spaceNeeded = false; int indentNeeded = 0; public Hashtable getMessageHash(){ return hash; } public void defaultIn(Node node) { } public void defaultOut(Node node) { } public void defaultCase(Node node) { } public void inAMessage(AMessage node){ hash.put(performative, node.getIdentifier().getText().trim()); } public void inAParameter(AParameter node){ param = new StringBuffer(); param_key = node.getIdentifier().getText().trim(); } public void outAParameter(AParameter node){ hash.put(param_key, param.toString()); } public void inAComplexContent(AComplexContent node){ param.append("("); spaceNeeded = false; } public void outAComplexContent(AComplexContent node){ param.append(")"); spaceNeeded = false; } public void inAIdentifierContent(AIdentifierContent node){ if(spaceNeeded) { param.append(" "); } param.append(node.getIdentifier().getText()); spaceNeeded = true; } public void inAExprContent(AExprContent node){ if(spaceNeeded) { param.append(" "); } param.append(node.getLiteral().getText()); spaceNeeded = true; } public void inAPropertyContent(APropertyContent node){ if(spaceNeeded) { param.append(" "); } param.append(":").append(node.getIdentifier().getText()); spaceNeeded = true; } public void inAStringContent(AStringContent node){ if(spaceNeeded) { param.append(" "); } param.append(node.getString().getText()); spaceNeeded = true; } }