From: <jom...@us...> - 2016-02-24 15:55:07
|
Revision: 1872 http://sourceforge.net/p/jason/svn/1872 Author: jomifred Date: 2016-02-24 15:55:05 +0000 (Wed, 24 Feb 2016) Log Message: ----------- improve directive API Modified Paths: -------------- trunk/src/jason/asSyntax/directives/Directive.java trunk/src/jason/asSyntax/directives/DirectiveProcessor.java trunk/src/jason/asSyntax/directives/FunctionRegister.java trunk/src/jason/asSyntax/directives/Include.java trunk/src/jason/asSyntax/directives/NameSpace.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/jason/asSyntax/patterns/goal/BC.java trunk/src/jason/asSyntax/patterns/goal/DG.java trunk/src/jason/asSyntax/patterns/goal/EBDG.java trunk/src/jason/asSyntax/patterns/goal/MG.java trunk/src/jason/asSyntax/patterns/goal/OMC.java trunk/src/jason/asSyntax/patterns/goal/RC.java trunk/src/jason/asSyntax/patterns/goal/SGA.java trunk/src/jason/asSyntax/patterns/goal/SMC.java trunk/src/test/ASParserTest.java trunk/src/test/NSTest.java Added Paths: ----------- trunk/src/jason/asSyntax/directives/DefaultDirective.java Added: trunk/src/jason/asSyntax/directives/DefaultDirective.java =================================================================== --- trunk/src/jason/asSyntax/directives/DefaultDirective.java (rev 0) +++ trunk/src/jason/asSyntax/directives/DefaultDirective.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -0,0 +1,24 @@ +package jason.asSyntax.directives; + +import jason.asSemantics.Agent; +import jason.asSyntax.Pred; +import jason.asSyntax.parser.as2j; + +public abstract class DefaultDirective implements Directive { + + @Override + public boolean isSingleton() { + return true; + } + + public void begin(Pred directive, as2j parser) { + } + + public Agent process(Pred directive, Agent outerContent, Agent innerContent) { + return innerContent; + } + + public void end(Pred directive, as2j parser) { + } + +} Modified: trunk/src/jason/asSyntax/directives/Directive.java =================================================================== --- trunk/src/jason/asSyntax/directives/Directive.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/directives/Directive.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -2,6 +2,7 @@ import jason.asSemantics.Agent; import jason.asSyntax.Pred; +import jason.asSyntax.parser.as2j; /** * Interface for all compiler directives (e.g. include and goal patterns). @@ -46,6 +47,9 @@ * @author jomi */ public interface Directive { + /** called when the directive is declared */ + void begin(Pred directive, as2j parser); + /** * This method is called to process the directive. * @@ -55,4 +59,10 @@ * @return the agent (plans, bels, ...) with the result of the directive. */ Agent process(Pred directive, Agent outerContent, Agent innerContent); + + /** called when the directive ends */ + void end(Pred directive, as2j parser); + + /** returns true if the same instance will be used by all agents/parsers in the JVM */ + boolean isSingleton(); } Modified: trunk/src/jason/asSyntax/directives/DirectiveProcessor.java =================================================================== --- trunk/src/jason/asSyntax/directives/DirectiveProcessor.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/directives/DirectiveProcessor.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -1,6 +1,5 @@ package jason.asSyntax.directives; -import jason.asSemantics.Agent; import jason.asSyntax.Pred; import jason.asSyntax.patterns.goal.BC; import jason.asSyntax.patterns.goal.BDG; @@ -27,42 +26,101 @@ * @author jomi * */ +@SuppressWarnings("rawtypes") public class DirectiveProcessor { static Logger logger = Logger.getLogger(DirectiveProcessor.class.getName()); - private static Map<String,Directive> directives = new HashMap<String,Directive>(); + private static Map<String,Class> directives = new HashMap<String,Class>(); + private Map<String,Directive> instances = new HashMap<String,Directive>(); + private static Map<String,Directive> singletons = new HashMap<String,Directive>(); - public static void addDirective(String id, Directive d) { + public static void registerDirective(String id, Class d) { directives.put(id,d); } + public static Directive getDirective(String id) { - return directives.get(id); + Directive d = singletons.get(id); + if (d != null) + return d; + + // create the instance + Class c = directives.get(id); + if (c == null) { + logger.log(Level.SEVERE, "Unknown directive "+id); + return null; + } + + try { + d = (Directive)c.newInstance(); + if (d.isSingleton()) + singletons.put(id, d); + return d; + } catch (Exception e) { + e.printStackTrace(); + } + return null; } - public static Directive removeDirective(String id) { - return directives.remove(id); - } + //public static Directive removeDirective(String id) { + // return directives.remove(id); + //} + // add known directives static { - addDirective("include", new Include()); - addDirective("register_function", new FunctionRegister()); - addDirective("namespace", new NameSpace()); + registerDirective("include", Include.class); + registerDirective("register_function", FunctionRegister.class); + registerDirective("namespace", NameSpace.class); - addDirective("dg", new DG()); - addDirective("bdg", new BDG()); - addDirective("ebdg", new EBDG()); - addDirective("bc", new BC()); - addDirective("smc", new SMC()); - addDirective("rc", new RC()); - addDirective("omc", new OMC()); - addDirective("mg", new MG()); - addDirective("sga", new SGA()); + registerDirective("dg", DG.class); + registerDirective("bdg", BDG.class); + registerDirective("ebdg",EBDG.class); + registerDirective("bc", BC.class); + registerDirective("smc", SMC.class); + registerDirective("rc", RC.class); + registerDirective("omc", OMC.class); + registerDirective("mg", MG.class); + registerDirective("sga", SGA.class); } - public static Agent process(Pred directive, Agent outerAg, Agent innerAg) { + public Directive getInstance(Pred directive) { + return getInstance(directive.getFunctor()); + } + + public Directive getInstance(String id) { + Directive d = instances.get(id); + if (d != null) + return d; + + d = singletons.get(id); + if (d != null) + return d; + + // create the instance + Class c = directives.get(id); + if (c == null) { + logger.log(Level.SEVERE, "Unknown directive "+id); + return null; + } + try { - logger.fine("Processing directive "+directive); - Directive d = directives.get(directive.getFunctor()); + d = (Directive)c.newInstance(); + if (d.isSingleton()) + singletons.put(id, d); + else + instances.put(id, d); + return d; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + +/* + public Agent process(Pred directive, Agent outerAg, Agent innerAg) { + try { + //logger.fine("Processing directive "+directive); + Directive d = get(directive.getFunctor()); if (d != null) { return d.process(directive, outerAg, innerAg); } else { @@ -73,5 +131,6 @@ } return null; } - +*/ + } Modified: trunk/src/jason/asSyntax/directives/FunctionRegister.java =================================================================== --- trunk/src/jason/asSyntax/directives/FunctionRegister.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/directives/FunctionRegister.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -32,7 +32,7 @@ * * @author Jomi */ -public class FunctionRegister implements Directive { +public class FunctionRegister extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(FunctionRegister.class.getName()); private static Map<String,ArithFunction> functions = new HashMap<String,ArithFunction>(); Modified: trunk/src/jason/asSyntax/directives/Include.java =================================================================== --- trunk/src/jason/asSyntax/directives/Include.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/directives/Include.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -18,7 +18,7 @@ import java.util.logging.Logger; /** Implementation of the <code>include</code> directive. */ -public class Include implements Directive { +public class Include extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(Include.class.getName()); public static final String CRPrefix = "ClassResource:"; Modified: trunk/src/jason/asSyntax/directives/NameSpace.java =================================================================== --- trunk/src/jason/asSyntax/directives/NameSpace.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/directives/NameSpace.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -3,9 +3,11 @@ import jason.asSemantics.Agent; import jason.asSyntax.Atom; import jason.asSyntax.Pred; +import jason.asSyntax.parser.as2j; import java.util.HashMap; import java.util.Map; +import java.util.Stack; /** Implementation of the <code>namespace</code> directive. */ public class NameSpace implements Directive { @@ -14,21 +16,39 @@ private Map<Atom,Atom> localNSs = new HashMap<Atom,Atom>(); + @Override + public boolean isSingleton() { + return false; + } + + @Override public Agent process(Pred directive, Agent outerContent, Agent innerContent) { return innerContent; } - public Atom declareNS(Pred directive) { + Stack<Atom> oldNS = new Stack<Atom>(); + + @Override + public void begin(Pred directive, as2j parser) { + oldNS.push(parser.getNS()); Atom ns = new Atom( ((Atom)directive.getTerm(0)).getFunctor() ); if (directive.getArity() > 1) { String type = ((Atom)directive.getTerm(1)).getFunctor(); if (type.equals("local")) { - return addLocalNS(ns); + ns = addLocalNS(ns); } } - return ns; + parser.setNS(ns); + //return ns; } + @Override + public void end(Pred directive, as2j parser) { + Atom ns = oldNS.pop(); + if (ns != null) + parser.setNS(ns); + } + public boolean isLocalNS(Atom ns) { return localNSs.get(ns) != null; } Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-02-24 15:55:05 UTC (rev 1872) @@ -53,7 +53,8 @@ private String asSource = null; private Agent curAg = null; private Atom namespace = Literal.DefaultNS; - private NameSpace nsDirective = new NameSpace(); + private DirectiveProcessor directiveProcessor = new DirectiveProcessor(); + private NameSpace nsDirective = (NameSpace)directiveProcessor.getInstance("namespace"); private static Logger logger = Logger.getLogger("aslparser"); private static Set<String> parsedFiles = new HashSet<String>(); @@ -61,7 +62,8 @@ public void setAg(Agent ag) { curAg = ag; } public void setNS(Atom ns) { namespace = ns; } - + public Atom getNS() { return namespace; } + private String getSourceRef(SourceInfo s) { if (s == null) return "[]"; @@ -259,27 +261,23 @@ ( LOOKAHEAD(4) <TK_BEGIN> dir = pred() "}" { Agent innerAg = new Agent(); innerAg.initAg(); - if (dir.getFunctor().equals("namespace")) { - Atom newNS = nsDirective.declareNS(dir); // to declare the namespace as local - oldNS = namespace; - setNS( newNS ); - } + directiveProcessor.getInstance(dir).begin(dir,this); } isEOF = agent(innerAg) { if (isEOF) throw new ParseException(getSourceRef(dir)+" The directive '{ begin "+dir+"}' does not end with '{ end }'."); - else - resultOfDirective = DirectiveProcessor.process(dir, outerAg, innerAg); - if (oldNS != null) - setNS( oldNS ); + + resultOfDirective = directiveProcessor.getInstance(dir).process(dir, outerAg, innerAg); + directiveProcessor.getInstance(dir).end(dir,this); } | dir = pred() "}" { if (dir.toString().equals("end")) return true; - if (dir.getFunctor().equals("namespace")) - nsDirective.declareNS(dir); // to declare the namespace as local - resultOfDirective = DirectiveProcessor.process(dir, outerAg, null); + Directive d = directiveProcessor.getInstance(dir); + d.begin(dir, this); // to declare the namespace as local + resultOfDirective = d.process(dir, outerAg, null); + d.end(dir, this); } ) { if (resultOfDirective != null && outerAg != null) { Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/parser/as2j.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -22,7 +22,8 @@ private String asSource = null; private Agent curAg = null; private Atom namespace = Literal.DefaultNS; - private NameSpace nsDirective = new NameSpace(); + private DirectiveProcessor directiveProcessor = new DirectiveProcessor(); + private NameSpace nsDirective = (NameSpace)directiveProcessor.getInstance("namespace"); private static Logger logger = Logger.getLogger("aslparser"); private static Set<String> parsedFiles = new HashSet<String>(); @@ -30,6 +31,7 @@ public void setAg(Agent ag) { curAg = ag; } public void setNS(Atom ns) { namespace = ns; } + public Atom getNS() { return namespace; } private String getSourceRef(SourceInfo s) { if (s == null) @@ -267,18 +269,13 @@ dir = pred(); jj_consume_token(31); Agent innerAg = new Agent(); innerAg.initAg(); - if (dir.getFunctor().equals("namespace")) { - Atom newNS = nsDirective.declareNS(dir); // to declare the namespace as local - oldNS = namespace; - setNS( newNS ); - } + directiveProcessor.getInstance(dir).begin(dir,this); isEOF = agent(innerAg); if (isEOF) {if (true) throw new ParseException(getSourceRef(dir)+" The directive '{ begin "+dir+"}' does not end with '{ end }'.");} - else - resultOfDirective = DirectiveProcessor.process(dir, outerAg, innerAg); - if (oldNS != null) - setNS( oldNS ); + + resultOfDirective = directiveProcessor.getInstance(dir).process(dir, outerAg, innerAg); + directiveProcessor.getInstance(dir).end(dir,this); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TK_BEGIN: @@ -288,9 +285,10 @@ jj_consume_token(31); if (dir.toString().equals("end")) {if (true) return true;} - if (dir.getFunctor().equals("namespace")) - nsDirective.declareNS(dir); // to declare the namespace as local - resultOfDirective = DirectiveProcessor.process(dir, outerAg, null); + Directive d = directiveProcessor.getInstance(dir); + d.begin(dir, this); // to declare the namespace as local + resultOfDirective = d.process(dir, outerAg, null); + d.end(dir, this); break; default: jj_la1[8] = jj_gen; @@ -1645,6 +1643,22 @@ finally { jj_save(3, xla); } } + final private boolean jj_3R_115() { + if (jj_3R_122()) return true; + return false; + } + + final private boolean jj_3R_60() { + if (jj_scan_token(TK_NOT)) return true; + if (jj_3R_52()) return true; + return false; + } + + final private boolean jj_3R_114() { + if (jj_3R_121()) return true; + return false; + } + final private boolean jj_3R_108() { Token xsp; xsp = jj_scanpos; @@ -2244,6 +2258,14 @@ return false; } + final private boolean jj_3_1() { + if (jj_scan_token(TK_BEGIN)) return true; + if (jj_3R_13()) return true; + if (jj_scan_token(31)) return true; + if (jj_3R_14()) return true; + return false; + } + final private boolean jj_3R_98() { Token xsp; xsp = jj_scanpos; @@ -2271,16 +2293,13 @@ return false; } - final private boolean jj_3R_37() { - if (jj_scan_token(TK_FALSE)) return true; + final private boolean jj_3R_43() { + if (jj_scan_token(30)) return true; return false; } - final private boolean jj_3_1() { - if (jj_scan_token(TK_BEGIN)) return true; - if (jj_3R_13()) return true; - if (jj_scan_token(31)) return true; - if (jj_3R_14()) return true; + final private boolean jj_3R_37() { + if (jj_scan_token(TK_FALSE)) return true; return false; } @@ -2294,11 +2313,6 @@ return false; } - final private boolean jj_3R_43() { - if (jj_scan_token(30)) return true; - return false; - } - final private boolean jj_3R_50() { if (jj_3R_13()) return true; return false; @@ -2521,6 +2535,11 @@ return false; } + final private boolean jj_3R_28() { + if (jj_3R_46()) return true; + return false; + } + final private boolean jj_3R_73() { if (jj_3R_78()) return true; return false; @@ -2531,8 +2550,8 @@ return false; } - final private boolean jj_3R_28() { - if (jj_3R_46()) return true; + final private boolean jj_3R_27() { + if (jj_3R_45()) return true; return false; } @@ -2548,28 +2567,18 @@ return false; } - final private boolean jj_3R_27() { - if (jj_3R_45()) return true; - return false; - } - - final private boolean jj_3R_119() { - if (jj_3R_108()) return true; - return false; - } - final private boolean jj_3R_26() { if (jj_3R_44()) return true; return false; } - final private boolean jj_3R_118() { - if (jj_scan_token(41)) return true; + final private boolean jj_3R_25() { + if (jj_3R_43()) return true; return false; } - final private boolean jj_3R_25() { - if (jj_3R_43()) return true; + final private boolean jj_3R_119() { + if (jj_3R_108()) return true; return false; } @@ -2595,6 +2604,11 @@ return false; } + final private boolean jj_3R_118() { + if (jj_scan_token(41)) return true; + return false; + } + final private boolean jj_3R_117() { if (jj_3R_124()) return true; return false; @@ -2610,22 +2624,6 @@ return false; } - final private boolean jj_3R_115() { - if (jj_3R_122()) return true; - return false; - } - - final private boolean jj_3R_60() { - if (jj_scan_token(TK_NOT)) return true; - if (jj_3R_52()) return true; - return false; - } - - final private boolean jj_3R_114() { - if (jj_3R_121()) return true; - return false; - } - public as2jTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; Modified: trunk/src/jason/asSyntax/patterns/goal/BC.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/BC.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/BC.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -4,6 +4,7 @@ import jason.asSyntax.ASSyntax; import jason.asSyntax.Pred; import jason.asSyntax.Term; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import jason.asSyntax.directives.DirectiveProcessor; @@ -15,7 +16,7 @@ * * @author jomi */ -public class BC implements Directive { +public class BC extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(BC.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/DG.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/DG.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/DG.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -9,6 +9,7 @@ import jason.asSyntax.Plan; import jason.asSyntax.Pred; import jason.asSyntax.PlanBody.BodyType; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import java.util.logging.Level; @@ -19,7 +20,7 @@ * * @author jomi */ -public class DG implements Directive { +public class DG extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(DG.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/EBDG.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/EBDG.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/EBDG.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -12,6 +12,7 @@ import jason.asSyntax.Pred; import jason.asSyntax.LogExpr.LogicalOp; import jason.asSyntax.PlanBody.BodyType; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import java.util.logging.Level; @@ -22,7 +23,7 @@ * * @author jomi */ -public class EBDG implements Directive { +public class EBDG extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(EBDG.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/MG.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/MG.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/MG.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -4,6 +4,7 @@ import jason.asSyntax.ASSyntax; import jason.asSyntax.Literal; import jason.asSyntax.Pred; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import jason.asSyntax.directives.DirectiveProcessor; import jason.bb.BeliefBase; @@ -16,7 +17,7 @@ * * @author jomi */ -public class MG implements Directive { +public class MG extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(MG.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/OMC.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/OMC.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/OMC.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -6,6 +6,7 @@ import jason.asSyntax.Pred; import jason.asSyntax.SourceInfo; import jason.asSyntax.Term; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import jason.asSyntax.directives.DirectiveProcessor; @@ -17,7 +18,7 @@ * * @author jomi */ -public class OMC implements Directive { +public class OMC extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(OMC.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/RC.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/RC.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/RC.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -4,6 +4,7 @@ import jason.asSyntax.ASSyntax; import jason.asSyntax.Pred; import jason.asSyntax.Term; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import jason.asSyntax.directives.DirectiveProcessor; @@ -15,7 +16,7 @@ * * @author jomi */ -public class RC implements Directive { +public class RC extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(RC.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/SGA.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/SGA.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/SGA.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -8,6 +8,7 @@ import jason.asSyntax.StringTerm; import jason.asSyntax.Term; import jason.asSyntax.Trigger; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import java.util.logging.Level; @@ -18,7 +19,7 @@ * * @author jomi */ -public class SGA implements Directive { +public class SGA extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(SGA.class.getName()); Modified: trunk/src/jason/asSyntax/patterns/goal/SMC.java =================================================================== --- trunk/src/jason/asSyntax/patterns/goal/SMC.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/jason/asSyntax/patterns/goal/SMC.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -4,6 +4,7 @@ import jason.asSyntax.ASSyntax; import jason.asSyntax.Pred; import jason.asSyntax.Term; +import jason.asSyntax.directives.DefaultDirective; import jason.asSyntax.directives.Directive; import jason.asSyntax.directives.DirectiveProcessor; @@ -15,7 +16,7 @@ * * @author jomi */ -public class SMC implements Directive { +public class SMC extends DefaultDirective implements Directive { static Logger logger = Logger.getLogger(SMC.class.getName()); Modified: trunk/src/test/ASParserTest.java =================================================================== --- trunk/src/test/ASParserTest.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/test/ASParserTest.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -326,6 +326,7 @@ parseDir(f); } else if (f.getName().endsWith(MAS2JProject.AS_EXT)) { if (f.getName().equals("search.asl")) continue; // ignore this file + if (f.getName().equals("b.asl")) continue; // ignore this file as2j parser = new as2j(new FileInputStream(f)); //Agent ag = new Agent(); //ag.init(); Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2016-02-24 14:32:39 UTC (rev 1871) +++ trunk/src/test/NSTest.java 2016-02-24 15:55:05 UTC (rev 1872) @@ -6,6 +6,7 @@ import jason.asSyntax.ASSyntax; import jason.asSyntax.Atom; import jason.asSyntax.Literal; +import jason.asSyntax.Plan; import jason.asSyntax.Term; import jason.asSyntax.VarTerm; import jason.asSyntax.parser.ParseException; @@ -252,7 +253,7 @@ "{end}\n"+ "{begin namespace(ns2,local)}\n"+ " b4(t). "+ - " +tk <- .print(t); !g5(u). "+ + " +tk <- .print(t); +ns1::tick; !g5(u). "+ "{end}\n"+ "b5(i)."+ "{namespace(ns3,local)}\n"+ @@ -265,10 +266,11 @@ parser.agent(a); a.addInitialBelsInBB(); //System.out.println(a.getBB()); - //System.out.println(a.getPL().toString()); + for (Plan p: a.getPL()) + System.out.println(p); assertTrue(a.getPL().toString().contains("+ns1::tick <- .print(ns1::t); !ns1::g(ns1::u)")); + assertTrue(a.getPL().toString().contains("+#1ns2::tk <- .print(#1ns2::t); +ns1::tick; !#1ns2::g5(#1ns2::u)")); assertTrue(a.getPL().toString().contains("+!nsd::g2(nsd::V) <- +nsd::b3(nsd::h); +ns1::tick; +#1ns2::tk; +#2ns3::b5(#1ns2::t)")); - assertTrue(a.getPL().toString().contains("+#1ns2::tk <- .print(#1ns2::t); !#1ns2::g5(#1ns2::u)")); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |