You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
(35) |
Apr
(96) |
May
(39) |
Jun
(25) |
Jul
(7) |
Aug
(7) |
Sep
(44) |
Oct
(17) |
Nov
(14) |
Dec
(9) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(5) |
Feb
(28) |
Mar
(26) |
Apr
(14) |
May
(3) |
Jun
(3) |
Jul
(13) |
Aug
(41) |
Sep
(12) |
Oct
|
Nov
(2) |
Dec
(17) |
2010 |
Jan
(9) |
Feb
(5) |
Mar
(11) |
Apr
(3) |
May
(4) |
Jun
(2) |
Jul
(3) |
Aug
(8) |
Sep
(2) |
Oct
(11) |
Nov
(3) |
Dec
(1) |
2011 |
Jan
|
Feb
(1) |
Mar
(8) |
Apr
(4) |
May
(4) |
Jun
(5) |
Jul
(3) |
Aug
(2) |
Sep
(7) |
Oct
(4) |
Nov
(4) |
Dec
(2) |
2012 |
Jan
|
Feb
|
Mar
(4) |
Apr
(11) |
May
(8) |
Jun
(2) |
Jul
(7) |
Aug
(6) |
Sep
(2) |
Oct
(2) |
Nov
|
Dec
(3) |
2013 |
Jan
|
Feb
(1) |
Mar
(7) |
Apr
(3) |
May
(1) |
Jun
(4) |
Jul
(8) |
Aug
(4) |
Sep
(4) |
Oct
(6) |
Nov
(8) |
Dec
(6) |
2014 |
Jan
|
Feb
|
Mar
(2) |
Apr
(4) |
May
(6) |
Jun
(10) |
Jul
|
Aug
(7) |
Sep
(15) |
Oct
(4) |
Nov
(1) |
Dec
(1) |
2015 |
Jan
|
Feb
(1) |
Mar
(10) |
Apr
(4) |
May
(6) |
Jun
(1) |
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(5) |
Nov
(6) |
Dec
(12) |
2016 |
Jan
(1) |
Feb
(4) |
Mar
(7) |
Apr
(30) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jom...@us...> - 2015-12-09 14:20:48
|
Revision: 1865 http://sourceforge.net/p/jason/svn/1865 Author: jomifred Date: 2015-12-09 14:20:46 +0000 (Wed, 09 Dec 2015) Log Message: ----------- comment profiling code Modified Paths: -------------- trunk/src/jason/architecture/AgArch.java trunk/src/jason/asSemantics/Agent.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/Literal.java trunk/src/test/BeliefBaseTest.java Modified: trunk/src/jason/architecture/AgArch.java =================================================================== --- trunk/src/jason/architecture/AgArch.java 2015-12-08 20:19:43 UTC (rev 1864) +++ trunk/src/jason/architecture/AgArch.java 2015-12-09 14:20:46 UTC (rev 1865) @@ -29,7 +29,6 @@ import jason.asSyntax.Literal; import jason.infra.centralised.CentralisedAgArch; import jason.mas2j.ClassParameters; -import jason.profiling.QueryProfiling; import jason.runtime.RuntimeServicesInfraTier; import jason.runtime.Settings; @@ -149,9 +148,9 @@ * when a new reasoning cycle is starting */ public void reasoningCycleStarting() { - QueryProfiling q = getTS().getAg().getQueryProfiling(); - if (q != null) - q.setNbReasoningCycles(getCycleNumber()); + //QueryProfiling q = getTS().getAg().getQueryProfiling(); + //if (q != null) + // q.setNbReasoningCycles(getCycleNumber()); if (successor != null) successor.reasoningCycleStarting(); } Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-12-08 20:19:43 UTC (rev 1864) +++ trunk/src/jason/asSemantics/Agent.java 2015-12-09 14:20:46 UTC (rev 1865) @@ -49,7 +49,6 @@ import jason.functions.RuleToFunction; import jason.jeditplugin.Config; import jason.mas2j.ClassParameters; -import jason.profiling.QueryProfiling; import jason.runtime.Settings; import java.io.File; @@ -106,8 +105,8 @@ private static ScheduledExecutorService scheduler = null; //private QueryCache qCache = null; - private QueryCacheSimple qCache = null; - private QueryProfiling qProfiling = null; + //private QueryCacheSimple qCache = null; + //private QueryProfiling qProfiling = null; protected Logger logger = Logger.getLogger(Agent.class.getName()); @@ -162,8 +161,8 @@ if (ts == null) ts = new TransitionSystem(this, null, null, new AgArch()); //if (ts.getSettings().hasQueryCache()) qCache = new QueryCache(this); - if (ts.getSettings().hasQueryProfiling()) qProfiling = new QueryProfiling(this); - if (ts.getSettings().hasQueryCache()) qCache = new QueryCacheSimple(this, qProfiling); + //if (ts.getSettings().hasQueryProfiling()) qProfiling = new QueryProfiling(this); + //if (ts.getSettings().hasQueryCache()) qCache = new QueryCacheSimple(this, qProfiling); if (! "false".equals(Config.get().getProperty(Config.START_WEB_MI))) MindInspectorWeb.get().registerAg(this); } @@ -273,8 +272,8 @@ public void stopAg() { bb.stop(); - if (qProfiling != null) - qProfiling.show(); + //if (qProfiling != null) + // qProfiling.show(); //if (scheduler != null) // scheduler.shutdownNow(); @@ -722,7 +721,7 @@ // stat int adds = 0; int dels = 0; - long startTime = qProfiling == null ? 0 : System.nanoTime(); + //long startTime = qProfiling == null ? 0 : System.nanoTime(); // deleting percepts in the BB that is not perceived anymore Iterator<Literal> perceptsInBB = getBB().getPercepts(); @@ -790,19 +789,21 @@ } } - if (qCache != null) - qCache.reset(); - if (qProfiling != null) - qProfiling.newUpdateCycle(getTS().getUserAgArch().getCycleNumber(), adds+dels, System.nanoTime()-startTime); + //if (qCache != null) + // qCache.reset(); + //if (qProfiling != null) + // qProfiling.newUpdateCycle(getTS().getUserAgArch().getCycleNumber(), adds+dels, System.nanoTime()-startTime); return adds + dels; } + /* public QueryCacheSimple getQueryCache() { return qCache; } public QueryProfiling getQueryProfiling() { return qProfiling; } + */ /** * Returns true if BB contains the literal <i>bel</i> (using unification to test). Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-08 20:19:43 UTC (rev 1864) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-09 14:20:46 UTC (rev 1865) @@ -63,10 +63,7 @@ public Atom(Atom namespace, Literal l) { this.functor = l.getFunctor(); - if (namespace.functor.equals("default")) // in case namespace is an ordinary Atom with functor "default", we need to replace by the Default NS - this.ns = DefaultNS; // TODO: not necessary, the parsers takes care of it - else - this.ns = namespace; + this.ns = namespace; predicateIndicatorCache = l.predicateIndicatorCache; hashCodeCache = l.hashCodeCache; srcInfo = l.srcInfo; Modified: trunk/src/jason/asSyntax/Literal.java =================================================================== --- trunk/src/jason/asSyntax/Literal.java 2015-12-08 20:19:43 UTC (rev 1864) +++ trunk/src/jason/asSyntax/Literal.java 2015-12-09 14:20:46 UTC (rev 1865) @@ -26,10 +26,8 @@ import jason.JasonException; import jason.architecture.AgArch; import jason.asSemantics.Agent; -import jason.asSemantics.QueryCacheSimple; import jason.asSemantics.Unifier; import jason.asSyntax.parser.as2j; -import jason.profiling.QueryProfiling; import java.io.StringReader; import java.util.ArrayList; @@ -269,6 +267,7 @@ * Returns an iterator for all unifiers that are logCons. */ public Iterator<Unifier> logicalConsequence(final Agent ag, final Unifier un) { + /* final QueryProfiling qProfiling; final QueryCacheSimple qCache; final long startTime; @@ -286,7 +285,8 @@ qProfiling = null; startTime = 0; } - + */ + final Iterator<Literal> il = ag.getBB().getCandidateBeliefs(this, un); if (il == null) // no relevant bels return LogExpr.EMPTY_UNIF_LIST.iterator(); @@ -304,23 +304,22 @@ Iterator<List<Term>> annotsOptions = null; Literal belInBB = null; - Literal kForChache = null; - Iterator<Unifier> cacheIt = null; - //Literal cacheLit = null; - //Unifier cacheUn = null; - List<Unifier> cacheResults = null; + //Literal kForChache = null; + //Iterator<Unifier> cacheIt = null; + //List<Unifier> cacheResults = null; public boolean hasNext() { if (needsUpdate) get(); + /* if (current == null) { // end of query if (qCache != null && cacheResults != null) qCache.queryFinished(kForChache, cacheResults); if (qProfiling != null) qProfiling.queryFinished(Literal.this, System.nanoTime() - startTime); } - + */ return current != null; } @@ -338,6 +337,7 @@ if (arch != null && !arch.isRunning()) return; // try cache iterator + /* if (cacheIt != null) { while (cacheIt.hasNext()) { Literal ltmp = (Literal)Literal.this.capply( cacheIt.next() ); @@ -352,6 +352,7 @@ cacheIt = null; return; // do not try others after cache } + */ // try annots iterator @@ -381,15 +382,8 @@ Unifier unC = un.clone(); if (unC.unifiesNoUndo(Literal.this, rhead)) { current = unC; - /*if (kForChache != null) { - Unifier uforC = new Unifier(); - if (uforC.unifiesNoUndo(kForChache, rhead)) - qCache.addAnswer(kForChache, uforC); - cacheResults.add(uforC); - }*/ - //System.out.println(" sol:"+unC+ " "+cacheResults); - if (cacheResults != null) - cacheResults.add(unC); + //if (cacheResults != null) + // cacheResults.add(unC); return; } } @@ -412,21 +406,9 @@ } // try cache + /* if (ag != null && qCache != null) { - /*if (ag != null && qCache != null && kForChache == null) { // try cache only for the first rule (do not use cache for itself) - kForChache = cloneAnnon; - Pair<Literal,Iterator<Unifier>> pair = qCache.getCache(kForChache); - if (pair != null) { - cacheIt = pair.getSecond(); - cacheLit = pair.getFirst(); - //cacheUn = new Unifier(); - //cacheUn.unifies(cacheLit, Literal.this); - //System.out.println("use un "+cacheUn+"/"+cacheLit+" for "+kForChache); - get(); - return; - }*/ kForChache = (Literal)Literal.this.capply(un); - //System.out.println("try "+kForChache); cacheIt = qCache.getCache(kForChache); if (cacheIt != null) { //System.out.println("use cache for "+kForChache); @@ -437,6 +419,7 @@ //System.out.println("start collecting "+kForChache); cacheResults = new ArrayList<Unifier>(); } + */ Unifier ruleUn = new Unifier(); if (ruleUn.unifiesNoUndo(cloneAnnon, rule)) { // the rule head unifies with the literal Modified: trunk/src/test/BeliefBaseTest.java =================================================================== --- trunk/src/test/BeliefBaseTest.java 2015-12-08 20:19:43 UTC (rev 1864) +++ trunk/src/test/BeliefBaseTest.java 2015-12-09 14:20:46 UTC (rev 1865) @@ -684,7 +684,7 @@ } assertEquals(s1,s2); - ag.getQueryCache().reset(); + //ag.getQueryCache().reset(); q = ASSyntax.parseLiteral("p(x,B)"); s1 = ""; @@ -695,16 +695,10 @@ assertEquals(s1,s2); // must have cache for the following - assertNotNull(ag.getQueryCache().getCache(ASSyntax.parseLiteral("p(x,B)"))); - /*assertNotNull(ag.getQueryCache().getCache(ASSyntax.parseLiteral("p(x,II)"))); - assertNotNull(ag.getQueryCache().getCache(ASSyntax.parseLiteral("p(x,10)"))); - - // must NOT have cache for the following - assertNull(ag.getQueryCache().getCache(ASSyntax.parseLiteral("p(UU,II)"))); - */ + //assertNotNull(ag.getQueryCache().getCache(ASSyntax.parseLiteral("p(x,B)"))); // test partial results - ag.getQueryCache().reset(); + //ag.getQueryCache().reset(); q = ASSyntax.parseLiteral("p(A,B)"); i = q.logicalConsequence(ag, new Unifier()); @@ -722,7 +716,7 @@ assertEquals("p(x,10)p(w,10)p(k,10)",s1); // test order - ag.getQueryCache().reset(); + //ag.getQueryCache().reset(); q = ASSyntax.parseLiteral("p(x,10)"); i = q.logicalConsequence(ag, new Unifier()); while (i.hasNext()) { @@ -781,6 +775,7 @@ } assertEquals(s1,s2); //System.out.println(ag.getQueryCache()); + /* ag.getQueryProfiling().newUpdateCycle(1,0,0); i = q.logicalConsequence(ag, new Unifier()); @@ -791,6 +786,7 @@ ag.getQueryProfiling().newUpdateCycle(2,0,0); assertTrue(1.0 <= ag.getQueryProfiling().getP()); ag.getQueryProfiling().show(); + */ } public void testGen() throws ParseException { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-08 20:19:46
|
Revision: 1864 http://sourceforge.net/p/jason/svn/1864 Author: jomifred Date: 2015-12-08 20:19:43 +0000 (Tue, 08 Dec 2015) Log Message: ----------- update mind inspector to support name spaces Modified Paths: -------------- trunk/src/jason/asSemantics/Unifier.java trunk/src/jason/asSyntax/ASSyntax.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/Literal.java trunk/src/jason/asSyntax/LiteralImpl.java trunk/src/jason/asSyntax/Pred.java trunk/src/jason/asSyntax/VarTerm.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/jason/bb/DefaultBeliefBase.java trunk/src/test/NSTest.java trunk/src/xml/agInspection.xsl Modified: trunk/src/jason/asSemantics/Unifier.java =================================================================== --- trunk/src/jason/asSemantics/Unifier.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSemantics/Unifier.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -362,7 +362,7 @@ Literal lvl = (Literal)vl; if (! unifiesNamespace(vt, lvl) ) return false; - if ( lvl.getNS() != Literal.DefaultNS) + if (lvl.getNS() != Literal.DefaultNS) vl = lvl.cloneNS(Literal.DefaultNS); } @@ -370,7 +370,7 @@ vl = new CyclicTerm((Literal)vl, (VarTerm)vt.clone()); } - function.put((VarTerm) vt.clone(), vl); + function.put((VarTerm) vt.cloneNS(Literal.DefaultNS), vl); return true; } Modified: trunk/src/jason/asSyntax/ASSyntax.java =================================================================== --- trunk/src/jason/asSyntax/ASSyntax.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/ASSyntax.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -66,6 +66,7 @@ static { keywords.add(new PredicateIndicator("atomic", 0)); + keywords.add(new PredicateIndicator("default", 0)); keywords.add(new PredicateIndicator("source", 0)); keywords.add(new PredicateIndicator("self", 0)); Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -64,7 +64,7 @@ public Atom(Atom namespace, Literal l) { this.functor = l.getFunctor(); if (namespace.functor.equals("default")) // in case namespace is an ordinary Atom with functor "default", we need to replace by the Default NS - this.ns = DefaultNS; + this.ns = DefaultNS; // TODO: not necessary, the parsers takes care of it else this.ns = namespace; predicateIndicatorCache = l.predicateIndicatorCache; @@ -172,7 +172,7 @@ public Element getAsDOM(Document document) { Element u = (Element) document.createElement("structure"); u.setAttribute("functor",getFunctor()); - //u.setAttribute("name-space", getNS().toString()); + u.setAttribute("name-space", getNS().getFunctor()); return u; } } Modified: trunk/src/jason/asSyntax/Literal.java =================================================================== --- trunk/src/jason/asSyntax/Literal.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/Literal.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -587,6 +587,16 @@ return this; } + @Override + public Literal cloneNS(Atom newnamespace) { + return this; + } + + @Override + public Atom getNS() { + return this; + } + public String toString() { return getFunctor(); }; Modified: trunk/src/jason/asSyntax/LiteralImpl.java =================================================================== --- trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -63,7 +63,7 @@ // used by capply protected LiteralImpl(Literal l, Unifier u) { - super(l,u); + super(l, u); type = !l.negated(); } @@ -149,7 +149,7 @@ @Override public Term capply(Unifier u) { - return new LiteralImpl(this,u); + return new LiteralImpl(this, u); } public Literal cloneNS(Atom newNameSpace) { @@ -175,6 +175,7 @@ @Override public Element getAsDOM(Document document) { Element u = (Element) document.createElement("literal"); + u.setAttribute("name-space", getNS().getFunctor()); if (negated()) { u.setAttribute("negated", negated()+""); } Modified: trunk/src/jason/asSyntax/Pred.java =================================================================== --- trunk/src/jason/asSyntax/Pred.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/Pred.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -70,7 +70,7 @@ // used by capply protected Pred(Literal l, Unifier u) { - super(l,u); + super(l, u); if (l.hasAnnot()) { setAnnots( (ListTerm)l.getAnnots().capply(u) ); } else { Modified: trunk/src/jason/asSyntax/VarTerm.java =================================================================== --- trunk/src/jason/asSyntax/VarTerm.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/VarTerm.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -156,7 +156,7 @@ @Override public Literal cloneNS(Atom newNameSpace) { - return new VarTerm( newNameSpace, this); + return new VarTerm(newNameSpace, this); } public ListTerm cloneLT() { Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-08 20:19:43 UTC (rev 1864) @@ -603,7 +603,9 @@ ( ( // namespace [ LOOKAHEAD(10) - (tns = <ATOM> { if (!tns.image.equals("default")) + (tns = <ATOM> { if (tns.image.equals("default")) + NS = Literal.DefaultNS; + else NS = new Atom(tns.image); } | Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -902,7 +902,9 @@ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ATOM: tns = jj_consume_token(ATOM); - if (!tns.image.equals("default")) + if (tns.image.equals("default")) + NS = Literal.DefaultNS; + else NS = new Atom(tns.image); break; case VAR: @@ -1647,13 +1649,19 @@ return false; } + final private boolean jj_3R_61() { + if (jj_3R_66()) return true; + return false; + } + final private boolean jj_3R_114() { if (jj_3R_121()) return true; return false; } - final private boolean jj_3R_61() { - if (jj_3R_66()) return true; + final private boolean jj_3R_60() { + if (jj_scan_token(TK_NOT)) return true; + if (jj_3R_52()) return true; return false; } @@ -1682,12 +1690,6 @@ 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_52() { Token xsp; xsp = jj_scanpos; @@ -1720,11 +1722,25 @@ return false; } + final private boolean jj_3R_53() { + if (jj_scan_token(52)) return true; + if (jj_3R_38()) return true; + return false; + } + final private boolean jj_3R_33() { if (jj_scan_token(36)) return true; return false; } + final private boolean jj_3R_38() { + if (jj_3R_52()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_53()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3R_32() { Token xsp; xsp = jj_scanpos; @@ -1735,12 +1751,6 @@ return false; } - final private boolean jj_3R_53() { - if (jj_scan_token(52)) return true; - if (jj_3R_38()) return true; - return false; - } - final private boolean jj_3R_17() { if (jj_scan_token(35)) return true; if (jj_3R_20()) return true; @@ -1757,11 +1767,9 @@ return false; } - final private boolean jj_3R_38() { - if (jj_3R_52()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_53()) jj_scanpos = xsp; + final private boolean jj_3R_39() { + if (jj_scan_token(50)) return true; + if (jj_3R_20()) return true; return false; } @@ -1781,12 +1789,6 @@ return false; } - final private boolean jj_3R_39() { - if (jj_scan_token(50)) return true; - if (jj_3R_20()) return true; - return false; - } - final private boolean jj_3R_29() { if (jj_scan_token(37)) return true; return false; @@ -1804,6 +1806,14 @@ return false; } + final private boolean jj_3R_20() { + if (jj_3R_38()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_39()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3R_16() { Token xsp; xsp = jj_scanpos; @@ -1820,14 +1830,6 @@ return false; } - final private boolean jj_3R_20() { - if (jj_3R_38()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_39()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3R_67() { if (jj_scan_token(30)) return true; Token xsp; @@ -1902,14 +1904,6 @@ return false; } - final private boolean jj_3R_46() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_59()) jj_scanpos = xsp; - if (jj_3R_16()) return true; - return false; - } - final private boolean jj_3R_56() { if (jj_3R_42()) return true; return false; @@ -1929,6 +1923,14 @@ return false; } + final private boolean jj_3R_46() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_59()) jj_scanpos = xsp; + if (jj_3R_16()) return true; + return false; + } + final private boolean jj_3R_75() { if (jj_scan_token(48)) return true; if (jj_3R_65()) return true; @@ -1993,11 +1995,6 @@ return false; } - final private boolean jj_3R_45() { - if (jj_scan_token(34)) return true; - return false; - } - final private boolean jj_3R_57() { Token xsp; xsp = jj_scanpos; @@ -2011,6 +2008,11 @@ return false; } + final private boolean jj_3R_45() { + if (jj_scan_token(34)) return true; + return false; + } + final private boolean jj_3R_120() { if (jj_3R_19()) return true; return false; @@ -2021,16 +2023,6 @@ return false; } - final private boolean jj_3R_136() { - if (jj_scan_token(37)) return true; - return false; - } - - final private boolean jj_3R_127() { - if (jj_3R_67()) return true; - return false; - } - final private boolean jj_3R_79() { if (jj_scan_token(48)) return true; if (jj_3R_57()) return true; @@ -2042,11 +2034,16 @@ return false; } - final private boolean jj_3R_139() { - if (jj_scan_token(46)) return true; + final private boolean jj_3R_136() { + if (jj_scan_token(37)) return true; return false; } + final private boolean jj_3R_127() { + if (jj_3R_67()) return true; + return false; + } + final private boolean jj_3R_112() { if (jj_scan_token(42)) return true; if (jj_3R_20()) return true; @@ -2054,11 +2051,6 @@ return false; } - final private boolean jj_3R_138() { - if (jj_scan_token(45)) return true; - return false; - } - final private boolean jj_3R_41() { if (jj_3R_57()) return true; Token xsp; @@ -2069,6 +2061,16 @@ return false; } + final private boolean jj_3R_139() { + if (jj_scan_token(46)) return true; + return false; + } + + final private boolean jj_3R_138() { + if (jj_scan_token(45)) return true; + return false; + } + final private boolean jj_3R_137() { if (jj_scan_token(37)) return true; return false; @@ -2082,6 +2084,12 @@ return false; } + final private boolean jj_3R_111() { + if (jj_scan_token(37)) return true; + if (jj_3R_102()) return true; + return false; + } + final private boolean jj_3R_135() { Token xsp; xsp = jj_scanpos; @@ -2095,14 +2103,14 @@ return false; } - final private boolean jj_3R_111() { - if (jj_scan_token(37)) return true; - if (jj_3R_102()) return true; + final private boolean jj_3R_24() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_24() { - if (jj_3R_42()) return true; + final private boolean jj_3R_110() { + if (jj_scan_token(38)) return true; + if (jj_3R_102()) return true; return false; } @@ -2119,12 +2127,6 @@ return false; } - final private boolean jj_3R_110() { - if (jj_scan_token(38)) return true; - if (jj_3R_102()) return true; - return false; - } - final private boolean jj_3R_44() { if (jj_3R_19()) return true; return false; @@ -2171,18 +2173,6 @@ return false; } - final private boolean jj_3R_124() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_126()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_127()) { - jj_scanpos = xsp; - if (jj_3R_128()) return true; - } - return false; - } - final private boolean jj_3R_102() { Token xsp; xsp = jj_scanpos; @@ -2202,6 +2192,18 @@ return false; } + final private boolean jj_3R_124() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_126()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_127()) { + jj_scanpos = xsp; + if (jj_3R_128()) return true; + } + return false; + } + final private boolean jj_3R_13() { Token xsp; xsp = jj_scanpos; @@ -2322,6 +2324,11 @@ return false; } + final private boolean jj_3R_49() { + if (jj_scan_token(TK_NEG)) return true; + return false; + } + final private boolean jj_3R_122() { if (jj_scan_token(TK_FOR)) return true; if (jj_scan_token(42)) return true; @@ -2331,11 +2338,6 @@ return false; } - final private boolean jj_3R_49() { - if (jj_scan_token(TK_NEG)) return true; - return false; - } - final private boolean jj_3R_100() { if (jj_scan_token(38)) return true; return false; @@ -2362,11 +2364,6 @@ return false; } - final private boolean jj_3R_21() { - if (jj_scan_token(ATOM)) return true; - return false; - } - final private boolean jj_3R_77() { if (jj_3R_95()) return true; Token xsp; @@ -2377,6 +2374,11 @@ return false; } + final private boolean jj_3R_21() { + if (jj_scan_token(ATOM)) return true; + return false; + } + final private boolean jj_3_4() { Token xsp; xsp = jj_scanpos; @@ -2388,6 +2390,11 @@ return false; } + final private boolean jj_3R_91() { + if (jj_3R_67()) return true; + return false; + } + final private boolean jj_3R_35() { Token xsp; xsp = jj_scanpos; @@ -2402,11 +2409,16 @@ return false; } - final private boolean jj_3R_91() { - if (jj_3R_67()) return true; + final private boolean jj_3R_90() { + if (jj_3R_42()) return true; return false; } + final private boolean jj_3R_89() { + if (jj_3R_78()) return true; + return false; + } + final private boolean jj_3R_19() { Token xsp; xsp = jj_scanpos; @@ -2420,16 +2432,6 @@ return false; } - final private boolean jj_3R_90() { - if (jj_3R_42()) return true; - return false; - } - - final private boolean jj_3R_89() { - if (jj_3R_78()) return true; - return false; - } - final private boolean jj_3R_88() { if (jj_3R_77()) return true; return false; @@ -2440,6 +2442,11 @@ return false; } + final private boolean jj_3R_87() { + if (jj_scan_token(58)) return true; + return false; + } + final private boolean jj_3R_125() { Token xsp; xsp = jj_scanpos; @@ -2448,16 +2455,6 @@ return false; } - final private boolean jj_3R_87() { - if (jj_scan_token(58)) return true; - return false; - } - - final private boolean jj_3R_28() { - if (jj_3R_46()) return true; - return false; - } - final private boolean jj_3R_86() { if (jj_scan_token(57)) return true; return false; @@ -2468,6 +2465,11 @@ return false; } + final private boolean jj_3R_28() { + if (jj_3R_46()) return true; + return false; + } + final private boolean jj_3R_84() { if (jj_scan_token(55)) return true; return false; @@ -2483,6 +2485,16 @@ return false; } + final private boolean jj_3R_81() { + if (jj_scan_token(53)) return true; + return false; + } + + final private boolean jj_3R_80() { + if (jj_scan_token(45)) return true; + return false; + } + final private boolean jj_3R_27() { if (jj_3R_45()) return true; return false; @@ -2500,16 +2512,6 @@ return false; } - final private boolean jj_3R_81() { - if (jj_scan_token(53)) return true; - return false; - } - - final private boolean jj_3R_80() { - if (jj_scan_token(45)) return true; - return false; - } - final private boolean jj_3R_74() { Token xsp; xsp = jj_scanpos; @@ -2559,13 +2561,13 @@ return false; } - final private boolean jj_3R_25() { - if (jj_3R_43()) return true; + final private boolean jj_3R_72() { + if (jj_3R_77()) return true; return false; } - final private boolean jj_3R_72() { - if (jj_3R_77()) return true; + final private boolean jj_3R_25() { + if (jj_3R_43()) return true; return false; } Modified: trunk/src/jason/bb/DefaultBeliefBase.java =================================================================== --- trunk/src/jason/bb/DefaultBeliefBase.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/jason/bb/DefaultBeliefBase.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -29,7 +29,6 @@ import jason.asSyntax.Literal; import jason.asSyntax.PredicateIndicator; -import java.util.ArrayList; import java.util.Deque; import java.util.HashSet; import java.util.Iterator; @@ -54,17 +53,17 @@ * belsMap is a table where the key is the bel.getFunctorArity and the value * is a list of literals with the same functorArity. */ - private Map<PredicateIndicator, BelEntry> belsMap = new ConcurrentHashMap<PredicateIndicator, BelEntry>(); + private Map<PredicateIndicator, BelEntry> belsMapDefaultNS = new ConcurrentHashMap<PredicateIndicator, BelEntry>(); + private Map<Atom, Map<PredicateIndicator, BelEntry>> nameSpaces = new ConcurrentHashMap<Atom, Map<PredicateIndicator,BelEntry>>(); + private int size = 0; /** set of beliefs with percept annot, used to improve performance of buf */ protected Set<Literal> percepts = new HashSet<Literal>(); - protected Set<Atom> nameSpaces = new HashSet<Atom>(); - public DefaultBeliefBase() { - nameSpaces.add(Literal.DefaultNS); + nameSpaces.put(Literal.DefaultNS, belsMapDefaultNS); } public void init(Agent ag, String[] args) { @@ -74,7 +73,7 @@ } public Set<Atom> getNameSpaces() { - return nameSpaces; + return nameSpaces.keySet(); } public void stop() { @@ -87,7 +86,9 @@ public void clear() { size = 0; percepts.clear(); - belsMap.clear(); + belsMapDefaultNS.clear(); + nameSpaces.clear(); + nameSpaces.put(Literal.DefaultNS, belsMapDefaultNS); } public Iterator<Literal> getPercepts() { @@ -148,12 +149,10 @@ return true; } } else { - BelEntry entry = belsMap.get(l.getPredicateIndicator()); - if (entry == null) { - entry = new BelEntry(); - belsMap.put(l.getPredicateIndicator(), entry); - } + // new bel + l = l.copy(); // we need to clone l for the consequent event to not have a ref to this bel (which may change before the event is processed); see bug from Viviana Marcardi + BelEntry entry = provideBelEntry(l); entry.add(l, addInEnd); // add it in the percepts list @@ -161,15 +160,29 @@ percepts.add(l); } - if (l.getNS() != Literal.DefaultNS) - nameSpaces.add(l.getNS()); - size++; return true; } return false; } + private BelEntry provideBelEntry(Literal l) { + Map<PredicateIndicator, BelEntry> belsMap = belsMapDefaultNS; + if (l.getNS() != Literal.DefaultNS) { + belsMap = nameSpaces.get(l.getNS()); + if (belsMap == null) { + belsMap = new ConcurrentHashMap<PredicateIndicator, DefaultBeliefBase.BelEntry>(); + nameSpaces.put(l.getNS(), belsMap); + } + } + BelEntry entry = belsMap.get(l.getPredicateIndicator()); + if (entry == null) { + entry = new BelEntry(); + belsMap.put(l.getPredicateIndicator(), entry); + } + return entry; + } + public boolean remove(Literal l) { Literal bl = contains(l); if (bl != null) { @@ -181,8 +194,6 @@ boolean result = bl.delAnnots(l.getAnnots()); // note that l annots can be empty, in this case, nothing is deleted! return removeFromEntry(bl) || result; } - } else { - if (logger.isLoggable(Level.FINE)) logger.fine("Does not contain " + l + " in " + belsMap); } return false; } @@ -191,6 +202,7 @@ if (l.hasSource()) { return false; } else { + Map<PredicateIndicator, BelEntry> belsMap = l.getNS() == Literal.DefaultNS ? belsMapDefaultNS : nameSpaces.get(l.getNS()); PredicateIndicator key = l.getPredicateIndicator(); BelEntry entry = belsMap.get(key); entry.remove(l); @@ -203,36 +215,38 @@ } public Iterator<Literal> iterator() { - final Iterator<BelEntry> ibe = belsMap.values().iterator(); - if (ibe.hasNext()) { - return new Iterator<Literal>() { + final Iterator<Map<PredicateIndicator, BelEntry>> ins = nameSpaces.values().iterator(); + return new Iterator<Literal>() { + + Iterator<BelEntry> ibe = ins.next().values().iterator(); + Iterator<Literal> il = ibe.next().list.iterator(); + Literal l; + + public boolean hasNext() { + return il.hasNext(); + } - Iterator<Literal> il = ibe.next().list.iterator(); - Literal l; - - public boolean hasNext() { - return il.hasNext(); + public Literal next() { + l = il.next(); + while (!il.hasNext() && ibe.hasNext()) { + il = ibe.next().list.iterator(); } - - public Literal next() { - l = il.next(); - while (!il.hasNext() && ibe.hasNext()) { - il = ibe.next().list.iterator(); - } - return l; + while (!il.hasNext() && !ibe.hasNext() && ins.hasNext()) { + ibe = ins.next().values().iterator(); + il = ibe.next().list.iterator(); } + + return l; + } - public void remove() { - il.remove(); - if (l.hasAnnot(TPercept)) { - percepts.remove(l); - } - size--; + public void remove() { + il.remove(); + if (l.hasAnnot(TPercept)) { + percepts.remove(l); } - }; - } else { - return new ArrayList<Literal>(0).iterator(); - } + size--; + } + }; } /** @deprecated use iterator() instead of getAll */ @@ -241,7 +255,7 @@ } public boolean abolish(PredicateIndicator pi) { - BelEntry entry = belsMap.remove(pi); + BelEntry entry = belsMapDefaultNS.remove(pi); // TODO: consider other NS (?) this method is not used by jason if (entry != null) { size -= entry.size(); @@ -260,6 +274,9 @@ } public Literal contains(Literal l) { + Map<PredicateIndicator, BelEntry> belsMap = l.getNS() == Literal.DefaultNS ? belsMapDefaultNS : nameSpaces.get(l.getNS()); + if (belsMap == null) + return null; BelEntry entry = belsMap.get(l.getPredicateIndicator()); if (entry == null) { return null; @@ -270,7 +287,7 @@ } public Iterator<Literal> getCandidateBeliefs(PredicateIndicator pi) { - BelEntry entry = belsMap.get(pi); + BelEntry entry = belsMapDefaultNS.get(pi); // TODO: consider other NS ? this method is not used by jason if (entry != null) //return Collections.unmodifiableList(entry.list).iterator(); return entry.list.iterator(); @@ -283,10 +300,21 @@ // all bels are relevant return iterator(); } else { + Map<PredicateIndicator, BelEntry> belsMap = belsMapDefaultNS; + if (l.getNS() != Literal.DefaultNS) { + Atom ns = l.getNS(); + if (ns.isVar()) + ns = (Atom)ns.capply(u); + if (ns.isVar()) { // still a var + return iterator(); + } + belsMap = nameSpaces.get(ns); + } + if (belsMap == null) + return null; BelEntry entry = belsMap.get(l.getPredicateIndicator()); if (entry != null) { - //return Collections.unmodifiableList(entry.list).iterator(); - //System.out.println(l+ " ==> " + entry.list); + //System.out.println(l.getNS() + "::::"+ l+ " ==> " + entry.list); return entry.list.iterator(); } else { return null; @@ -300,7 +328,7 @@ } public String toString() { - return belsMap.toString(); + return nameSpaces.toString(); } public BeliefBase clone() { @@ -315,8 +343,20 @@ int tries = 0; Element ebels = null; while (tries < 10) { // max 10 tries - ebels = (Element) document.createElement("beliefs"); - try { + try { + ebels = (Element) document.createElement("beliefs"); + Element enss = (Element) document.createElement("name-spaces"); + Element ens = (Element) document.createElement("name-space"); + ens.setAttribute("id", "default"); // to ensure default is the first + enss.appendChild(ens); + for (Atom ns: getNameSpaces()) { + if (ns == Literal.DefaultNS) + continue; + ens = (Element) document.createElement("name-space"); + ens.setAttribute("id", ns.getFunctor()); + enss.appendChild(ens); + } + ebels.appendChild(enss); for (Literal l: this) ebels.appendChild(l.getAsDOM(document)); break; // quit the loop Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/test/NSTest.java 2015-12-08 20:19:43 UTC (rev 1864) @@ -1,7 +1,5 @@ package test; -import java.io.StringReader; - import jason.JasonException; import jason.asSemantics.Agent; import jason.asSemantics.Unifier; @@ -12,6 +10,10 @@ import jason.asSyntax.VarTerm; import jason.asSyntax.parser.ParseException; import jason.asSyntax.parser.as2j; + +import java.io.StringReader; +import java.util.Iterator; + import junit.framework.TestCase; /** JUnit test case for syntax package */ @@ -134,7 +136,6 @@ u = new Unifier(); p6 = ASSyntax.parseLiteral("other::B"); u.unifies(p1, p6); - System.out.println(u); assertFalse(u.unifies(p1, p6)); } @@ -152,6 +153,14 @@ t = t.capply(u); assertEquals("ns::~bob(10)[a(20)]", t.toString()); + Literal l = ASSyntax.parseLiteral("f(default)"); + assertEquals(l.getTerm(0), Literal.DefaultNS); + assertTrue(l.getTerm(0) == Literal.DefaultNS); + Literal p = ASSyntax.parseLiteral("f(NS)"); + u = new Unifier(); + u.unifies(p, l); + p = (Literal)p.capply(u); + assertTrue(p.getTerm(0) == Literal.DefaultNS); } public void testConstants() throws ParseException { @@ -197,7 +206,8 @@ } public void testParserNS() throws ParseException, JasonException { - as2j parser = new as2j(new StringReader("b(10). b(20). b(tell). !g(ok). +!g(X) <- .print(kk, 10, X). ")); + + as2j parser = new as2j(new StringReader("b(10). b(20). b(tell). ns71::b(30). default::b(40). !g(ok). +!g(X) <- .print(kk, 10, X). ")); parser.setNS(new Atom("ns33")); Agent a = new Agent(); a.initAg(); @@ -210,6 +220,17 @@ assertTrue(a.getPL().toString().contains("!ns33::g(ns33::X) <- .print(ns33::kk,10,ns33::X)")); assertTrue(a.getInitialGoals().toString().equals("[ns33::g(ns33::ok)]")); + + // BB iterator + int i = 0; + Iterator<Literal> il = a.getBB().iterator(); + while (il.hasNext()) { + //Literal l = + il.next(); + i++; + } + assertEquals(5,i); + } } Modified: trunk/src/xml/agInspection.xsl =================================================================== --- trunk/src/xml/agInspection.xsl 2015-12-08 17:31:53 UTC (rev 1863) +++ trunk/src/xml/agInspection.xsl 2015-12-08 20:19:43 UTC (rev 1864) @@ -102,22 +102,28 @@ <xsl:with-param name="ds" select="'Beliefs'" /> </xsl:call-template> <xsl:if test="$show-bels='true'"> - <td style="{$td-style}"> - <hr/> - <table cellspacing="0" cellpadding="2"> - <xsl:for-each select="literal"> - <xsl:sort select="structure/@functor" /> - <tr style="{$trh-style}"> - <td style="text-align: left"> - <span style="color: {$bc}"> - <xsl:apply-templates select="." /> - </span> - <xsl:text>.</xsl:text> - </td> - </tr> - </xsl:for-each> - </table> - </td> + <td style="{$td-style}"> + <hr/> + <table cellspacing="0" cellpadding="2"> + <xsl:for-each select="name-spaces/name-space"> + <xsl:variable name="nsId" select="@id" /> + <xsl:for-each select="../../literal[@name-space=$nsId]"> + <xsl:sort select="structure/@functor" /> + <tr style="{$trh-style}"> + <td style="text-align: left"> + <xsl:if test="$nsId != 'default' and position()=1"> + <br/><b><xsl:value-of select="$nsId" /><xsl:text>::</xsl:text></b> <br/> + </xsl:if> + <span style="color: {$bc}"> + <xsl:apply-templates select="." /> + </span> + <xsl:text>.</xsl:text> + </td> + </tr> + </xsl:for-each> + </xsl:for-each> + </table> + </td> </xsl:if> </tr> </xsl:if> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-08 17:31:56
|
Revision: 1863 http://sourceforge.net/p/jason/svn/1863 Author: jomifred Date: 2015-12-08 17:31:53 +0000 (Tue, 08 Dec 2015) Log Message: ----------- improve parser to support other namespaces than Default Modified Paths: -------------- trunk/demos/persistent-belief-base/VoidBB.java trunk/src/jason/asSemantics/Agent.java trunk/src/jason/asSyntax/ASSyntax.java trunk/src/jason/asSyntax/InternalActionLiteral.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/test/NSTest.java Modified: trunk/demos/persistent-belief-base/VoidBB.java =================================================================== --- trunk/demos/persistent-belief-base/VoidBB.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/demos/persistent-belief-base/VoidBB.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -1,11 +1,14 @@ import jason.asSemantics.Agent; import jason.asSemantics.Unifier; +import jason.asSyntax.Atom; import jason.asSyntax.Literal; import jason.asSyntax.PredicateIndicator; import jason.bb.BeliefBase; import java.util.ArrayList; +import java.util.HashSet; import java.util.Iterator; +import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -42,6 +45,11 @@ return l; } + @Override + public Set<Atom> getNameSpaces() { + return new HashSet<Atom>(); + } + public Iterator<Literal> iterator() { return new ArrayList<Literal>().iterator(); } Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/jason/asSemantics/Agent.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -62,6 +62,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; @@ -567,6 +568,10 @@ initialGoals.add(g); } + public Collection<Literal> getInitialGoals() { + return initialGoals; + } + /** includes all initial goals in the agent reasoner */ public void addInitialGoalsInTS() { for (Literal g: initialGoals) { Modified: trunk/src/jason/asSyntax/ASSyntax.java =================================================================== --- trunk/src/jason/asSyntax/ASSyntax.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/jason/asSyntax/ASSyntax.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -6,6 +6,8 @@ import java.io.StringReader; import java.util.Collection; +import java.util.HashSet; +import java.util.Set; /** Factory for objects used in Jason AgentSpeak syntax. @@ -60,6 +62,35 @@ public static final String hardDeadLineStr = "hard_deadline"; + private static Set<PredicateIndicator> keywords = new HashSet<PredicateIndicator>(); + + static { + keywords.add(new PredicateIndicator("atomic", 0)); + + keywords.add(new PredicateIndicator("source", 0)); + keywords.add(new PredicateIndicator("self", 0)); + keywords.add(new PredicateIndicator("percept", 0)); + + keywords.add(new PredicateIndicator("tell", 0)); + keywords.add(new PredicateIndicator("untell", 0)); + keywords.add(new PredicateIndicator("achieve", 0)); + keywords.add(new PredicateIndicator("unachieve", 0)); + keywords.add(new PredicateIndicator("ask", 0)); + keywords.add(new PredicateIndicator("askOne", 0)); + keywords.add(new PredicateIndicator("askAll", 0)); + keywords.add(new PredicateIndicator("askHow", 0)); + keywords.add(new PredicateIndicator("tellHow", 0)); + + } + + public void addKeyword(PredicateIndicator pi) { + keywords.add(pi); + } + + public static boolean isKeyword(Literal l) { + return keywords.contains( l.getPredicateIndicator() ); + } + // ---- // ---- createX methods // ---- Modified: trunk/src/jason/asSyntax/InternalActionLiteral.java =================================================================== --- trunk/src/jason/asSyntax/InternalActionLiteral.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/jason/asSyntax/InternalActionLiteral.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -56,7 +56,7 @@ // used by clone public InternalActionLiteral(InternalActionLiteral l) { - super((Structure) l); + super(DefaultNS, (Structure) l); this.ia = l.ia; } Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-08 17:31:53 UTC (rev 1863) @@ -52,12 +52,14 @@ public class as2j { private String asSource = null; private Agent curAg = null; + private Atom namespace = Literal.DefaultNS; private static Logger logger = Logger.getLogger("aslparser"); private static Set<String> parsedFiles = new HashSet<String>(); private static Config config = Config.get(false); public void setAg(Agent ag) { curAg = ag; } + public void setNS(Atom ns) { namespace = ns; } private String getSourceRef(SourceInfo s) { if (s == null) @@ -596,7 +598,7 @@ /* Literal */ Literal literal() : { Pred F = null; Pred V; Token k; boolean type = Literal.LPos; - Atom NS = Literal.DefaultNS; Token tns = null; } + Atom NS = namespace; Token tns = null; } { ( ( // namespace @@ -631,8 +633,6 @@ throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations."); if (type == Literal.LNeg) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated."); - if (NS != Literal.DefaultNS) - throw new ParseException(getSourceRef(F)+" Internal actions cannot have name space."); try { return new InternalActionLiteral(F, curAg); } catch (Exception e) { @@ -640,6 +640,9 @@ logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); } } + if (ASSyntax.isKeyword(F)) + NS = Literal.DefaultNS; + return new LiteralImpl(NS, type, F); } } Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -21,12 +21,14 @@ public class as2j implements as2jConstants { private String asSource = null; private Agent curAg = null; + private Atom namespace = Literal.DefaultNS; private static Logger logger = Logger.getLogger("aslparser"); private static Set<String> parsedFiles = new HashSet<String>(); private static Config config = Config.get(false); public void setAg(Agent ag) { curAg = ag; } + public void setNS(Atom ns) { namespace = ns; } private String getSourceRef(SourceInfo s) { if (s == null) @@ -888,7 +890,7 @@ /* Literal */ final public Literal literal() throws ParseException { Pred F = null; Pred V; Token k; boolean type = Literal.LPos; - Atom NS = Literal.DefaultNS; Token tns = null; + Atom NS = namespace; Token tns = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: case TK_NEG: @@ -964,8 +966,6 @@ {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations.");} if (type == Literal.LNeg) {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated.");} - if (NS != Literal.DefaultNS) - {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have name space.");} try { {if (true) return new InternalActionLiteral(F, curAg);} } catch (Exception e) { @@ -973,6 +973,9 @@ logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); } } + if (ASSyntax.isKeyword(F)) + NS = Literal.DefaultNS; + {if (true) return new LiteralImpl(NS, type, F);} throw new Error("Missing return statement in function"); } @@ -1649,6 +1652,11 @@ return false; } + final private boolean jj_3R_61() { + if (jj_3R_66()) return true; + return false; + } + final private boolean jj_3R_108() { Token xsp; xsp = jj_scanpos; @@ -1674,17 +1682,22 @@ return false; } - final private boolean jj_3R_61() { - if (jj_3R_66()) 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_52() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_60()) { + jj_scanpos = xsp; + if (jj_3R_61()) return true; + } + return false; + } + final private boolean jj_3R_48() { if (jj_scan_token(40)) return true; return false; @@ -1697,16 +1710,6 @@ return false; } - final private boolean jj_3R_52() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_60()) { - jj_scanpos = xsp; - if (jj_3R_61()) return true; - } - return false; - } - final private boolean jj_3R_47() { if (jj_scan_token(34)) return true; return false; @@ -1732,6 +1735,12 @@ return false; } + final private boolean jj_3R_53() { + if (jj_scan_token(52)) return true; + if (jj_3R_38()) return true; + return false; + } + final private boolean jj_3R_17() { if (jj_scan_token(35)) return true; if (jj_3R_20()) return true; @@ -1748,12 +1757,6 @@ return false; } - final private boolean jj_3R_53() { - if (jj_scan_token(52)) return true; - if (jj_3R_38()) return true; - return false; - } - final private boolean jj_3R_38() { if (jj_3R_52()) return true; Token xsp; @@ -1778,17 +1781,17 @@ return false; } - final private boolean jj_3R_29() { - if (jj_scan_token(37)) return true; - return false; - } - final private boolean jj_3R_39() { if (jj_scan_token(50)) return true; if (jj_3R_20()) return true; return false; } + final private boolean jj_3R_29() { + if (jj_scan_token(37)) return true; + return false; + } + final private boolean jj_3_2() { Token xsp; xsp = jj_scanpos; @@ -1817,6 +1820,14 @@ return false; } + final private boolean jj_3R_20() { + if (jj_3R_38()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_39()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3R_67() { if (jj_scan_token(30)) return true; Token xsp; @@ -1830,14 +1841,6 @@ return false; } - final private boolean jj_3R_20() { - if (jj_3R_38()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_39()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3R_71() { if (jj_3R_67()) return true; return false; @@ -2034,13 +2037,20 @@ return false; } + final private boolean jj_3R_113() { + if (jj_3R_120()) return true; + return false; + } + final private boolean jj_3R_139() { if (jj_scan_token(46)) return true; return false; } - final private boolean jj_3R_113() { - if (jj_3R_120()) return true; + final private boolean jj_3R_112() { + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; return false; } @@ -2049,10 +2059,13 @@ return false; } - final private boolean jj_3R_112() { - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; + final private boolean jj_3R_41() { + if (jj_3R_57()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_79()) { jj_scanpos = xsp; break; } + } return false; } @@ -2069,16 +2082,6 @@ return false; } - final private boolean jj_3R_41() { - if (jj_3R_57()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_79()) { jj_scanpos = xsp; break; } - } - return false; - } - final private boolean jj_3R_135() { Token xsp; xsp = jj_scanpos; @@ -2098,6 +2101,11 @@ return false; } + final private boolean jj_3R_24() { + if (jj_3R_42()) return true; + return false; + } + final private boolean jj_3R_133() { if (jj_scan_token(37)) return true; Token xsp; @@ -2106,13 +2114,14 @@ return false; } - final private boolean jj_3R_24() { - if (jj_3R_42()) return true; + final private boolean jj_3R_132() { + if (jj_scan_token(40)) return true; return false; } - final private boolean jj_3R_132() { - if (jj_scan_token(40)) return true; + final private boolean jj_3R_110() { + if (jj_scan_token(38)) return true; + if (jj_3R_102()) return true; return false; } @@ -2126,12 +2135,6 @@ return false; } - final private boolean jj_3R_110() { - if (jj_scan_token(38)) return true; - if (jj_3R_102()) return true; - return false; - } - final private boolean jj_3R_130() { if (jj_scan_token(34)) return true; return false; @@ -2156,6 +2159,18 @@ return false; } + final private boolean jj_3R_109() { + if (jj_scan_token(NUMBER)) return true; + return false; + } + + final private boolean jj_3R_23() { + if (jj_scan_token(42)) return true; + if (jj_3R_41()) return true; + if (jj_scan_token(43)) return true; + return false; + } + final private boolean jj_3R_124() { Token xsp; xsp = jj_scanpos; @@ -2168,18 +2183,6 @@ return false; } - final private boolean jj_3R_109() { - if (jj_scan_token(NUMBER)) return true; - return false; - } - - final private boolean jj_3R_23() { - if (jj_scan_token(42)) return true; - if (jj_3R_41()) return true; - if (jj_scan_token(43)) return true; - return false; - } - final private boolean jj_3R_102() { Token xsp; xsp = jj_scanpos; @@ -2272,11 +2275,6 @@ return false; } - final private boolean jj_3R_37() { - if (jj_scan_token(TK_FALSE)) return true; - return false; - } - final private boolean jj_3R_98() { Token xsp; xsp = jj_scanpos; @@ -2294,8 +2292,8 @@ return false; } - final private boolean jj_3R_36() { - if (jj_scan_token(TK_TRUE)) return true; + final private boolean jj_3R_37() { + if (jj_scan_token(TK_FALSE)) return true; return false; } @@ -2309,6 +2307,11 @@ return false; } + final private boolean jj_3R_36() { + if (jj_scan_token(TK_TRUE)) return true; + return false; + } + final private boolean jj_3R_51() { if (jj_3R_40()) return true; return false; @@ -2399,6 +2402,11 @@ return false; } + final private boolean jj_3R_91() { + if (jj_3R_67()) return true; + return false; + } + final private boolean jj_3R_19() { Token xsp; xsp = jj_scanpos; @@ -2412,11 +2420,6 @@ return false; } - final private boolean jj_3R_91() { - if (jj_3R_67()) return true; - return false; - } - final private boolean jj_3R_90() { if (jj_3R_42()) return true; return false; @@ -2445,13 +2448,13 @@ return false; } - final private boolean jj_3R_28() { - if (jj_3R_46()) return true; + final private boolean jj_3R_87() { + if (jj_scan_token(58)) return true; return false; } - final private boolean jj_3R_87() { - if (jj_scan_token(58)) return true; + final private boolean jj_3R_28() { + if (jj_3R_46()) return true; return false; } @@ -2475,6 +2478,11 @@ return false; } + final private boolean jj_3R_82() { + if (jj_scan_token(46)) return true; + return false; + } + final private boolean jj_3R_27() { if (jj_3R_45()) return true; return false; @@ -2492,11 +2500,6 @@ return false; } - final private boolean jj_3R_82() { - if (jj_scan_token(46)) return true; - return false; - } - final private boolean jj_3R_81() { if (jj_scan_token(53)) return true; return false; @@ -2507,11 +2510,6 @@ return false; } - final private boolean jj_3R_26() { - if (jj_3R_44()) return true; - return false; - } - final private boolean jj_3R_74() { Token xsp; xsp = jj_scanpos; @@ -2551,8 +2549,8 @@ return false; } - final private boolean jj_3R_25() { - if (jj_3R_43()) return true; + final private boolean jj_3R_26() { + if (jj_3R_44()) return true; return false; } @@ -2561,6 +2559,11 @@ return false; } + final private boolean jj_3R_25() { + if (jj_3R_43()) return true; + return false; + } + final private boolean jj_3R_72() { if (jj_3R_77()) return true; return false; Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2015-12-08 16:55:24 UTC (rev 1862) +++ trunk/src/test/NSTest.java 2015-12-08 17:31:53 UTC (rev 1863) @@ -1,5 +1,9 @@ package test; +import java.io.StringReader; + +import jason.JasonException; +import jason.asSemantics.Agent; import jason.asSemantics.Unifier; import jason.asSyntax.ASSyntax; import jason.asSyntax.Atom; @@ -7,6 +11,7 @@ import jason.asSyntax.Term; import jason.asSyntax.VarTerm; import jason.asSyntax.parser.ParseException; +import jason.asSyntax.parser.as2j; import junit.framework.TestCase; /** JUnit test case for syntax package */ @@ -191,4 +196,20 @@ assertEquals(p1.compareTo(p1), 0); } + public void testParserNS() throws ParseException, JasonException { + as2j parser = new as2j(new StringReader("b(10). b(20). b(tell). !g(ok). +!g(X) <- .print(kk, 10, X). ")); + parser.setNS(new Atom("ns33")); + Agent a = new Agent(); + a.initAg(); + parser.agent(a); + a.addInitialBelsInBB(); + assertTrue(a.getBB().toString().contains("ns33::b(10)")); + assertTrue(a.getBB().toString().contains("ns33::b(20)")); + assertTrue(a.getBB().toString().contains("ns33::b(tell)")); // tell is reserved word + + assertTrue(a.getPL().toString().contains("!ns33::g(ns33::X) <- .print(ns33::kk,10,ns33::X)")); + + assertTrue(a.getInitialGoals().toString().equals("[ns33::g(ns33::ok)]")); + } + } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-08 16:55:27
|
Revision: 1862 http://sourceforge.net/p/jason/svn/1862 Author: jomifred Date: 2015-12-08 16:55:24 +0000 (Tue, 08 Dec 2015) Log Message: ----------- change =.. to consider namespaces Modified Paths: -------------- trunk/applications/as-unit-test/src/jason/asunit/TestAgent.java trunk/applications/as-unit-test/src/jason/tests/TestNS.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/Literal.java trunk/src/jason/asSyntax/LiteralImpl.java trunk/src/jason/asSyntax/Pred.java trunk/src/jason/asSyntax/RelExpr.java trunk/src/jason/asSyntax/Structure.java trunk/src/jason/asSyntax/VarTerm.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/jason/bb/ChainBBAdapter.java trunk/src/test/ExprTermTest.java trunk/src/test/NSTest.java Modified: trunk/applications/as-unit-test/src/jason/asunit/TestAgent.java =================================================================== --- trunk/applications/as-unit-test/src/jason/asunit/TestAgent.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/applications/as-unit-test/src/jason/asunit/TestAgent.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -16,6 +16,7 @@ import jason.asSyntax.parser.ParseException; import jason.bb.BeliefBase; import jason.infra.centralised.RunCentralisedMAS; +import jason.jeditplugin.Config; import java.io.StringReader; import java.util.logging.Level; @@ -25,6 +26,7 @@ // creates the masRunner static { new RunCentralisedMAS(); + Config.get().setProperty(Config.START_WEB_MI, "false"); } Modified: trunk/applications/as-unit-test/src/jason/tests/TestNS.java =================================================================== --- trunk/applications/as-unit-test/src/jason/tests/TestNS.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/applications/as-unit-test/src/jason/tests/TestNS.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -48,6 +48,15 @@ "+!var <- "+ " .findall(X, X, L); "+ " jason.asunit.print(L); "+ + ". " + + "+!builder <- "+ + " X =.. [p,[10,20],[a1]]; "+ + " jason.asunit.print(X); "+ + " nn::p(10,20)[a1] =.. V; "+ + " jason.asunit.print(V); "+ + " N::Y =.. [ns,p,[10,20],[a1]]; "+ + " jason.asunit.print(N,\"::\",Y); "+ + " jason.asunit.print(N::Y); "+ ". " ); @@ -76,7 +85,15 @@ bob.addGoal("var"); bob.assertPrint("[b(50,o)[source(self)],b(0,k)[source(self)]]", 10); - } + + @Test(timeout=2000) + public void testOperator() { + bob.addGoal("builder"); + bob.assertPrint("p(10,20)[a1]", 10); + bob.assertPrint("[nn,p,[10,20],[a1]]", 10); + bob.assertPrint("ns::p(10,20)[a1]", 10); + bob.assertPrint("ns::p(10,20)[a1]", 10); + } } Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -69,7 +69,7 @@ this.ns = namespace; predicateIndicatorCache = l.predicateIndicatorCache; hashCodeCache = l.hashCodeCache; - srcInfo = l.srcInfo; + srcInfo = l.srcInfo; } public String getFunctor() { @@ -85,6 +85,14 @@ } @Override + public Term capply(Unifier u) { + if (ns.isVar()) + return new Atom(this, u); + else + return this; + } + + @Override public Literal cloneNS(Atom newnamespace) { return new Atom(newnamespace, this); } @@ -100,7 +108,7 @@ if (o == this) return true; if (o instanceof Atom) { Atom a = (Atom)o; - //System.out.println(getFunctor() +" ==== " + a.getFunctor() + " is "+ (a.isAtom())); // && getFunctor().equals(a.getFunctor()))); + //System.out.println(getFunctor() +" ==== " + a.getFunctor() + " atom "+ a.isAtom() + " ns " + getNS() + "/" + a.getNS()); // && getFunctor().equals(a.getFunctor()))); return a.isAtom() && getFunctor().equals(a.getFunctor()) && getNS().equals(a.getNS()); } return false; Modified: trunk/src/jason/asSyntax/Literal.java =================================================================== --- trunk/src/jason/asSyntax/Literal.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/Literal.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -490,6 +490,7 @@ /** returns this literal as a list with three elements: [functor, list of terms, list of annots] */ public ListTerm getAsListOfTerms() { ListTerm l = new ListTermImpl(); + l.add(getNS()); l.add(new LiteralImpl(!negated(), getFunctor())); ListTerm lt = new ListTermImpl(); lt.addAll(getTerms()); @@ -502,11 +503,17 @@ return l; } - /** creates a literal from a list with three elements: [functor, list of terms, list of annots] */ + /** creates a literal from a list with four elements: [namespace, functor, list of terms, list of annots] + * (namespace is optional) + */ public static Literal newFromListOfTerms(ListTerm lt) throws JasonException { try { Iterator<Term> i = lt.iterator(); + Atom ns = DefaultNS; + if (lt.size() == 4) + ns = (Atom)i.next(); + Term tfunctor = i.next(); boolean pos = Literal.LPos; @@ -517,7 +524,7 @@ tfunctor = ASSyntax.parseTerm( ((StringTerm)tfunctor).getString() ); } - Literal l = new LiteralImpl(pos,((Atom)tfunctor).getFunctor()); + Literal l = new LiteralImpl(ns, pos,((Atom)tfunctor).getFunctor(),5); if (i.hasNext()) { l.setTerms(((ListTerm)i.next()).cloneLT()); @@ -574,7 +581,12 @@ protected int calcHashCode() { return getFunctor().hashCode(); }; - + + @Override + public Term capply(Unifier u) { + return this; + } + public String toString() { return getFunctor(); }; Modified: trunk/src/jason/asSyntax/LiteralImpl.java =================================================================== --- trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -51,8 +51,8 @@ } /** if pos == true, the literal is positive, otherwise it is negative */ - public LiteralImpl(Atom namespace, boolean pos, String functor) { - super(namespace, functor); + public LiteralImpl(Atom namespace, boolean pos, String functor, int nbTerms) { + super(namespace, functor, nbTerms); type = pos; } Modified: trunk/src/jason/asSyntax/Pred.java =================================================================== --- trunk/src/jason/asSyntax/Pred.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/Pred.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -50,8 +50,8 @@ super(functor); } - public Pred(Atom namespace, String functor) { - super(namespace, functor); + public Pred(Atom namespace, String functor, int nbTerms) { + super(namespace, functor, nbTerms); } public Pred(Literal l) { Modified: trunk/src/jason/asSyntax/RelExpr.java =================================================================== --- trunk/src/jason/asSyntax/RelExpr.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/RelExpr.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -104,19 +104,29 @@ // both are not vars, using normal unification if (!p.isVar() && !l.isVar()) { - if (un.unifies(p.getAsListOfTerms(), l)) { + ListTerm palt = p.getAsListOfTerms(); + if (l.size() == 3) // list without name space + palt = palt.getNext(); + if (un.unifies(palt, l)) { return LogExpr.createUnifIterator(un); } } else { // first is var, second is list, var is assigned to l transformed in literal - if (p.isVar() && l.isList() && un.unifies(p, Literal.newFromListOfTerms(l))) { - return LogExpr.createUnifIterator(un); + if (p.isVar() && l.isList()) { + if (un.unifies(p, Literal.newFromListOfTerms(l))) + return LogExpr.createUnifIterator(un); + else + LogExpr.EMPTY_UNIF_LIST.iterator(); + } // first is literal, second is var, var is assigned to l transformed in list - if (p.isLiteral() && l.isVar() && un.unifies(p.getAsListOfTerms(), l)) { - return LogExpr.createUnifIterator(un); + if (p.isLiteral() && l.isVar()) { + if (un.unifies(p.getAsListOfTerms(), l)) + return LogExpr.createUnifIterator(un); + else + LogExpr.EMPTY_UNIF_LIST.iterator(); } // both are vars, error Modified: trunk/src/jason/asSyntax/Structure.java =================================================================== --- trunk/src/jason/asSyntax/Structure.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/Structure.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -63,10 +63,11 @@ this.terms = new ArrayList<Term>(5); } - public Structure(Atom namespace, String functor) { + public Structure(Atom namespace, String functor, int nbTerms) { //this.functor = (functor == null ? null : functor.intern()); // it does not improve performance in test i did! super(namespace, functor); - this.terms = new ArrayList<Term>(5); + if (nbTerms > 0) + this.terms = new ArrayList<Term>(5); } @@ -194,28 +195,11 @@ } else { return super.subsumes(t); } - } - + } - /* @Override - public boolean apply(Unifier u) { - boolean r = false; - // do not use iterator! (see ListTermImpl class) - final int tss = getArity(); - for (int i = 0; i < tss; i++) { - boolean tr = getTerm(i).apply(u); - r = r || tr; - } - if (r) - resetHashCodeCache(); - return r; - } - */ - - @Override public Term capply(Unifier u) { - return new Structure(this,u); + return new Structure(this, u); } /** make a deep copy of the terms */ Modified: trunk/src/jason/asSyntax/VarTerm.java =================================================================== --- trunk/src/jason/asSyntax/VarTerm.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/VarTerm.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -71,7 +71,7 @@ } public VarTerm(Atom namespace, String functor) { - super(namespace, LPos, functor); + super(namespace, LPos, functor, 0); } public VarTerm(Atom namespace, Literal v) { @@ -121,7 +121,7 @@ if (getNS() != Literal.DefaultNS && vl.isLiteral()) { // use var ns for the value ns - vl = ((Literal)vl).cloneNS(getNS()); + vl = ((Literal)vl).cloneNS( (Atom)getNS().capply(u) ); // this var ns could be a var, so capply } // decide whether to use var annots in apply Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-08 16:55:24 UTC (rev 1862) @@ -112,8 +112,12 @@ return u; if (u == Literal.LFalse) return u; - if (u.isAtom()) - return new Atom((Literal)u); + if (u.isAtom()) { + if (((Atom)u).getFunctor().equals("default")) + return Literal.DefaultNS; + else + return new Atom((Literal)u); + } return u; } Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -81,8 +81,12 @@ return u; if (u == Literal.LFalse) return u; - if (u.isAtom()) - return new Atom((Literal)u); + if (u.isAtom()) { + if (((Atom)u).getFunctor().equals("default")) + return Literal.DefaultNS; + else + return new Atom((Literal)u); + } return u; } @@ -1625,16 +1629,6 @@ finally { jj_save(3, xla); } } - final private boolean jj_3R_119() { - if (jj_3R_108()) return true; - 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; @@ -2606,6 +2600,16 @@ return false; } + final private boolean jj_3R_119() { + if (jj_3R_108()) return true; + return false; + } + + final private boolean jj_3R_118() { + if (jj_scan_token(41)) return true; + return false; + } + public as2jTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; Modified: trunk/src/jason/bb/ChainBBAdapter.java =================================================================== --- trunk/src/jason/bb/ChainBBAdapter.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/jason/bb/ChainBBAdapter.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -2,12 +2,14 @@ import jason.asSemantics.Agent; import jason.asSemantics.Unifier; +import jason.asSyntax.Atom; import jason.asSyntax.Literal; import jason.asSyntax.PredicateIndicator; import jason.bb.BeliefBase; import jason.bb.DefaultBeliefBase; import java.util.Iterator; +import java.util.Set; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -93,6 +95,11 @@ nextBB.clear(); } + @Override + public Set<Atom> getNameSpaces() { + return nextBB.getNameSpaces(); + } + public boolean add(Literal l) { return nextBB.add(l); } Modified: trunk/src/test/ExprTermTest.java =================================================================== --- trunk/src/test/ExprTermTest.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/test/ExprTermTest.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -125,7 +125,7 @@ public void testLiteralBuilder() throws JasonException { Literal l = Literal.parseLiteral("~p(t1,t2)[a1,a2]"); - assertEquals(l.getAsListOfTerms().size(), 3); + assertEquals(l.getAsListOfTerms().size(), 4); ListTerm lt1 = ListTermImpl.parseList("[~p,[t1,t2],[a1,a2]]"); assertTrue(l.equals(Literal.newFromListOfTerms(lt1))); @@ -137,7 +137,7 @@ Unifier u = new Unifier(); assertFalse(u.unifies(lt1, lt2)); - assertTrue(new RelExpr(l, RelExpr.RelationalOp.literalBuilder, lt1).logicalConsequence(null, u).hasNext()); + assertTrue( new RelExpr(l, RelExpr.RelationalOp.literalBuilder, lt1).logicalConsequence(null, u).hasNext()); assertFalse(new RelExpr(l, RelExpr.RelationalOp.literalBuilder, lt2).logicalConsequence(null, u).hasNext()); assertFalse(new RelExpr(l, RelExpr.RelationalOp.literalBuilder, lt3).logicalConsequence(null, u).hasNext()); @@ -150,14 +150,17 @@ u.clear(); assertTrue(new RelExpr(l, RelExpr.RelationalOp.literalBuilder, v).logicalConsequence(null, u).hasNext()); - assertEquals(u.get("X").toString(), lt1.toString()); - assertEquals(u.get("X"), lt1); - assertEquals(lt1, u.get("X")); + ListTerm lt4 = ListTermImpl.parseList("[default,~p,[t1,t2],[a1,a2]]"); + System.out.println(u); + assertEquals(u.get("X").toString(), lt4.toString()); + assertEquals(u.get("X"), lt4); + assertEquals(lt4, u.get("X")); + l = Literal.parseLiteral("p(t1,t2)"); - assertEquals(l.getAsListOfTerms().size(), 3); - assertEquals(((ListTerm)l.getAsListOfTerms().get(1)).size(), 2); - assertEquals(((ListTerm)l.getAsListOfTerms().get(2)).size(), 0); + assertEquals(l.getAsListOfTerms().size(), 4); + assertEquals(((ListTerm)l.getAsListOfTerms().get(2)).size(), 2); + assertEquals(((ListTerm)l.getAsListOfTerms().get(3)).size(), 0); } Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2015-12-07 18:35:12 UTC (rev 1861) +++ trunk/src/test/NSTest.java 2015-12-08 16:55:24 UTC (rev 1862) @@ -2,6 +2,7 @@ import jason.asSemantics.Unifier; import jason.asSyntax.ASSyntax; +import jason.asSyntax.Atom; import jason.asSyntax.Literal; import jason.asSyntax.Term; import jason.asSyntax.VarTerm; @@ -132,7 +133,22 @@ assertFalse(u.unifies(p1, p6)); } - + + public void testApply() throws ParseException { + Term t = ASSyntax.parseTerm("A::bob"); + Unifier u = new Unifier(); + u.unifies(new VarTerm("A"), new Atom("ns")); + t = t.capply(u); + assertEquals("ns::bob", t.toString()); + + t = ASSyntax.parseTerm("A::~bob(10)[a(20)]"); + u = new Unifier(); + u.unifies(new VarTerm("A"), new Atom("ns")); + t = t.capply(u); + assertEquals("ns::~bob(10)[a(20)]", t.toString()); + + } + public void testConstants() throws ParseException { Unifier u = new Unifier(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-07 18:35:14
|
Revision: 1861 http://sourceforge.net/p/jason/svn/1861 Author: jomifred Date: 2015-12-07 18:35:12 +0000 (Mon, 07 Dec 2015) Log Message: ----------- clean code of var term (from old commented code) Modified Paths: -------------- trunk/src/jason/asSemantics/Unifier.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/LiteralImpl.java trunk/src/jason/asSyntax/Pred.java trunk/src/jason/asSyntax/Structure.java trunk/src/jason/asSyntax/VarTerm.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/test/NSTest.java Added Paths: ----------- trunk/applications/as-unit-test/src/jason/tests/TestNS.java Added: trunk/applications/as-unit-test/src/jason/tests/TestNS.java =================================================================== --- trunk/applications/as-unit-test/src/jason/tests/TestNS.java (rev 0) +++ trunk/applications/as-unit-test/src/jason/tests/TestNS.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -0,0 +1,82 @@ +package jason.tests; + +import jason.asunit.TestAgent; + +import org.junit.Before; +import org.junit.Test; + +public class TestNS { + + TestAgent bob; + + // initialisation of the agents + @Before + public void setupAgs() { + bob = new TestAgent("bob"); + + // defines the agent's AgentSpeak code + bob.parseAScode( + "+!bb <- "+ + " +b(0, k); "+ + " +ns1::b(10, ns1::test); "+ + " +ns2::b(20, a); "+ + " ?b(X,Y); "+ + " jason.asunit.print(X,Y); "+ + " ?ns1::b(X2,ns1::_); "+ + " jason.asunit.print(X2); "+ + " ?ns2::b(X3,_); "+ + " jason.asunit.print(X3); "+ + " +Y::b(40,o); "+ + " +default::b(50,o); "+ + ". "+ + "+!fa <- "+ + " .findall(FV, b(FV,_), L); "+ + " jason.asunit.print(L); "+ + ". " + + "+!fa(NS) <- "+ + " .findall(FV, NS::b(FV,_::_), L); "+ + " jason.asunit.print(L); "+ + ". \n" + + "+!ia : .name_space(ns1) <- "+ + " .findall(J, .name_space(J), L); "+ + " jason.asunit.print(L); "+ + " .findall(X, .name_space(NS) & NS::b(X,_::_), L2); "+ + " jason.asunit.print(L2); "+ + " .findall(NS, NS::b(_,o), L3); "+ // all name spaces with b(_,o) + " jason.asunit.print(L3); "+ + ". " + + "+!var <- "+ + " .findall(X, X, L); "+ + " jason.asunit.print(L); "+ + ". " + ); + + } + + @Test(timeout=2000) + public void testBB() { + bob.addGoal("bb"); + bob.assertPrint("0k", 10); + bob.assertPrint("10", 10); + bob.assertPrint("20", 10); + bob.assertBel("k::b(40,o)", 10); + bob.assertBel("b(50,o)", 10); + + bob.addGoal("fa"); + bob.assertPrint("[50,0]", 10); + bob.addGoal("fa(default)"); + bob.assertPrint("[50,0]", 10); + bob.addGoal("fa(ns1)"); + bob.assertPrint("[10]", 10); + + bob.addGoal("ia"); + bob.assertPrint("[default,ns1,ns2,k]", 10); + bob.assertPrint("[50,0,10,20,40]", 10); + bob.assertPrint("[default,k]", 10); + + bob.addGoal("var"); + bob.assertPrint("[b(50,o)[source(self)],b(0,k)[source(self)]]", 10); + + } + +} Modified: trunk/src/jason/asSemantics/Unifier.java =================================================================== --- trunk/src/jason/asSemantics/Unifier.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSemantics/Unifier.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -298,14 +298,13 @@ } private boolean unifiesNamespace(Literal t1s, Literal t2s) { - if (t1s != Literal.DefaultNS || t2s != Literal.DefaultNS) { // if both are not default NS - Atom nst1 = (t1s == Literal.DefaultNS ? Literal.DefaultNS : t1s.getNS()); //(t1s instanceof Atom ? ((Atom)t1s).getNS() : Literal.DefaultNS)); - Atom nst2 = (t2s == Literal.DefaultNS ? Literal.DefaultNS : t2s.getNS()); //(t2s instanceof Atom ? ((Atom)t2s).getNS() : Literal.DefaultNS)); - //System.out.println(nst1.getFunctor()+" == "+ nst2.getFunctor()); //+" ==> "+unifiesNoUndo(nst1, nst2)); - //return nst1.getFunctor().equals(nst2.getFunctor()); - return unifiesNoUndo(nst1, nst2); + if (t1s == Literal.DefaultNS && t2s == Literal.DefaultNS) { // if both are the default NS + return true; } - return true; + Atom nst1 = (t1s == Literal.DefaultNS ? Literal.DefaultNS : t1s.getNS()); + Atom nst2 = (t2s == Literal.DefaultNS ? Literal.DefaultNS : t2s.getNS()); + //System.out.println(nst1.getFunctor()+" == "+ nst2.getFunctor()); //+" ==> "+unifiesNoUndo(nst1, nst2)); + return unifiesNoUndo(nst1, nst2); } public VarTerm deref(VarTerm v) { @@ -327,11 +326,13 @@ } public boolean bind(VarTerm vt1, VarTerm vt2) { + if (! vt1.getNS().equals(vt2.getNS())) + return false; + if (vt1.negated() && vt2.negated()) { // in the case of ~A = ~B, put A=B in the unifier vt1 = new VarTerm(vt1.getFunctor()); vt2 = new VarTerm(vt2.getFunctor()); } - final int comp = vt1.compareTo(vt2); if (comp < 0) { function.put((VarTerm)vt1.clone(), vt2.clone()); @@ -359,20 +360,16 @@ if (vl.isLiteral()) { Literal lvl = (Literal)vl; - //if (!vt.getNS().equals( lvl.getNS()) ) { - if (! unifiesNamespace(vt, lvl) ) { - //System.out.println("f "+vt+ " /== " + vl); //((Literal)vl).getNS() ); + if (! unifiesNamespace(vt, lvl) ) return false; - } - if ( lvl.getNS() != Literal.DefaultNS) { + if ( lvl.getNS() != Literal.DefaultNS) vl = lvl.cloneNS(Literal.DefaultNS); - } } if (!vl.isCyclicTerm() && vl.hasVar(vt, this)) { vl = new CyclicTerm((Literal)vl, (VarTerm)vt.clone()); } - //System.out.println("add bind "+vt+" -> "+vl); + function.put((VarTerm) vt.clone(), vl); return true; } Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -43,10 +43,7 @@ private final Atom ns; // name space public Atom(String functor) { - if (functor == null) - logger.log(Level.WARNING, "The functor of an atom functor should not be null!", new Exception()); - this.functor = functor; - this.ns = DefaultNS; + this(DefaultNS, functor); } protected Atom(Atom namespace, String functor) { Modified: trunk/src/jason/asSyntax/LiteralImpl.java =================================================================== --- trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -50,6 +50,12 @@ type = pos; } + /** if pos == true, the literal is positive, otherwise it is negative */ + public LiteralImpl(Atom namespace, boolean pos, String functor) { + super(namespace, functor); + type = pos; + } + public LiteralImpl(Literal l) { super(l); type = !l.negated(); @@ -165,13 +171,6 @@ return predicateIndicatorCache; } - public String toString() { - if (type == LPos) - return super.toString(); - else - return "~" + super.toString(); - } - /** get as XML */ @Override public Element getAsDOM(Document document) { Modified: trunk/src/jason/asSyntax/Pred.java =================================================================== --- trunk/src/jason/asSyntax/Pred.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/Pred.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -50,6 +50,10 @@ super(functor); } + public Pred(Atom namespace, String functor) { + super(namespace, functor); + } + public Pred(Literal l) { this(l.getNS(), l); } @@ -608,12 +612,6 @@ return super.toString(); } - public String toString() { - String s = super.toString(); - if (hasAnnot()) s += annots.toString(); - return s; - } - /** get as XML */ @Override public Element getAsDOM(Document document) { Modified: trunk/src/jason/asSyntax/Structure.java =================================================================== --- trunk/src/jason/asSyntax/Structure.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/Structure.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -62,7 +62,14 @@ super(functor); this.terms = new ArrayList<Term>(5); } + + public Structure(Atom namespace, String functor) { + //this.functor = (functor == null ? null : functor.intern()); // it does not improve performance in test i did! + super(namespace, functor); + this.terms = new ArrayList<Term>(5); + } + public Structure(Literal l) { this(l.getNS(), l); } @@ -449,6 +456,8 @@ s.append(getNS()); s.append("::"); } + if (negated()) + s.append("~"); if (getFunctor() != null) s.append(getFunctor()); if (getArity() > 0) { @@ -460,6 +469,8 @@ } s.append(')'); } + if (hasAnnot()) + s.append(getAnnots().toString()); return s.toString(); } Modified: trunk/src/jason/asSyntax/VarTerm.java =================================================================== --- trunk/src/jason/asSyntax/VarTerm.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/VarTerm.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -71,8 +71,7 @@ } public VarTerm(Atom namespace, String functor) { - super(namespace, LPos, new Atom(functor)); // TODO: provide proper constructor - //System.out.println("****"+v+" "+this); + super(namespace, LPos, functor); } public VarTerm(Atom namespace, Literal v) { @@ -94,6 +93,7 @@ protected int calcHashCode() { int result = getFunctor().hashCode(); if (negated()) result += 3271; + // Do not consider NS! return result; } @@ -159,18 +159,10 @@ return new VarTerm( newNameSpace, this); } - /* - public PlanBody clonePB() { - return (PlanBody)clone(); - } - */ - public ListTerm cloneLT() { return (ListTerm)clone(); } - - @Override public boolean isVar() { return true; @@ -185,110 +177,21 @@ return false; } - /** - * grounds a variable, set a value for this var - * (e.g. X = 10; Y = a(b,c); ...) - */ - /*public boolean setValue(Term vl) { - if (vl.isVar()) { - logger.log(Level.WARNING, "Attempted set a variable as a value for a variable, in " + this.getFunctor(), new Exception()); - return false; - } - - vl = vl.clone(); // should clone here, since there is no cloning in unify - // decide whether to use var annots in apply - // X = p[a] - // !X[b] - // what's the event: - // +!p[a] - // or - // +!p[a,b] - // Answer: use annots of var, useful for meta-programming like - // P[step(N)] - if (vl.isLiteral() && this.hasAnnot()) { // if this var has annots, add them in the value's annots (Experimental) - vl = ((Literal)vl).forceFullLiteralImpl().addAnnots(this.getAnnots()); - } - - value = vl; - resetHashCodeCache(); - return true; - }*/ - - /** returns true if this var has a value */ -/* - public boolean hasValue() { - return value != null; - } -*/ - /* - public boolean apply(Unifier u) { - if (value == null) { - Term vl = u.get(this); - if (vl != null) { - if (!vl.isCyclicTerm() && vl.hasVar(this, u)) { - //logger.warning("The value of a variable contains itself, variable "+super.getFunctor()+" "+super.getSrcInfo()+", value="+vl+", unifier="+u); - - u.remove(this); // remove this var to avoid loops in the apply below - //Term tempVl = vl.clone(); - //tempVl.apply(u); - Term tempVl = vl.capply(u); - u.bind(this, vl); - - CyclicTerm ct = new CyclicTerm((Literal)tempVl, this); - Unifier renamedVars = new Unifier(); // remove "this" from the value to avoid loops in apply - ct.makeVarsAnnon(renamedVars); - renamedVars.remove(this); - u.compose(renamedVars); - vl = ct; - } - vl = setValue(vl); - value.apply(u); // in case t has var args - return true; - } - } else { - return getValue().apply(u); - } - return false; - } - */ - - /** - * returns the value of this var. - */ - /* public Term getValue() { - return value; - }*/ - @Override public boolean equals(Object t) { if (t == null) return false; if (t == this) return true; - /*if (t instanceof Term) { - Term vl = getValue(); - // System.out.println("checking equals form "+tAsTerm.getFunctor()+" - // and this "+this.getFunctor()+" my value "+vl); - if (vl != null) { - // compare the values - return vl.equals(t); - } - */ - // is t also a var? (its value must also be null) - if (t instanceof VarTerm) { - final VarTerm tAsVT = (VarTerm) t; - //if (tAsVT.getValue() == null) { - return negated() == tAsVT.negated() && getFunctor().equals(tAsVT.getFunctor()); // && getNS().equals(tAsVT.getNS()); - // DO NOT consider ns in equals of hashcode! - - //} - } - //} + // is t also a var? (its value must also be null) + if (t instanceof VarTerm) { + final VarTerm tAsVT = (VarTerm) t; + // DO NOT consider ns in equals of hashcode! + return negated() == tAsVT.negated() && getFunctor().equals(tAsVT.getFunctor()); // && getNS().equals(tAsVT.getNS()); + } return false; } public int compareTo(Term t) { - /*if (value != null) - return value.compareTo(t); - else*/ if (t == null || t.isUnnamedVar()) + if (t == null || t.isUnnamedVar()) return -1; else if (t.isVar()) { if (!negated() && ((VarTerm)t).negated()) @@ -302,10 +205,7 @@ @Override public boolean subsumes(Term t) { - /*if (value != null) - return value.subsumes(t); - else */ - return true; + return true; } // ---------- @@ -314,139 +214,56 @@ // in case this VarTerm has a value, use value's methods // ---------- - /* @Override - public String getFunctor() { - if (value == null) { - return super.getFunctor(); - } else if (value instanceof Atom) { - return ((Atom)getValue()).getFunctor(); + public Iterator<Unifier> logicalConsequence(Agent ag, Unifier un) { + // try to apply + Term t = this.capply(un); + if ( t.equals(this) ) { + // the variable is still a Var, find all bels that unify. + return super.logicalConsequence(ag, un); } else { - return null; + // the clone is still a var + return ((LogicalFormula)t).logicalConsequence(ag, un); } } @Override - public PredicateIndicator getPredicateIndicator() { - if (value != null && value.isLiteral()) { - return ((Literal)value).getPredicateIndicator(); - } else if (predicateIndicatorCache == null) { - predicateIndicatorCache = new PredicateIndicator(getFunctor(), 0); - } - return predicateIndicatorCache; - } - - @Override - public int hashCode() { - if (value != null) - return value.hashCode(); - else - return getFunctor().hashCode(); - } - */ - - @Override - public Iterator<Unifier> logicalConsequence(Agent ag, Unifier un) { - /*if (value != null && value instanceof LogicalFormula) - return ((LogicalFormula)value).logicalConsequence(ag, un); - else {*/ - // try to apply - Term t = this.capply(un); - if ( t.equals(this) ) { - // the variable is still a Var, find all bels that unify. - return super.logicalConsequence(ag, un); - } else { - // the clone is still a var - return ((LogicalFormula)t).logicalConsequence(ag, un); - } - //} - } - - @Override public Term getTerm(int i) { - /*if (value != null && value.isStructure()) { - return ((Structure)getValue()).getTerm(i); - } else {*/ - return null; - //} + return null; } @Override public void addTerm(Term t) { - /*if (value != null) - if (value.isStructure()) - ((Structure)getValue()).addTerm(t); - else*/ - logger.log(Level.WARNING, "The addTerm '"+t+"' in "+this+" was lost, since I am a var.", new Exception()); + logger.log(Level.WARNING, "The addTerm '"+t+"' in "+this+" was lost, since I am a var.", new Exception()); } @Override public int getArity() { - /*if (value != null && value.isStructure()) { - return ((Structure)getValue()).getArity(); - } else {*/ - return 0; - //} + return 0; } @Override public List<Term> getTerms() { - /*if (value != null && value.isStructure()) { - return ((Structure)getValue()).getTerms(); - } else {*/ - return null; - //} + return null; } @Override public Literal setTerms(List<Term> l) { - /*if (value != null) { - if (value.isStructure()) { - return ((Structure)getValue()).setTerms(l); - } else { - logger.log(Level.WARNING, "The setTerms '"+l+"' in "+this+" was lost, since this var value is not a Structure. The value's class is "+getValue().getClass().getName(), new Exception()); - return null; - } - } else {*/ - return this; - //} + return this; } @Override public void setTerm(int i, Term t) { - /*if (value != null) - if (value.isStructure()) - ((Structure)getValue()).setTerm(i,t); - else - logger.log(Level.WARNING, "The setTerm '"+t+"' in "+this+" was lost, since this var value is not a Structure. The value's class is "+getValue().getClass().getName(), new Exception()); - */ } @Override public Literal addTerms(List<Term> l) { - /*if (value != null) - if (value.isStructure()) - return ((Structure)getValue()).addTerms(l); - else - logger.log(Level.WARNING, "The addTerms '"+l+"' in "+this+" was lost, since this var value is not a Structure. The value's class is "+getValue().getClass().getName(), new Exception()); - */ return this; } - /* @Override - public Term[] getTermsArray() { - if (value != null && value.isStructure()) { - return ((Structure)getValue()).getTermsArray(); - } else { - return null; - } - } - */ - - @Override public boolean isInternalAction() { return false; } @@ -506,20 +323,8 @@ return false; } - /* @Override - public VarTerm getCyclicVar() { - if (value != null) - return value.getCyclicVar(); - else - return super.getCyclicVar(); - } - */ - - @Override public boolean hasVar(VarTerm t, Unifier u) { - /*if (value != null) - return value.hasVar(t, u);*/ if (equals(t)) return true; @@ -541,246 +346,16 @@ @Override public void countVars(Map<VarTerm, Integer> c) { - //if (value == null) { - int n = c.containsKey(this) ? c.get(this) : 0; - c.put(this, n+1); - super.countVars(c); - /*} else { - value.countVars(c); - }*/ + int n = c.containsKey(this) ? c.get(this) : 0; + c.put(this, n+1); + super.countVars(c); } - - /* - @Override - public Literal makeVarsAnnon(Unifier un) { - if (value == null) - return super.makeVarsAnnon(un); - else if (getValue() instanceof Literal) - return ((Literal)getValue()).makeVarsAnnon(un); - else - return null; - } - */ @Override - public String toString() { - String s = getFunctor(); - if (hasAnnot()) - s += getAnnots(); - if (negated()) - s = "~" + s; - if (getNS() != Literal.DefaultNS) - s = getNS() + "::" + s; - return s; - } - - // ---------- - // Pred methods overridden - // - // in case this VarTerm has a value, use value's methods - // ---------- - - /* - @Override - public Literal setAnnots(ListTerm l) { - if (value != null) - if (getValue().isPred()) - return ((Pred) getValue()).setAnnots(l); - else - logger.log(Level.WARNING, "The setAnnots '"+l+"' in "+this+" was lost, since this var value is not a Pred. The value's class is "+getValue().getClass().getName(), new Exception()); - else - return super.setAnnots(l); - return this; - } - - @Override - public boolean importAnnots(Literal p) { - if (value != null) - if (getValue().isPred()) { - return ((Pred) getValue()).importAnnots(p); - } else { - logger.log(Level.WARNING, "The importAnnots '"+p+"' in "+this+" was lost, since this var value is not a Pred. The value's class is "+getValue().getClass().getName(), new Exception()); - return false; - } - else - return super.importAnnots(p); - } - - @Override - public boolean addAnnot(Term t) { - if (value != null) - if (getValue().isPred()) { - return ((Pred) getValue()).addAnnot(t); - } else { - logger.log(Level.WARNING, "The add of annotation '"+t+"' in "+this+" was lost, since this var value is not a Pred. The value's class is "+getValue().getClass().getName(), new Exception()); - return false; - } - else - return super.addAnnot(t); - } - - @Override - public Literal addAnnots(List<Term> l) { - if (value != null) - if (getValue().isPred()) { - return ((Pred) getValue()).addAnnots(l); - } else { - logger.log(Level.WARNING, "The addAnnots '"+l+"' in "+this+" was lost, since this var value is not a Pred. The value's class is "+getValue().getClass().getName(), new Exception()); - return null; - } - else - return super.addAnnots(l); - } - - @Override - public void clearAnnots() { - if (value != null && getValue().isPred()) - ((Pred) getValue()).clearAnnots(); - else - super.clearAnnots(); - } - - @Override - public boolean delAnnots(List<Term> l) { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).delAnnots(l); - else - return super.delAnnots(l); - } - - @Override - public boolean delAnnot(Term t) { - if (value != null && getValue().isPred()) - return ((Pred) getValue()).delAnnot(t); - else - return super.delAnnot(t); - } - - @Override - public boolean hasAnnot(Term t) { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).hasAnnot(t); - else - return super.hasAnnot(t); - } - - @Override - public boolean hasAnnot() { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).hasAnnot(); - else - return super.hasAnnot(); - } - - @Override - public boolean hasSubsetAnnot(Literal p) { - if (value != null && value.isLiteral()) { - return ((Literal)value).hasSubsetAnnot(p); - } else { - return super.hasSubsetAnnot(p); - } - } - - @Override - public boolean hasSubsetAnnot(Literal p, Unifier u) { - if (value != null && value.isLiteral()) { - return ((Literal)value).hasSubsetAnnot(p, u); - } else { - return super.hasSubsetAnnot(p, u); - } - } - - - @Override - public ListTerm getAnnots() { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).getAnnots(); - else - return super.getAnnots(); - } - - @Override - public void addSource(Term t) { - if (value != null) - if (getValue().isPred()) - ((Pred) getValue()).addSource(t); - else - logger.log(Level.WARNING, "The addSource '"+t+"' in "+this+" was lost, since this var value is not a Pred. The value's class is "+getValue().getClass().getName(), new Exception()); - else - super.addSource(t); - } - - @Override - public boolean delSource(Term s) { - if (value != null && getValue().isPred()) - return ((Pred) getValue()).delSource(s); - else - return super.delSource(s); - } - - @Override - public void delSources() { - if (value != null && getValue().isPred()) - ((Pred) getValue()).delSources(); - else - super.delSources(); - } - - @Override - public ListTerm getSources() { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).getSources(); - else - return super.getSources(); - } - - @Override - public boolean hasSource() { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).hasSource(); - else - return super.hasSource(); - } - - @Override - public boolean hasSource(Term s) { - if (value != null && getValue().isLiteral()) - return ((Literal) getValue()).hasSource(s); - else - return super.hasSource(s); - } - - // ---------- - // Literal methods overridden - // - // in case this VarTerm has a value, use value's methods - // ---------- - - @Override - public boolean negated() { - if (value == null) - return super.negated(); - else - return getValue().isLiteral() && ((Literal) getValue()).negated(); - } - */ - @Override public boolean canBeAddedInBB() { - //if (value != null && getValue().isLiteral()) - // return ((Literal) getValue()).canBeAddedInBB(); - //else - return false; + return false; } - /* - @Override - public Literal forceFullLiteralImpl() { - if (hasValue() && getValue().isLiteral()) - return ((Literal)getValue()).forceFullLiteralImpl(); - else - return super.forceFullLiteralImpl(); - } - */ // ---------- // ArithmeticExpression methods overridden // Interface NumberTerm @@ -788,15 +363,6 @@ public double solve() throws NoValueException { throw new NoValueException(); - /* - if (value != null && value.isNumeric()) - return ((NumberTerm) value).solve(); - else if (hasValue()) - logger.log(Level.SEVERE, getErrorMsg()+" Error getting numerical value of VarTerm " + super.getFunctor() + ", the variable value ("+value+") is not a number.", new Exception()); - else - logger.log(Level.SEVERE, getErrorMsg()+" Error getting numerical value of VarTerm " + super.getFunctor() + ", the variable hasn't a value.", new Exception()); - return 0; - */ } // ---------- @@ -806,429 +372,191 @@ // ---------- public void add(int index, Term o) { - //if (value != null && getValue().isList()) - // ((ListTerm) getValue()).add(index, o); } public boolean add(Term o) { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).add(o); + return false; } public boolean addAll(@SuppressWarnings("rawtypes") Collection c) { - return false; // value != null && getValue().isList() && ((ListTerm) getValue()).addAll(c); + return false; } public boolean addAll(int index, @SuppressWarnings("rawtypes") Collection c) { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).addAll(index, c); + return false; } public void clear() { - //if (value != null && getValue().isList()) - // ((ListTerm) getValue()).clear(); } public boolean contains(Object o) { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).contains(o); + return false; } public boolean containsAll(@SuppressWarnings("rawtypes") Collection c) { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).containsAll(c); + return false; } public Term get(int index) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).get(index); - else*/ - return null; + return null; } public int indexOf(Object o) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).indexOf(o); - else*/ - return -1; + return -1; } public int lastIndexOf(Object o) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).lastIndexOf(o); - else*/ - return -1; + return -1; } public Iterator<Term> iterator() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).iterator(); - else*/ - return null; + return null; } public ListIterator<Term> listIterator() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).listIterator(); - else*/ - return null; + return null; } public ListIterator<Term> listIterator(int index) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).listIterator(index); - else*/ - return null; + return null; } public Term remove(int index) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).remove(index); - else*/ - return null; + return null; } public boolean remove(Object o) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).remove(o); - else*/ - return false; + return false; } public boolean removeAll(@SuppressWarnings("rawtypes") Collection c) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).removeAll(c); - else*/ - return false; + return false; } public boolean retainAll(@SuppressWarnings("rawtypes") Collection c) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).retainAll(c); - else*/ - return false; + return false; } public Term set(int index, Term o) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).set(index, o); - else*/ - return null; + return null; } public List<Term> subList(int arg0, int arg1) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).subList(arg0, arg1); - else*/ - return null; + return null; } public Iterator<List<Term>> subSets(int k) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).subSets(k); - else*/ - return null; + return null; } public Object[] toArray() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).toArray(); - else*/ - return null; + return null; } @SuppressWarnings("unchecked") public Object[] toArray(Object[] arg0) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).toArray(arg0); - else*/ - return null; + return null; } // from ListTerm public void setTerm(Term t) { - //if (value != null && getValue().isList()) - // ((ListTerm) getValue()).setTerm(t); } public void setNext(Term t) { - //if (value != null && getValue().isList()) - // ((ListTerm) getValue()).setNext(t); } public ListTerm append(Term t) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).append(t); - else*/ - return null; + return null; } public ListTerm insert(Term t) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).insert(t); - else*/ - return null; + return null; } public ListTerm concat(ListTerm lt) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).concat(lt); - else*/ - return null; + return null; } public ListTerm reverse() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).reverse(); - else*/ - return null; + return null; } public ListTerm union(ListTerm lt) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).union(lt); - else*/ - return null; + return null; } public ListTerm intersection(ListTerm lt) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).intersection(lt); - else*/ - return null; + return null; } public ListTerm difference(ListTerm lt) { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).difference(lt); - else*/ - return null; + return null; } public List<Term> getAsList() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getAsList(); - else*/ - return null; + return null; } public ListTerm getLast() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getLast(); - else*/ - return null; + return null; } public ListTerm getPenultimate() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getPenultimate(); - else*/ - return null; + return null; } public Term removeLast() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).removeLast(); - else*/ - return null; + return null; } public ListTerm getNext() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getNext(); - else*/ - return null; + return null; } public Term getTerm() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getTerm(); - else*/ - return null; + return null; } public boolean isEmpty() { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).isEmpty(); + return false; } public boolean isEnd() { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).isEnd(); + return false; } public boolean isTail() { - return false; //value != null && getValue().isList() && ((ListTerm) getValue()).isTail(); + return false; } public void setTail(VarTerm v) { - //if (value != null && getValue().isList()) - // ((ListTerm) getValue()).setTail(v); } public VarTerm getTail() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).getTail(); - else*/ - return null; + return null; } public Iterator<ListTerm> listTermIterator() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).listTermIterator(); - else*/ - return null; + return null; } public int size() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).size(); - else*/ - return -1; + return -1; } public ListTerm cloneLTShallow() { - /*if (value != null && getValue().isList()) - return ((ListTerm) getValue()).cloneLTShallow(); - else*/ - return null; + return null; } - // ----------------------- - // StringTerm interface implementation - // ----------------------- - - /* - public String getString() { - if (value != null && getValue().isString()) - return ((StringTerm) getValue()).getString(); - else - return null; - } - - public int length() { - if (value != null && getValue().isString()) - return ((StringTerm) getValue()).length(); - else - return -1; - } - */ - - // ----------------------- - // ObjectTerm interface implementation - // ----------------------- - - /* - public Object getObject() { - if (value != null && getValue() instanceof ObjectTerm) - return ((ObjectTerm) getValue()).getObject(); - else - return null; - } - */ - - // ----------------------- - // PlanBody interface implementation - // ----------------------- - /* - public BodyType getBodyType() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).getBodyType(); - else - return BodyType.none; - } - - public Term getBodyTerm() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).getBodyTerm(); - else - return null; - } - - public PlanBody getBodyNext() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).getBodyNext(); - else - return null; - } - - public PlanBody getLastBody() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).getLastBody(); - else - return null; - } - - public boolean isEmptyBody() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).isEmptyBody(); - else - return true; - } - - public int getPlanSize() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).getPlanSize(); - else - return 0; - } - - public void setBodyType(BodyType bt) { - if (value != null && getValue() instanceof PlanBody) - ((PlanBody) getValue()).setBodyType(bt); - } - - public void setBodyTerm(Term t) { - if (value != null && getValue() instanceof PlanBody) - ((PlanBody) getValue()).setBodyTerm(t); - } - - public void setBodyNext(PlanBody bl) { - if (value != null && getValue() instanceof PlanBody) - ((PlanBody) getValue()).setBodyNext(bl); - } - - public boolean isBodyTerm() { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).isBodyTerm(); - else - return false; - } - - public void setAsBodyTerm(boolean b) { - if (value != null && getValue() instanceof PlanBody) - ((PlanBody) getValue()).setAsBodyTerm(b); - } - - public boolean add(PlanBody bl) { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).add(bl); - else - return false; - } - - public boolean add(int index, PlanBody bl) { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).add(index, bl); - else - return false; - } - - public Term removeBody(int index) { - if (value != null && getValue() instanceof PlanBody) - return ((PlanBody) getValue()).removeBody(index); - else - return null; - } - */ - /** get as XML */ public Element getAsDOM(Document document) { - /*if (hasValue()) { - return value.getAsDOM(document); - } else {*/ - Element u = (Element) document.createElement("var-term"); - u.setAttribute("functor", getFunctor()); - if (hasAnnot()) { - Element ea = document.createElement("annotations"); - ea.appendChild(getAnnots().getAsDOM(document)); - u.appendChild(ea); - } - return u; - //} + Element u = (Element) document.createElement("var-term"); + u.setAttribute("functor", getFunctor()); + if (hasAnnot()) { + Element ea = document.createElement("annotations"); + ea.appendChild(getAnnots().getAsDOM(document)); + u.appendChild(ea); + } + return u; } } Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-07 18:35:12 UTC (rev 1861) @@ -601,7 +601,9 @@ NS = new Atom(tns.image); } | - NS = var(NS) + NS = var(NS) { if (NS.hasAnnot()) + throw new ParseException(getSourceRef(NS)+" name space cannot have annotations."); + } ) "::" ] @@ -612,11 +614,7 @@ (F=pred() | V = var(NS) { VarTerm vt = (VarTerm)V; vt.setNegated(type); - //if (NS == Literal.DefaultNS) { - return vt; - //} else { - // return new VarTerm(NS, vt); - //} + return vt; } ) ) @@ -629,6 +627,8 @@ throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations."); if (type == Literal.LNeg) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated."); + if (NS != Literal.DefaultNS) + throw new ParseException(getSourceRef(F)+" Internal actions cannot have name space."); try { return new InternalActionLiteral(F, curAg); } catch (Exception e) { @@ -883,7 +883,7 @@ } -VarTerm var(Atom ns): { Token K; VarTerm v; ListTerm lt; } +VarTerm var(Atom ns): { Token K; VarTerm v; ListTerm lt = null; } { ( K = <VAR> { v = new VarTerm(ns, K.image); v.setSrcInfo(new SourceInfo(asSource, K.beginLine));} | K = <UNNAMEDVAR> { v = UnnamedVar.create(ns, K.image); } @@ -891,7 +891,8 @@ [ lt = list() { v.setAnnots(lt); } ] - { return v; } + { return v; + } } StringTerm string():{ Token k; StringTermImpl s; } Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -902,6 +902,8 @@ case VAR: case UNNAMEDVAR: NS = var(NS); + if (NS.hasAnnot()) + {if (true) throw new ParseException(getSourceRef(NS)+" name space cannot have annotations.");} break; default: jj_la1[32] = jj_gen; @@ -932,12 +934,7 @@ V = var(NS); VarTerm vt = (VarTerm)V; vt.setNegated(type); - //if (NS == Literal.DefaultNS) { - {if (true) return vt;} - //} else { - // return new VarTerm(NS, vt); - //} - + {if (true) return vt;} break; default: jj_la1[34] = jj_gen; @@ -963,6 +960,8 @@ {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations.");} if (type == Literal.LNeg) {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated.");} + if (NS != Literal.DefaultNS) + {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have name space.");} try { {if (true) return new InternalActionLiteral(F, curAg);} } catch (Exception e) { @@ -1561,7 +1560,7 @@ } final public VarTerm var(Atom ns) throws ParseException { - Token K; VarTerm v; ListTerm lt; + Token K; VarTerm v; ListTerm lt = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: K = jj_consume_token(VAR); @@ -1891,13 +1890,13 @@ return false; } - final private boolean jj_3R_92() { - if (jj_scan_token(VAR)) return true; + final private boolean jj_3R_78() { + if (jj_scan_token(STRING)) return true; return false; } - final private boolean jj_3R_78() { - if (jj_scan_token(STRING)) return true; + final private boolean jj_3R_92() { + if (jj_scan_token(VAR)) return true; return false; } @@ -2274,18 +2273,13 @@ return false; } - final private boolean jj_3R_37() { - if (jj_scan_token(TK_FALSE)) return true; - return false; - } - final private boolean jj_3R_104() { if (jj_scan_token(59)) return true; return false; } - final private boolean jj_3R_36() { - if (jj_scan_token(TK_TRUE)) return true; + final private boolean jj_3R_37() { + if (jj_scan_token(TK_FALSE)) return true; return false; } @@ -2306,6 +2300,11 @@ return false; } + final private boolean jj_3R_36() { + if (jj_scan_token(TK_TRUE)) return true; + return false; + } + final private boolean jj_3R_95() { if (jj_3R_97()) return true; Token xsp; @@ -2321,6 +2320,11 @@ return false; } + final private boolean jj_3R_50() { + if (jj_3R_13()) return true; + return false; + } + final private boolean jj_3R_122() { if (jj_scan_token(TK_FOR)) return true; if (jj_scan_token(42)) return true; @@ -2330,11 +2334,6 @@ return false; } - final private boolean jj_3R_50() { - if (jj_3R_13()) return true; - return false; - } - final private boolean jj_3R_49() { if (jj_scan_token(TK_NEG)) return true; return false; Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2015-12-07 17:16:38 UTC (rev 1860) +++ trunk/src/test/NSTest.java 2015-12-07 18:35:12 UTC (rev 1861) @@ -42,6 +42,9 @@ t1 = ASSyntax.parseLiteral("ns::_"); assertTrue(t1.toString().startsWith("ns::_")); + + t1 = ASSyntax.parseLiteral("ns::~p"); + assertEquals("ns::~p", t1.toString()); } public void testUnifies() throws ParseException { @@ -120,9 +123,35 @@ assertTrue(u.unifies(new VarTerm("A"), ASSyntax.parseLiteral("ns::bob(45)"))); Literal t = (Literal)p1.capply(u); assertEquals("ns::bob(45)", t.toString()); + + // ns::A = other::B // fail + u = new Unifier(); + p6 = ASSyntax.parseLiteral("other::B"); + u.unifies(p1, p6); + System.out.println(u); + assertFalse(u.unifies(p1, p6)); + + } + public void testConstants() throws ParseException { + Unifier u = new Unifier(); + + // A = 10 // unifies + assertTrue(u.unifies(new VarTerm("A"), ASSyntax.parseTerm("10"))); + assertEquals("10", u.get("A").toString()); + + // ns1::A = 10 // unifies + u = new Unifier(); + assertTrue(u.unifies(ASSyntax.parseTerm("ns::A"), ASSyntax.parseTerm("10"))); + assertEquals("10", u.get("A").toString()); + + // A::B = 10 // unifies (A -> default) + u = new Unifier(); + assertTrue(u.unifies(ASSyntax.parseTerm("A::B"), ASSyntax.parseTerm("10"))); + assertEquals("10", u.get("B").toString()); + } - + public void testCompare() throws ParseException { Literal p1 = ASSyntax.parseLiteral("ns1::a"); Literal p2 = ASSyntax.parseLiteral("ns2::b"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-07 17:16:40
|
Revision: 1860 http://sourceforge.net/p/jason/svn/1860 Author: jomifred Date: 2015-12-07 17:16:38 +0000 (Mon, 07 Dec 2015) Log Message: ----------- add vars with name spaces Modified Paths: -------------- trunk/src/jason/asSemantics/Unifier.java trunk/src/jason/asSyntax/ASSyntax.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/Literal.java trunk/src/jason/asSyntax/LiteralImpl.java trunk/src/jason/asSyntax/Pred.java trunk/src/jason/asSyntax/PredicateIndicator.java trunk/src/jason/asSyntax/Structure.java trunk/src/jason/asSyntax/UnnamedVar.java trunk/src/jason/asSyntax/VarTerm.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/jason/bb/DefaultBeliefBase.java trunk/src/test/NSTest.java Modified: trunk/src/jason/asSemantics/Unifier.java =================================================================== --- trunk/src/jason/asSemantics/Unifier.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSemantics/Unifier.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -24,6 +24,7 @@ package jason.asSemantics; import jason.asSyntax.ASSyntax; +import jason.asSyntax.Atom; import jason.asSyntax.CyclicTerm; import jason.asSyntax.ListTerm; import jason.asSyntax.ListTermImpl; @@ -235,7 +236,7 @@ // deref vars final VarTerm t1gv = t1gisvar ? deref((VarTerm)t1g) : null; final VarTerm t2gv = t2gisvar ? deref((VarTerm)t2g) : null; - + // get their values //final Term t1vl = t1gisvar ? function.get(t1gv) : t1g; //final Term t2vl = t2gisvar ? function.get(t2gv) : t2g; @@ -280,9 +281,9 @@ return false; // different name space - if (t1s.getNS() != null && t2s.getNS() != null && !unifiesNoUndo(t1s.getNS(),t2s.getNS())) + if (!unifiesNamespace(t1s, t2s)) return false; - + // unify inner terms // do not use iterator! (see ListTermImpl class) for (int i = 0; i < ts; i++) @@ -295,6 +296,17 @@ return true; } + + private boolean unifiesNamespace(Literal t1s, Literal t2s) { + if (t1s != Literal.DefaultNS || t2s != Literal.DefaultNS) { // if both are not default NS + Atom nst1 = (t1s == Literal.DefaultNS ? Literal.DefaultNS : t1s.getNS()); //(t1s instanceof Atom ? ((Atom)t1s).getNS() : Literal.DefaultNS)); + Atom nst2 = (t2s == Literal.DefaultNS ? Literal.DefaultNS : t2s.getNS()); //(t2s instanceof Atom ? ((Atom)t2s).getNS() : Literal.DefaultNS)); + //System.out.println(nst1.getFunctor()+" == "+ nst2.getFunctor()); //+" ==> "+unifiesNoUndo(nst1, nst2)); + //return nst1.getFunctor().equals(nst2.getFunctor()); + return unifiesNoUndo(nst1, nst2); + } + return true; + } public VarTerm deref(VarTerm v) { Term vl = function.get(v); @@ -344,11 +356,23 @@ return false; } } + + if (vl.isLiteral()) { + Literal lvl = (Literal)vl; + //if (!vt.getNS().equals( lvl.getNS()) ) { + if (! unifiesNamespace(vt, lvl) ) { + //System.out.println("f "+vt+ " /== " + vl); //((Literal)vl).getNS() ); + return false; + } + if ( lvl.getNS() != Literal.DefaultNS) { + vl = lvl.cloneNS(Literal.DefaultNS); + } + } if (!vl.isCyclicTerm() && vl.hasVar(vt, this)) { vl = new CyclicTerm((Literal)vl, (VarTerm)vt.clone()); } - + //System.out.println("add bind "+vt+" -> "+vl); function.put((VarTerm) vt.clone(), vl); return true; } Modified: trunk/src/jason/asSyntax/ASSyntax.java =================================================================== --- trunk/src/jason/asSyntax/ASSyntax.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/ASSyntax.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -181,7 +181,7 @@ public static VarTerm parseVar(String sVar) throws ParseException { //return new as2j(new StringReader(sVar)).var(); as2j parser = new as2j(new StringReader(sVar)); - VarTerm v = parser.var(); + VarTerm v = parser.var(Literal.DefaultNS); if (parser.getNextToken().kind != as2jConstants.EOF) throw new ParseException("Expected <EOF> after "+v+" for parameter '"+sVar+"'"); return v; Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -49,7 +49,7 @@ this.ns = DefaultNS; } - public Atom(Atom namespace, String functor) { + protected Atom(Atom namespace, String functor) { if (functor == null) logger.log(Level.WARNING, "The functor of an atom functor should not be null!", new Exception()); this.functor = functor; @@ -60,13 +60,16 @@ this(l.getNS(), l); } - public Atom(Literal l, Unifier u) { + public Atom(Literal l, Unifier u) { this((Atom)l.getNS().capply(u), l); } public Atom(Atom namespace, Literal l) { this.functor = l.getFunctor(); - this.ns = namespace; + if (namespace.functor.equals("default")) // in case namespace is an ordinary Atom with functor "default", we need to replace by the Default NS + this.ns = DefaultNS; + else + this.ns = namespace; predicateIndicatorCache = l.predicateIndicatorCache; hashCodeCache = l.hashCodeCache; srcInfo = l.srcInfo; @@ -83,6 +86,11 @@ public Term clone() { return this; // since this object is immutable } + + @Override + public Literal cloneNS(Atom newnamespace) { + return new Atom(newnamespace, this); + } @Override public boolean isAtom() { @@ -144,10 +152,6 @@ @Override protected int calcHashCode() { - if (getNS() == null) { - System.out.println("*** "+this); - return 0; - } return getFunctor().hashCode() + getNS().hashCode(); } @@ -163,7 +167,7 @@ public Element getAsDOM(Document document) { Element u = (Element) document.createElement("structure"); u.setAttribute("functor",getFunctor()); - u.setAttribute("name-space", getNS().toString()); + //u.setAttribute("name-space", getNS().toString()); return u; } } Modified: trunk/src/jason/asSyntax/Literal.java =================================================================== --- trunk/src/jason/asSyntax/Literal.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/Literal.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -94,6 +94,9 @@ public Literal copy() { return (Literal)clone(); // should call the clone, that is overridden in subclasses } + + /** clone in another namespace */ + public abstract Literal cloneNS(Atom newnamespace); /** returns the functor of this literal */ public abstract String getFunctor(); @@ -109,7 +112,7 @@ /** returns name space :: functor symbol / arity */ public PredicateIndicator getPredicateIndicator() { if (predicateIndicatorCache == null) { - predicateIndicatorCache = new PredicateIndicator(getNS(), getFunctor(), getArity()); + predicateIndicatorCache = new PredicateIndicator( getFunctor(), getArity()); } return predicateIndicatorCache; } @@ -566,7 +569,7 @@ private static final class DefaultNameSpace extends Atom { public DefaultNameSpace() { - super("default"); + super(null, "default"); } protected int calcHashCode() { return getFunctor().hashCode(); Modified: trunk/src/jason/asSyntax/LiteralImpl.java =================================================================== --- trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -146,6 +146,10 @@ return new LiteralImpl(this,u); } + public Literal cloneNS(Atom newNameSpace) { + return new LiteralImpl(newNameSpace, !negated(), this); + } + @Override protected int calcHashCode() { int result = super.calcHashCode(); Modified: trunk/src/jason/asSyntax/Pred.java =================================================================== --- trunk/src/jason/asSyntax/Pred.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/Pred.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -49,9 +49,6 @@ public Pred(String functor) { super(functor); } - public Pred(Atom namespace, String functor) { - super(namespace, functor); - } public Pred(Literal l) { this(l.getNS(), l); @@ -602,6 +599,11 @@ return new Pred(this); } + @Override + public Literal cloneNS(Atom newnamespace) { + return new Pred(newnamespace, this); + } + public String toStringAsTerm() { return super.toString(); } Modified: trunk/src/jason/asSyntax/PredicateIndicator.java =================================================================== --- trunk/src/jason/asSyntax/PredicateIndicator.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/PredicateIndicator.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -9,8 +9,6 @@ */ public final class PredicateIndicator implements Comparable<PredicateIndicator>, Serializable { - - private final Atom ns; // name space private final String functor; private final int arity; private final int hash; @@ -18,26 +16,15 @@ public PredicateIndicator(String functor, int arity) { this.functor = functor; this.arity = arity; - this.ns = Literal.DefaultNS; hash = calcHash(); } - public PredicateIndicator(Atom namespace, String functor, int arity) { - this.functor = functor; - this.arity = arity; - this.ns = namespace; - hash = calcHash(); - } + public PredicateIndicator(String prefix, PredicateIndicator pi) { this.functor = prefix + pi.functor; this.arity = pi.arity; - this.ns = Literal.DefaultNS; hash = calcHash(); } - public Atom getNS() { - return ns; - } - public String getFunctor() { return functor; } @@ -51,7 +38,7 @@ if (o == this) return true; if (o != null && o instanceof PredicateIndicator && o.hashCode() == this.hashCode()) { final PredicateIndicator pi = (PredicateIndicator)o; - return arity == pi.arity && functor.equals(pi.functor) && ns.equals(pi.getNS()); + return arity == pi.arity && functor.equals(pi.functor); } return false; } @@ -63,12 +50,9 @@ @Override public int compareTo(PredicateIndicator pi) { - int c = this.ns.compareTo(pi.ns); + int c = this.functor.compareTo(pi.functor); if (c != 0) return c; - c = this.functor.compareTo(pi.functor); - if (c != 0) return c; - if (pi.arity > this.arity) return -1; if (this.arity > pi.arity) return 1; return 0; @@ -77,14 +61,10 @@ private int calcHash() { int t = 31 * arity; if (functor != null) t = 31 * t + functor.hashCode(); - if (ns != Literal.DefaultNS) t = t + 71 * ns.hashCode(); return t; } public String toString() { - if (ns == Literal.DefaultNS) - return functor + "/" + arity; - else - return ns + "::" + functor + "/" + arity; + return functor + "/" + arity; } } Modified: trunk/src/jason/asSyntax/Structure.java =================================================================== --- trunk/src/jason/asSyntax/Structure.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/Structure.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -63,12 +63,6 @@ this.terms = new ArrayList<Term>(5); } - public Structure(Atom ns, String functor) { - //this.functor = (functor == null ? null : functor.intern()); // it does not improve performance in test i did! - super(ns, functor); - this.terms = new ArrayList<Term>(5); - } - public Structure(Literal l) { this(l.getNS(), l); } @@ -225,6 +219,11 @@ } @Override + public Literal cloneNS(Atom newnamespace) { + return new Structure(newnamespace, this); + } + + @Override public void addTerm(Term t) { if (t == null) return; terms.add(t); Modified: trunk/src/jason/asSyntax/UnnamedVar.java =================================================================== --- trunk/src/jason/asSyntax/UnnamedVar.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/UnnamedVar.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -38,9 +38,17 @@ public int myId; public UnnamedVar() { - this(varCont.incrementAndGet()); + this(Literal.DefaultNS, varCont.incrementAndGet()); } + public UnnamedVar(Atom ns) { + this(ns, varCont.incrementAndGet()); + } + public UnnamedVar(Atom ns, int id) { + super(ns, "_" + id); + myId = id; + } + public UnnamedVar(int id) { super("_" + id); myId = id; @@ -51,20 +59,26 @@ private UnnamedVar(String name) { super(name); } + private UnnamedVar(Atom ns, String name) { + super(ns, name); + } public static UnnamedVar create(String name) { + return create(Literal.DefaultNS, name); + } + public static UnnamedVar create(Atom ns, String name) { if (name.length() == 1) { // the case of "_" - return new UnnamedVar(); + return new UnnamedVar(ns); } else { int id = varCont.incrementAndGet(); - UnnamedVar v = new UnnamedVar("_"+id+name); + UnnamedVar v = new UnnamedVar(ns, "_"+id+name); v.myId = id; return v; } } public Term clone() { - UnnamedVar newv = new UnnamedVar(getFunctor()); + UnnamedVar newv = new UnnamedVar(getNS(), getFunctor()); newv.myId = this.myId; newv.hashCodeCache = this.hashCodeCache; if (hasAnnot()) @@ -73,6 +87,16 @@ } @Override + public Literal cloneNS(Atom newNameSpace) { + UnnamedVar newv = new UnnamedVar(newNameSpace, getFunctor()); + newv.myId = this.myId; + newv.hashCodeCache = this.hashCodeCache; + if (hasAnnot()) + newv.addAnnots(this.getAnnots().cloneLT()); + return newv; + } + + @Override public boolean equals(Object t) { if (t == null) return false; if (t == this) return true; Modified: trunk/src/jason/asSyntax/VarTerm.java =================================================================== --- trunk/src/jason/asSyntax/VarTerm.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/VarTerm.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -66,15 +66,24 @@ e.printStackTrace(); } } - public VarTerm(boolean negated, String s) { - super(negated, s); + public VarTerm(boolean negated, String functor) { + super(negated, functor); } + + public VarTerm(Atom namespace, String functor) { + super(namespace, LPos, new Atom(functor)); // TODO: provide proper constructor + //System.out.println("****"+v+" "+this); + } + public VarTerm(Atom namespace, Literal v) { + super(namespace, !v.negated(), v); + } + /** @deprecated prefer ASSyntax.parseVar(...) */ public static VarTerm parseVar(String sVar) { as2j parser = new as2j(new StringReader(sVar)); try { - return parser.var(); + return parser.var(Literal.DefaultNS); } catch (Exception e) { logger.log(Level.SEVERE, "Error parsing var " + sVar, e); return null; @@ -109,6 +118,12 @@ } vl = vl.capply(u); // should clone here, since there is no cloning in unify + + if (getNS() != Literal.DefaultNS && vl.isLiteral()) { + // use var ns for the value ns + vl = ((Literal)vl).cloneNS(getNS()); + } + // decide whether to use var annots in apply // X = p[a] // !X[b] @@ -129,14 +144,20 @@ public Term clone() { // do not call constructor with term parameter! - VarTerm t = new VarTerm(super.getFunctor()); - t.setNegated(!negated()); - t.srcInfo = this.srcInfo; - t.hashCodeCache = this.hashCodeCache; - if (hasAnnot()) - t.setAnnots(getAnnots().cloneLT()); + //VarTerm t = new VarTerm(super.getFunctor()); + //t.setNegated(!negated()); + VarTerm t = new VarTerm(this.getNS(), this); + //t.srcInfo = this.srcInfo; + //t.hashCodeCache = this.hashCodeCache; + //if (hasAnnot()) + // t.setAnnots(getAnnots().cloneLT()); return t; } + + @Override + public Literal cloneNS(Atom newNameSpace) { + return new VarTerm( newNameSpace, this); + } /* public PlanBody clonePB() { @@ -253,9 +274,11 @@ */ // is t also a var? (its value must also be null) if (t instanceof VarTerm) { - //final VarTerm tAsVT = (VarTerm) t; + final VarTerm tAsVT = (VarTerm) t; //if (tAsVT.getValue() == null) { - return negated() == ((VarTerm)t).negated() && getFunctor().equals(((VarTerm)t).getFunctor()); + return negated() == tAsVT.negated() && getFunctor().equals(tAsVT.getFunctor()); // && getNS().equals(tAsVT.getNS()); + // DO NOT consider ns in equals of hashcode! + //} } //} @@ -541,16 +564,14 @@ @Override public String toString() { - //if (value == null) { - String s = getFunctor(); - if (hasAnnot()) - s += getAnnots(); - if (negated()) - s = "~" + s; - return s; - //} else { - // return value.toString(); - //} + String s = getFunctor(); + if (hasAnnot()) + s += getAnnots(); + if (negated()) + s = "~" + s; + if (getNS() != Literal.DefaultNS) + s = getNS() + "::" + s; + return s; } // ---------- Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-07 17:16:38 UTC (rev 1860) @@ -591,28 +591,32 @@ /* Literal */ Literal literal() : - { Pred F = null; Pred V; Token k; boolean type = Literal.LPos; Atom NS = Literal.DefaultNS; Token tns; } + { Pred F = null; Pred V; Token k; boolean type = Literal.LPos; + Atom NS = Literal.DefaultNS; Token tns = null; } { - ( ( [ <TK_NEG> { type = Literal.LNeg; } - ] - + ( ( + // namespace [ LOOKAHEAD(10) - tns = <ATOM> "::" { if (!tns.image.equals("default")) + (tns = <ATOM> { if (!tns.image.equals("default")) NS = new Atom(tns.image); - } + } + | + NS = var(NS) + ) + "::" ] + + [ <TK_NEG> { type = Literal.LNeg; } + ] + (F=pred() - | V = var() - [ - "::" F = pred() - ] - { VarTerm vt = (VarTerm)V; + | V = var(NS) { VarTerm vt = (VarTerm)V; vt.setNegated(type); - if (F == null) { // no namespace + //if (NS == Literal.DefaultNS) { return vt; - } else { - NS = vt; - } + //} else { + // return new VarTerm(NS, vt); + //} } ) ) @@ -879,10 +883,10 @@ } -VarTerm var(): { Token K; VarTerm v; ListTerm lt; } +VarTerm var(Atom ns): { Token K; VarTerm v; ListTerm lt; } { - ( K = <VAR> { v = new VarTerm(K.image); v.setSrcInfo(new SourceInfo(asSource, K.beginLine));} - | K = <UNNAMEDVAR> { v = UnnamedVar.create(K.image); } + ( K = <VAR> { v = new VarTerm(ns, K.image); v.setSrcInfo(new SourceInfo(asSource, K.beginLine));} + | K = <UNNAMEDVAR> { v = UnnamedVar.create(ns, K.image); } ) [ lt = list() { v.setAnnots(lt); } Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -883,7 +883,8 @@ /* Literal */ final public Literal literal() throws ParseException { - Pred F = null; Pred V; Token k; boolean type = Literal.LPos; Atom NS = Literal.DefaultNS; Token tns; + Pred F = null; Pred V; Token k; boolean type = Literal.LPos; + Atom NS = Literal.DefaultNS; Token tns = null; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: case TK_NEG: @@ -891,23 +892,35 @@ case TK_END: case ATOM: case UNNAMEDVAR: + if (jj_2_4(10)) { + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case ATOM: + tns = jj_consume_token(ATOM); + if (!tns.image.equals("default")) + NS = new Atom(tns.image); + break; + case VAR: + case UNNAMEDVAR: + NS = var(NS); + break; + default: + jj_la1[32] = jj_gen; + jj_consume_token(-1); + throw new ParseException(); + } + jj_consume_token(47); + } else { + ; + } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TK_NEG: jj_consume_token(TK_NEG); type = Literal.LNeg; break; default: - jj_la1[32] = jj_gen; + jj_la1[33] = jj_gen; ; } - if (jj_2_4(10)) { - tns = jj_consume_token(ATOM); - jj_consume_token(47); - if (!tns.image.equals("default")) - NS = new Atom(tns.image); - } else { - ; - } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TK_BEGIN: case TK_END: @@ -916,23 +929,15 @@ break; case VAR: case UNNAMEDVAR: - V = var(); - switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 47: - jj_consume_token(47); - F = pred(); - break; - default: - jj_la1[33] = jj_gen; - ; - } + V = var(NS); VarTerm vt = (VarTerm)V; vt.setNegated(type); - if (F == null) { // no namespace + //if (NS == Literal.DefaultNS) { {if (true) return vt;} - } else { - NS = vt; - } + //} else { + // return new VarTerm(NS, vt); + //} + break; default: jj_la1[34] = jj_gen; @@ -1555,16 +1560,16 @@ throw new Error("Missing return statement in function"); } - final public VarTerm var() throws ParseException { - Token K; VarTerm v; ListTerm lt; + final public VarTerm var(Atom ns) throws ParseException { + Token K; VarTerm v; ListTerm lt; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: K = jj_consume_token(VAR); - v = new VarTerm(K.image); v.setSrcInfo(new SourceInfo(asSource, K.beginLine)); + v = new VarTerm(ns, K.image); v.setSrcInfo(new SourceInfo(asSource, K.beginLine)); break; case UNNAMEDVAR: K = jj_consume_token(UNNAMEDVAR); - v = UnnamedVar.create(K.image); + v = UnnamedVar.create(ns, K.image); break; default: jj_la1[59] = jj_gen; @@ -1621,25 +1626,18 @@ finally { jj_save(3, xla); } } - final private boolean jj_3R_118() { - if (jj_3R_107()) return true; + final private boolean jj_3R_119() { + if (jj_3R_108()) return true; return false; } - final private boolean jj_3R_117() { + final private boolean jj_3R_118() { if (jj_scan_token(41)) return true; return false; } - final private boolean jj_3R_65() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_71()) { - jj_scanpos = xsp; - if (jj_3R_72()) return true; - } - xsp = jj_scanpos; - if (jj_3R_73()) jj_scanpos = xsp; + final private boolean jj_3R_117() { + if (jj_3R_124()) return true; return false; } @@ -1658,42 +1656,43 @@ return false; } - final private boolean jj_3R_113() { - if (jj_3R_120()) return true; - return false; - } - - final private boolean jj_3R_107() { + final private boolean jj_3R_108() { Token xsp; xsp = jj_scanpos; - if (jj_3R_113()) { - jj_scanpos = xsp; if (jj_3R_114()) { jj_scanpos = xsp; if (jj_3R_115()) { jj_scanpos = xsp; - if (jj_3R_116()) return true; + if (jj_3R_116()) { + jj_scanpos = xsp; + if (jj_3R_117()) return true; } } } xsp = jj_scanpos; - if (jj_3R_117()) jj_scanpos = xsp; + if (jj_3R_118()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_118()) jj_scanpos = xsp; + if (jj_3R_119()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_100() { - if (jj_3R_107()) return true; + final private boolean jj_3R_101() { + if (jj_3R_108()) return true; return false; } - final private boolean jj_3R_57() { - if (jj_3R_65()) return true; + final private boolean jj_3R_61() { + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_45() { + 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_48() { if (jj_scan_token(40)) return true; return false; } @@ -1705,33 +1704,37 @@ return false; } - final private boolean jj_3R_44() { - if (jj_scan_token(34)) return true; + final private boolean jj_3R_52() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_60()) { + jj_scanpos = xsp; + if (jj_3R_61()) return true; + } return false; } - final private boolean jj_3R_32() { - if (jj_scan_token(41)) return true; + final private boolean jj_3R_47() { + if (jj_scan_token(34)) return true; return false; } - final private boolean jj_3R_56() { - if (jj_scan_token(TK_NOT)) return true; - if (jj_3R_49()) return true; + final private boolean jj_3R_34() { + if (jj_scan_token(41)) return true; return false; } - final private boolean jj_3R_31() { + final private boolean jj_3R_33() { if (jj_scan_token(36)) return true; return false; } - final private boolean jj_3R_30() { + final private boolean jj_3R_32() { Token xsp; xsp = jj_scanpos; - if (jj_3R_44()) { + if (jj_3R_47()) { jj_scanpos = xsp; - if (jj_3R_45()) return true; + if (jj_3R_48()) return true; } return false; } @@ -1745,29 +1748,33 @@ final private boolean jj_3R_18() { Token xsp; xsp = jj_scanpos; - if (jj_3R_31()) { + if (jj_3R_33()) { jj_scanpos = xsp; - if (jj_3R_32()) return true; + if (jj_3R_34()) return true; } return false; } - final private boolean jj_3R_49() { + final private boolean jj_3R_53() { + if (jj_scan_token(52)) return true; + if (jj_3R_38()) return true; + return false; + } + + final private boolean jj_3R_38() { + if (jj_3R_52()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_56()) { - jj_scanpos = xsp; - if (jj_3R_57()) return true; - } + if (jj_3R_53()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_29() { + final private boolean jj_3R_31() { if (jj_scan_token(39)) return true; return false; } - final private boolean jj_3R_28() { + final private boolean jj_3R_30() { if (jj_scan_token(38)) return true; return false; } @@ -1778,14 +1785,14 @@ return false; } - final private boolean jj_3R_27() { + final private boolean jj_3R_29() { if (jj_scan_token(37)) return true; return false; } - final private boolean jj_3R_50() { - if (jj_scan_token(52)) return true; - if (jj_3R_36()) return true; + final private boolean jj_3R_39() { + if (jj_scan_token(50)) return true; + if (jj_3R_20()) return true; return false; } @@ -1801,31 +1808,23 @@ return false; } - final private boolean jj_3R_36() { - if (jj_3R_49()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_50()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3R_16() { Token xsp; xsp = jj_scanpos; - if (jj_3R_27()) { + if (jj_3R_29()) { jj_scanpos = xsp; - if (jj_3R_28()) { + if (jj_3R_30()) { jj_scanpos = xsp; - if (jj_3R_29()) return true; + if (jj_3R_31()) return true; } } xsp = jj_scanpos; - if (jj_3R_30()) jj_scanpos = xsp; + if (jj_3R_32()) jj_scanpos = xsp; if (jj_3R_19()) return true; return false; } - final private boolean jj_3R_66() { + final private boolean jj_3R_67() { if (jj_scan_token(30)) return true; Token xsp; xsp = jj_scanpos; @@ -1833,325 +1832,330 @@ xsp = jj_scanpos; if (jj_3_3()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_100()) jj_scanpos = xsp; + if (jj_3R_101()) jj_scanpos = xsp; if (jj_scan_token(31)) return true; return false; } - final private boolean jj_3R_37() { - if (jj_scan_token(50)) return true; - if (jj_3R_20()) return true; - return false; - } - final private boolean jj_3R_20() { - if (jj_3R_36()) return true; + if (jj_3R_38()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_37()) jj_scanpos = xsp; + if (jj_3R_39()) jj_scanpos = xsp; return false; } + final private boolean jj_3R_71() { + if (jj_3R_67()) return true; + return false; + } + final private boolean jj_3R_70() { - if (jj_3R_66()) return true; + if (jj_3R_78()) return true; return false; } final private boolean jj_3R_69() { - if (jj_3R_75()) return true; + if (jj_3R_77()) return true; return false; } final private boolean jj_3R_68() { - if (jj_3R_74()) return true; + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_67() { - if (jj_3R_39()) return true; - return false; - } - - final private boolean jj_3R_61() { + final private boolean jj_3R_65() { Token xsp; xsp = jj_scanpos; - if (jj_3R_67()) { - jj_scanpos = xsp; if (jj_3R_68()) { jj_scanpos = xsp; if (jj_3R_69()) { jj_scanpos = xsp; - if (jj_3R_70()) return true; + if (jj_3R_70()) { + jj_scanpos = xsp; + if (jj_3R_71()) return true; } } } return false; } - final private boolean jj_3R_96() { - if (jj_3R_39()) return true; + final private boolean jj_3R_94() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_95() { + final private boolean jj_3R_93() { if (jj_scan_token(UNNAMEDVAR)) return true; return false; } - final private boolean jj_3R_53() { - if (jj_scan_token(TK_LABEL_AT)) return true; + final private boolean jj_3R_92() { + if (jj_scan_token(VAR)) return true; return false; } - final private boolean jj_3R_94() { - if (jj_scan_token(VAR)) return true; + final private boolean jj_3R_78() { + if (jj_scan_token(STRING)) return true; return false; } - final private boolean jj_3R_75() { - if (jj_scan_token(STRING)) return true; + final private boolean jj_3R_59() { + if (jj_scan_token(TK_LABEL_AT)) return true; return false; } - final private boolean jj_3R_43() { + final private boolean jj_3R_46() { Token xsp; xsp = jj_scanpos; - if (jj_3R_53()) jj_scanpos = xsp; + if (jj_3R_59()) jj_scanpos = xsp; if (jj_3R_16()) return true; return false; } - final private boolean jj_3R_64() { - if (jj_3R_39()) return true; + final private boolean jj_3R_56() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_91() { + final private boolean jj_3R_76() { if (jj_scan_token(50)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_94()) { + if (jj_3R_92()) { jj_scanpos = xsp; - if (jj_3R_95()) { + if (jj_3R_93()) { jj_scanpos = xsp; - if (jj_3R_96()) return true; + if (jj_3R_94()) return true; } } return false; } - final private boolean jj_3R_90() { + final private boolean jj_3R_75() { if (jj_scan_token(48)) return true; - if (jj_3R_61()) return true; + if (jj_3R_65()) return true; return false; } - final private boolean jj_3R_63() { + final private boolean jj_3R_55() { if (jj_scan_token(UNNAMEDVAR)) return true; return false; } - final private boolean jj_3R_62() { + final private boolean jj_3R_54() { if (jj_scan_token(VAR)) return true; return false; } - final private boolean jj_3R_52() { - if (jj_3R_61()) return true; + final private boolean jj_3R_58() { + if (jj_3R_65()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_90()) { jj_scanpos = xsp; break; } + if (jj_3R_75()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_91()) jj_scanpos = xsp; + if (jj_3R_76()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_54() { + final private boolean jj_3R_40() { Token xsp; xsp = jj_scanpos; - if (jj_3R_62()) { + if (jj_3R_54()) { jj_scanpos = xsp; - if (jj_3R_63()) return true; + if (jj_3R_55()) return true; } xsp = jj_scanpos; - if (jj_3R_64()) jj_scanpos = xsp; + if (jj_3R_56()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_39() { + final private boolean jj_3R_42() { if (jj_scan_token(49)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_52()) jj_scanpos = xsp; + if (jj_3R_58()) jj_scanpos = xsp; if (jj_scan_token(51)) return true; return false; } - final private boolean jj_3R_42() { - if (jj_scan_token(34)) return true; + final private boolean jj_3R_64() { + if (jj_3R_20()) return true; return false; } - final private boolean jj_3R_60() { - if (jj_3R_20()) return true; + final private boolean jj_3R_63() { + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_59() { - if (jj_3R_66()) return true; + final private boolean jj_3R_62() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_58() { - if (jj_3R_39()) return true; + final private boolean jj_3R_45() { + if (jj_scan_token(34)) return true; return false; } - final private boolean jj_3R_51() { + final private boolean jj_3R_57() { Token xsp; xsp = jj_scanpos; - if (jj_3R_58()) { + if (jj_3R_62()) { jj_scanpos = xsp; - if (jj_3R_59()) { + if (jj_3R_63()) { jj_scanpos = xsp; - if (jj_3R_60()) return true; + if (jj_3R_64()) return true; } } return false; } - final private boolean jj_3R_127() { + final private boolean jj_3R_120() { + if (jj_3R_19()) return true; + return false; + } + + final private boolean jj_3R_128() { if (jj_3R_20()) return true; return false; } - final private boolean jj_3R_135() { + final private boolean jj_3R_136() { if (jj_scan_token(37)) return true; return false; } - final private boolean jj_3R_126() { - if (jj_3R_66()) return true; + final private boolean jj_3R_127() { + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_119() { - if (jj_3R_19()) return true; + final private boolean jj_3R_79() { + if (jj_scan_token(48)) return true; + if (jj_3R_57()) return true; return false; } - final private boolean jj_3R_138() { + final private boolean jj_3R_139() { if (jj_scan_token(46)) return true; return false; } - final private boolean jj_3R_137() { + final private boolean jj_3R_113() { + if (jj_3R_120()) return true; + return false; + } + + final private boolean jj_3R_138() { if (jj_scan_token(45)) return true; return false; } - final private boolean jj_3R_136() { + final private boolean jj_3R_112() { + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; + return false; + } + + final private boolean jj_3R_137() { if (jj_scan_token(37)) return true; return false; } - final private boolean jj_3R_133() { + final private boolean jj_3R_134() { if (jj_scan_token(38)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_135()) jj_scanpos = xsp; + if (jj_3R_136()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_76() { - if (jj_scan_token(48)) return true; - if (jj_3R_51()) return true; + final private boolean jj_3R_41() { + if (jj_3R_57()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_79()) { jj_scanpos = xsp; break; } + } return false; } - final private boolean jj_3R_134() { + final private boolean jj_3R_135() { Token xsp; xsp = jj_scanpos; - if (jj_3R_136()) { - jj_scanpos = xsp; if (jj_3R_137()) { jj_scanpos = xsp; - if (jj_3R_138()) return true; + if (jj_3R_138()) { + jj_scanpos = xsp; + if (jj_3R_139()) return true; } } return false; } - final private boolean jj_3R_112() { - if (jj_3R_119()) return true; - return false; - } - final private boolean jj_3R_111() { - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; + if (jj_scan_token(37)) return true; + if (jj_3R_102()) return true; return false; } - final private boolean jj_3R_38() { - if (jj_3R_51()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_76()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_132() { + final private boolean jj_3R_133() { if (jj_scan_token(37)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_134()) jj_scanpos = xsp; + if (jj_3R_135()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_131() { - if (jj_scan_token(40)) return true; + final private boolean jj_3R_24() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_110() { - if (jj_scan_token(37)) return true; - if (jj_3R_101()) return true; + final private boolean jj_3R_132() { + if (jj_scan_token(40)) return true; return false; } - final private boolean jj_3R_41() { + final private boolean jj_3R_44() { if (jj_3R_19()) return true; return false; } - final private boolean jj_3R_130() { + final private boolean jj_3R_131() { if (jj_scan_token(44)) return true; return false; } - final private boolean jj_3R_129() { + final private boolean jj_3R_110() { + if (jj_scan_token(38)) return true; + if (jj_3R_102()) return true; + return false; + } + + final private boolean jj_3R_130() { if (jj_scan_token(34)) return true; return false; } - final private boolean jj_3R_125() { + final private boolean jj_3R_126() { Token xsp; xsp = jj_scanpos; - if (jj_3R_129()) { - jj_scanpos = xsp; if (jj_3R_130()) { jj_scanpos = xsp; if (jj_3R_131()) { jj_scanpos = xsp; if (jj_3R_132()) { jj_scanpos = xsp; - if (jj_3R_133()) return true; + if (jj_3R_133()) { + jj_scanpos = xsp; + if (jj_3R_134()) return true; } } } @@ -2159,53 +2163,42 @@ return false; } - final private boolean jj_3R_22() { - if (jj_3R_39()) return true; - return false; - } - - final private boolean jj_3R_123() { + final private boolean jj_3R_124() { Token xsp; xsp = jj_scanpos; - if (jj_3R_125()) jj_scanpos = xsp; + if (jj_3R_126()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_126()) { + if (jj_3R_127()) { jj_scanpos = xsp; - if (jj_3R_127()) return true; + if (jj_3R_128()) return true; } return false; } final private boolean jj_3R_109() { - if (jj_scan_token(38)) return true; - if (jj_3R_101()) return true; - return false; - } - - final private boolean jj_3R_108() { if (jj_scan_token(NUMBER)) return true; return false; } - final private boolean jj_3R_21() { + final private boolean jj_3R_23() { if (jj_scan_token(42)) return true; - if (jj_3R_38()) return true; + if (jj_3R_41()) return true; if (jj_scan_token(43)) return true; return false; } - final private boolean jj_3R_101() { + final private boolean jj_3R_102() { Token xsp; xsp = jj_scanpos; - if (jj_3R_108()) { - jj_scanpos = xsp; if (jj_3R_109()) { jj_scanpos = xsp; if (jj_3R_110()) { jj_scanpos = xsp; if (jj_3R_111()) { jj_scanpos = xsp; - if (jj_3R_112()) return true; + if (jj_3R_112()) { + jj_scanpos = xsp; + if (jj_3R_113()) return true; } } } @@ -2224,35 +2217,35 @@ } } xsp = jj_scanpos; - if (jj_3R_21()) jj_scanpos = xsp; + if (jj_3R_23()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_22()) jj_scanpos = xsp; + if (jj_3R_24()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_102() { + final private boolean jj_3R_103() { if (jj_scan_token(61)) return true; - if (jj_3R_93()) return true; + if (jj_3R_97()) return true; return false; } - final private boolean jj_3R_122() { + final private boolean jj_3R_97() { + if (jj_3R_102()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_103()) jj_scanpos = xsp; + return false; + } + + final private boolean jj_3R_123() { if (jj_scan_token(TK_WHILE)) return true; if (jj_scan_token(42)) return true; if (jj_3R_20()) return true; if (jj_scan_token(43)) return true; - if (jj_3R_66()) return true; + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_93() { - if (jj_3R_101()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_102()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3_1() { if (jj_scan_token(TK_BEGIN)) return true; if (jj_3R_13()) return true; @@ -2261,148 +2254,154 @@ return false; } - final private boolean jj_3R_40() { + final private boolean jj_3R_43() { if (jj_scan_token(30)) return true; return false; } - final private boolean jj_3R_106() { + final private boolean jj_3R_107() { if (jj_scan_token(TK_INTMOD)) return true; return false; } - final private boolean jj_3R_105() { + final private boolean jj_3R_106() { if (jj_scan_token(TK_INTDIV)) return true; return false; } - final private boolean jj_3R_104() { + final private boolean jj_3R_105() { if (jj_scan_token(60)) return true; return false; } - final private boolean jj_3R_35() { + final private boolean jj_3R_37() { if (jj_scan_token(TK_FALSE)) return true; return false; } - final private boolean jj_3R_103() { + final private boolean jj_3R_104() { if (jj_scan_token(59)) return true; return false; } - final private boolean jj_3R_34() { + final private boolean jj_3R_36() { if (jj_scan_token(TK_TRUE)) return true; return false; } - final private boolean jj_3R_97() { + final private boolean jj_3R_98() { Token xsp; xsp = jj_scanpos; - if (jj_3R_103()) { - jj_scanpos = xsp; if (jj_3R_104()) { jj_scanpos = xsp; if (jj_3R_105()) { jj_scanpos = xsp; - if (jj_3R_106()) return true; + if (jj_3R_106()) { + jj_scanpos = xsp; + if (jj_3R_107()) return true; } } } - if (jj_3R_93()) return true; + if (jj_3R_97()) return true; return false; } - final private boolean jj_3R_121() { - if (jj_scan_token(TK_FOR)) return true; - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; - if (jj_3R_66()) return true; - return false; - } - - final private boolean jj_3R_89() { - if (jj_3R_93()) return true; + final private boolean jj_3R_95() { + if (jj_3R_97()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_97()) { jj_scanpos = xsp; break; } + if (jj_3R_98()) { jj_scanpos = xsp; break; } } return false; } - final private boolean jj_3R_55() { - if (jj_scan_token(47)) return true; - if (jj_3R_13()) return true; + final private boolean jj_3R_51() { + if (jj_3R_40()) return true; return false; } - final private boolean jj_3R_48() { - if (jj_3R_54()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_55()) jj_scanpos = xsp; + final private boolean jj_3R_122() { + if (jj_scan_token(TK_FOR)) return true; + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_47() { + final private boolean jj_3R_50() { if (jj_3R_13()) return true; return false; } - final private boolean jj_3R_99() { + final private boolean jj_3R_49() { + if (jj_scan_token(TK_NEG)) return true; + return false; + } + + final private boolean jj_3R_100() { if (jj_scan_token(38)) return true; return false; } - final private boolean jj_3R_98() { + final private boolean jj_3R_99() { if (jj_scan_token(37)) return true; return false; } - final private boolean jj_3R_92() { + final private boolean jj_3R_22() { + if (jj_3R_40()) return true; + return false; + } + + final private boolean jj_3R_96() { Token xsp; xsp = jj_scanpos; - if (jj_3R_98()) { + if (jj_3R_99()) { jj_scanpos = xsp; - if (jj_3R_99()) return true; + if (jj_3R_100()) return true; } - if (jj_3R_89()) return true; + if (jj_3R_95()) return true; return false; } - final private boolean jj_3_4() { + final private boolean jj_3R_21() { if (jj_scan_token(ATOM)) return true; - if (jj_scan_token(47)) return true; return false; } - final private boolean jj_3R_46() { - if (jj_scan_token(TK_NEG)) return true; + final private boolean jj_3R_77() { + if (jj_3R_95()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_96()) { jj_scanpos = xsp; break; } + } return false; } - final private boolean jj_3R_74() { - if (jj_3R_89()) return true; + final private boolean jj_3_4() { Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_92()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_21()) { + jj_scanpos = xsp; + if (jj_3R_22()) return true; } + if (jj_scan_token(47)) return true; return false; } - final private boolean jj_3R_33() { + final private boolean jj_3R_35() { Token xsp; xsp = jj_scanpos; - if (jj_3R_46()) jj_scanpos = xsp; - xsp = jj_scanpos; if (jj_3_4()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_47()) { + if (jj_3R_49()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_50()) { jj_scanpos = xsp; - if (jj_3R_48()) return true; + if (jj_3R_51()) return true; } return false; } @@ -2410,130 +2409,119 @@ final private boolean jj_3R_19() { Token xsp; xsp = jj_scanpos; - if (jj_3R_33()) { + if (jj_3R_35()) { jj_scanpos = xsp; - if (jj_3R_34()) { + if (jj_3R_36()) { jj_scanpos = xsp; - if (jj_3R_35()) return true; + if (jj_3R_37()) return true; } } return false; } - final private boolean jj_3R_128() { - if (jj_scan_token(TK_ELSE)) return true; + final private boolean jj_3R_91() { + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_88() { - if (jj_3R_66()) return true; + final private boolean jj_3R_90() { + if (jj_3R_42()) return true; return false; } - final private boolean jj_3R_87() { - if (jj_3R_39()) return true; + final private boolean jj_3R_89() { + if (jj_3R_78()) return true; return false; } - final private boolean jj_3R_124() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_128()) jj_scanpos = xsp; - if (jj_3R_66()) return true; + final private boolean jj_3R_88() { + if (jj_3R_77()) return true; return false; } - final private boolean jj_3R_86() { - if (jj_3R_75()) return true; + final private boolean jj_3R_129() { + if (jj_scan_token(TK_ELSE)) return true; return false; } - final private boolean jj_3R_85() { - if (jj_3R_74()) return true; + final private boolean jj_3R_125() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) jj_scanpos = xsp; + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_26() { - if (jj_3R_43()) return true; + final private boolean jj_3R_28() { + if (jj_3R_46()) return true; return false; } - final private boolean jj_3R_84() { + final private boolean jj_3R_87() { if (jj_scan_token(58)) return true; return false; } - final private boolean jj_3R_25() { - if (jj_3R_42()) return true; + final private boolean jj_3R_86() { + if (jj_scan_token(57)) return true; return false; } - final private boolean jj_3R_120() { - if (jj_scan_token(TK_IF)) return true; - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; - if (jj_3R_66()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_124()) jj_scanpos = xsp; + final private boolean jj_3R_85() { + if (jj_scan_token(56)) return true; return false; } - final private boolean jj_3R_83() { - if (jj_scan_token(57)) return true; + final private boolean jj_3R_84() { + if (jj_scan_token(55)) return true; return false; } - final private boolean jj_3R_82() { - if (jj_scan_token(56)) return true; + final private boolean jj_3R_83() { + if (jj_scan_token(54)) return true; return false; } - final private boolean jj_3R_81() { - if (jj_scan_token(55)) return true; + final private boolean jj_3R_27() { + if (jj_3R_45()) return true; return false; } - final private boolean jj_3R_80() { - if (jj_scan_token(54)) return true; + final private boolean jj_3R_121() { + if (jj_scan_token(TK_IF)) return true; + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; + if (jj_3R_67()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_125()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_79() { + final private boolean jj_3R_82() { if (jj_scan_token(46)) return true; return false; } - final private boolean jj_3R_24() { - if (jj_3R_41()) return true; - return false; - } - - final private boolean jj_3R_78() { + final private boolean jj_3R_81() { if (jj_scan_token(53)) return true; return false; } - final private boolean jj_3R_77() { + final private boolean jj_3R_80() { if (jj_scan_token(45)) return true; return false; } - final private boolean jj_3R_23() { - if (jj_3R_40()) return true; + final private boolean jj_3R_26() { + if (jj_3R_44()) return true; return false; } - final private boolean jj_3R_73() { + final private boolean jj_3R_74() { Token xsp; xsp = jj_scanpos; - if (jj_3R_77()) { - jj_scanpos = xsp; - if (jj_3R_78()) { - jj_scanpos = xsp; - if (jj_3R_79()) { - jj_scanpos = xsp; if (jj_3R_80()) { jj_scanpos = xsp; if (jj_3R_81()) { @@ -2542,7 +2530,13 @@ jj_scanpos = xsp; if (jj_3R_83()) { jj_scanpos = xsp; - if (jj_3R_84()) return true; + if (jj_3R_84()) { + jj_scanpos = xsp; + if (jj_3R_85()) { + jj_scanpos = xsp; + if (jj_3R_86()) { + jj_scanpos = xsp; + if (jj_3R_87()) return true; } } } @@ -2551,51 +2545,68 @@ } } xsp = jj_scanpos; - if (jj_3R_85()) { + if (jj_3R_88()) { jj_scanpos = xsp; - if (jj_3R_86()) { + if (jj_3R_89()) { jj_scanpos = xsp; - if (jj_3R_87()) { + if (jj_3R_90()) { jj_scanpos = xsp; - if (jj_3R_88()) return true; + if (jj_3R_91()) return true; } } } return false; } + final private boolean jj_3R_25() { + if (jj_3R_43()) return true; + return false; + } + + final private boolean jj_3R_73() { + if (jj_3R_78()) return true; + return false; + } + + final private boolean jj_3R_72() { + if (jj_3R_77()) return true; + return false; + } + final private boolean jj_3R_14() { Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_23()) { jj_scanpos = xsp; break; } + if (jj_3R_25()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_24()) { jj_scanpos = xsp; break; } + if (jj_3R_26()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_25()) { jj_scanpos = xsp; break; } + if (jj_3R_27()) { jj_scanpos = xsp; break; } } while (true) { xsp = jj_scanpos; - if (jj_3R_26()) { jj_scanpos = xsp; break; } + if (jj_3R_28()) { jj_scanpos = xsp; break; } } if (jj_scan_token(0)) return true; return false; } - final private boolean jj_3R_72() { - if (jj_3R_75()) return true; + final private boolean jj_3R_66() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_72()) { + jj_scanpos = xsp; + if (jj_3R_73()) return true; + } + xsp = jj_scanpos; + if (jj_3R_74()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_71() { - if (jj_3R_74()) return true; - return false; - } - public as2jTokenManager token_source; SimpleCharStream jj_input_stream; public Token token, jj_nt; @@ -2613,10 +2624,10 @@ jj_la1_1(); } private static void jj_la1_0() { - jj_la1_0 = new int[] {0x40000000,0x180cb80,0x40000000,0x0,0x40000000,0x10000,0x180cb80,0x40000000,0x80c000,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x41facf80,0x0,0x41facf80,0x40000,0x40040000,0x0,0x0,0x0,0x0,0x0,0x41e0cf80,0x10000,0x0,0x0,0x0,0x41facf80,0x800,0x0,0x180c080,0x180cb80,0x80c000,0x0,0x0,0x0,0x41e0cf80,0x0,0x1000080,0x0,0x41e0cb80,0x41e0cb80,0x0,0x0,0x1e0cf80,0x1e0cb80,0x0,0x41e0cb80,0x0,0x0,0x0,0x3000,0x3000,0x0,0x1a0cb80,0x1000080,0x0,}; + jj_la1_0 = new int[] {0x40000000,0x180cb80,0x40000000,0x0,0x40000000,0x10000,0x180cb80,0x40000000,0x80c000,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x41facf80,0x0,0x41facf80,0x40000,0x40040000,0x0,0x0,0x0,0x0,0x0,0x41e0cf80,0x10000,0x0,0x0,0x0,0x41facf80,0x1800080,0x800,0x180c080,0x180cb80,0x80c000,0x0,0x0,0x0,0x41e0cf80,0x0,0x1000080,0x0,0x41e0cb80,0x41e0cb80,0x0,0x0,0x1e0cf80,0x1e0cb80,0x0,0x41e0cb80,0x0,0x0,0x0,0x3000,0x3000,0x0,0x1a0cb80,0x1000080,0x0,}; } private static void jj_la1_1() { - jj_la1_1 = new int[] {0x0,0x0,0x0,0x4,0x0,0xe0,0x0,0x0,0x0,0x1,0x0,0x8,0x10,0xe0,0x104,0x104,0x1564,0x200,0x1564,0x0,0x0,0x6020,0x6020,0x20,0x1164,0x1164,0x460,0x0,0x8,0x210,0x210,0x1564,0x0,0x8000,0x0,0x0,0x0,0x400,0x20000,0x10000,0x20460,0x10000,0x20000,0x40000,0x20460,0x20460,0x40000,0x100000,0x460,0x460,0x7e06000,0x20460,0x7e06000,0x60,0x60,0x18000000,0x18000000,0x20000000,0x460,0x0,0x20000,}; + jj_la1_1 = new int[] {0x0,0x0,0x0,0x4,0x0,0xe0,0x0,0x0,0x0,0x1,0x0,0x8,0x10,0xe0,0x104,0x104,0x1564,0x200,0x1564,0x0,0x0,0x6020,0x6020,0x20,0x1164,0x1164,0x460,0x0,0x8,0x210,0x210,0x1564,0x0,0x0,0x0,0x0,0x0,0x400,0x20000,0x10000,0x20460,0x10000,0x20000,0x40000,0x20460,0x20460,0x40000,0x100000,0x460,0x460,0x7e06000,0x20460,0x7e06000,0x60,0x60,0x18000000,0x18000000,0x20000000,0x460,0x0,0x20000,}; } final private JJCalls[] jj_2_rtns = new JJCalls[4]; private boolean jj_rescan = false; Modified: trunk/src/jason/bb/DefaultBeliefBase.java =================================================================== --- trunk/src/jason/bb/DefaultBeliefBase.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/jason/bb/DefaultBeliefBase.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -160,7 +160,7 @@ if (l.hasAnnot(TPercept)) { percepts.add(l); } - + if (l.getNS() != Literal.DefaultNS) nameSpaces.add(l.getNS()); @@ -284,11 +284,13 @@ return iterator(); } else { BelEntry entry = belsMap.get(l.getPredicateIndicator()); - if (entry != null) + if (entry != null) { //return Collections.unmodifiableList(entry.list).iterator(); + //System.out.println(l+ " ==> " + entry.list); return entry.list.iterator(); - else + } else { return null; + } } } Modified: trunk/src/test/NSTest.java =================================================================== --- trunk/src/test/NSTest.java 2015-12-03 23:17:22 UTC (rev 1859) +++ trunk/src/test/NSTest.java 2015-12-07 17:16:38 UTC (rev 1860) @@ -1,43 +1,11 @@ package test; -import static jason.asSyntax.ASSyntax.createNumber; -import static jason.asSyntax.ASSyntax.createStructure; -import static jason.asSyntax.ASSyntax.parseLiteral; -import static jason.asSyntax.ASSyntax.parseTerm; import jason.asSemantics.Unifier; import jason.asSyntax.ASSyntax; -import jason.asSyntax.Atom; -import jason.asSyntax.ListTerm; -import jason.asSyntax.ListTermImpl; import jason.asSyntax.Literal; -import jason.asSyntax.LiteralImpl; -import jason.asSyntax.NumberTermImpl; -import jason.asSyntax.ObjectTerm; -import jason.asSyntax.ObjectTermImpl; -import jason.asSyntax.Plan; -import jason.asSyntax.Pred; -import jason.asSyntax.PredicateIndicator; -import jason.asSyntax.StringTermImpl; -import jason.asSyntax.Structure; import jason.asSyntax.Term; -import jason.asSyntax.Trigger; -imp... [truncated message content] |
From: <jom...@us...> - 2015-12-03 23:17:24
|
Revision: 1859 http://sourceforge.net/p/jason/svn/1859 Author: jomifred Date: 2015-12-03 23:17:22 +0000 (Thu, 03 Dec 2015) Log Message: ----------- initial implementation of name spaces Modified Paths: -------------- trunk/applications/as-unit-test/src/jason/tests/TestAll.java trunk/src/jason/asSemantics/TransitionSystem.java trunk/src/jason/asSemantics/Unifier.java trunk/src/jason/asSyntax/Atom.java trunk/src/jason/asSyntax/Literal.java trunk/src/jason/asSyntax/LiteralImpl.java trunk/src/jason/asSyntax/PlanLibrary.java trunk/src/jason/asSyntax/Pred.java trunk/src/jason/asSyntax/PredicateIndicator.java trunk/src/jason/asSyntax/Structure.java trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc trunk/src/jason/asSyntax/parser/as2j.java trunk/src/jason/asSyntax/parser/as2jConstants.java trunk/src/jason/asSyntax/parser/as2jTokenManager.java trunk/src/jason/bb/BeliefBase.java trunk/src/jason/bb/DefaultBeliefBase.java trunk/src/jason/infra/centralised/RunCentralisedMAS.java trunk/src/test/TestAll.java Added Paths: ----------- trunk/src/jason/stdlib/name_space.java trunk/src/test/NSTest.java Modified: trunk/applications/as-unit-test/src/jason/tests/TestAll.java =================================================================== --- trunk/applications/as-unit-test/src/jason/tests/TestAll.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/applications/as-unit-test/src/jason/tests/TestAll.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -30,6 +30,7 @@ TestUnnamedVar.class, TestCopyTerm.class, TestNegatedVar.class, - TestTRO.class + TestTRO.class, + TestNS.class }) public class TestAll { } Modified: trunk/src/jason/asSemantics/TransitionSystem.java =================================================================== --- trunk/src/jason/asSemantics/TransitionSystem.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSemantics/TransitionSystem.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -230,7 +230,7 @@ // the semantic rules are referred to in comments in the functions below - private String kqmlReceivedFunctor = Config.get().getKqmlFunctor(); + private final String kqmlReceivedFunctor = Config.get().getKqmlFunctor(); private void applyProcMsg() throws JasonException { confP.step = State.SelEv; Modified: trunk/src/jason/asSemantics/Unifier.java =================================================================== --- trunk/src/jason/asSemantics/Unifier.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSemantics/Unifier.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -279,6 +279,10 @@ if (!t1s.getFunctor().equals(t2s.getFunctor())) return false; + // different name space + if (t1s.getNS() != null && t2s.getNS() != null && !unifiesNoUndo(t1s.getNS(),t2s.getNS())) + return false; + // unify inner terms // do not use iterator! (see ListTermImpl class) for (int i = 0; i < ts; i++) Modified: trunk/src/jason/asSyntax/Atom.java =================================================================== --- trunk/src/jason/asSyntax/Atom.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/Atom.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -23,6 +23,8 @@ package jason.asSyntax; +import jason.asSemantics.Unifier; + import java.util.logging.Level; import java.util.logging.Logger; @@ -38,15 +40,33 @@ private static Logger logger = Logger.getLogger(Atom.class.getName()); private final String functor; // immutable field + private final Atom ns; // name space public Atom(String functor) { if (functor == null) - logger.log(Level.WARNING, "An atom functor should not be null!", new Exception()); + logger.log(Level.WARNING, "The functor of an atom functor should not be null!", new Exception()); this.functor = functor; + this.ns = DefaultNS; } + public Atom(Atom namespace, String functor) { + if (functor == null) + logger.log(Level.WARNING, "The functor of an atom functor should not be null!", new Exception()); + this.functor = functor; + this.ns = namespace; + } + public Atom(Literal l) { + this(l.getNS(), l); + } + + public Atom(Literal l, Unifier u) { + this((Atom)l.getNS().capply(u), l); + } + + public Atom(Atom namespace, Literal l) { this.functor = l.getFunctor(); + this.ns = namespace; predicateIndicatorCache = l.predicateIndicatorCache; hashCodeCache = l.hashCodeCache; srcInfo = l.srcInfo; @@ -55,6 +75,10 @@ public String getFunctor() { return functor; } + + public Atom getNS() { + return ns; + } public Term clone() { return this; // since this object is immutable @@ -72,7 +96,7 @@ if (o instanceof Atom) { Atom a = (Atom)o; //System.out.println(getFunctor() +" ==== " + a.getFunctor() + " is "+ (a.isAtom())); // && getFunctor().equals(a.getFunctor()))); - return a.isAtom() && getFunctor().equals(a.getFunctor()); + return a.isAtom() && getFunctor().equals(a.getFunctor()) && getNS().equals(a.getNS()); } return false; } @@ -100,15 +124,19 @@ if (t.isVar()) return -1; if (t instanceof Literal) { - Literal tAsLit = (Literal)t; - final int ma = getArity(); - final int oa = tAsLit.getArity(); - if (ma < oa) - return -1; - else if (ma > oa) - return 1; - else - return getFunctor().compareTo(tAsLit.getFunctor()); + Literal tAsLit = (Literal)t; + if (getNS().equals(tAsLit.getNS())) { // same ns + final int ma = getArity(); + final int oa = tAsLit.getArity(); + if (ma < oa) + return -1; + else if (ma > oa) + return 1; + else + return getFunctor().compareTo(tAsLit.getFunctor()); + } else { + return getNS().compareTo(tAsLit.getNS()); + } } return super.compareTo(t); @@ -116,18 +144,26 @@ @Override protected int calcHashCode() { - return getFunctor().hashCode(); + if (getNS() == null) { + System.out.println("*** "+this); + return 0; + } + return getFunctor().hashCode() + getNS().hashCode(); } @Override public String toString() { - return functor; + if (ns == DefaultNS) + return functor; + else + return getNS() + "::" + functor; } /** get as XML */ public Element getAsDOM(Document document) { Element u = (Element) document.createElement("structure"); u.setAttribute("functor",getFunctor()); + u.setAttribute("name-space", getNS().toString()); return u; } } Modified: trunk/src/jason/asSyntax/Literal.java =================================================================== --- trunk/src/jason/asSyntax/Literal.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/Literal.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -73,9 +73,11 @@ public static final boolean LPos = true; public static final boolean LNeg = false; - public static final Literal LTrue = new TrueLiteral(); - public static final Literal LFalse = new FalseLiteral(); + public static final Atom DefaultNS = new DefaultNameSpace(); + public static final Literal LTrue = new TrueLiteral(); + public static final Literal LFalse = new FalseLiteral(); + protected PredicateIndicator predicateIndicatorCache = null; // to not compute it all the time (it is used many many times) /** creates a new literal by parsing a string -- ASSyntax.parseLiteral or createLiteral are preferred. */ @@ -96,15 +98,18 @@ /** returns the functor of this literal */ public abstract String getFunctor(); + /** returns the name spaceof this literal */ + public abstract Atom getNS(); + @Override public boolean isLiteral() { return true; } - /** returns functor symbol "/" arity */ + /** returns name space :: functor symbol / arity */ public PredicateIndicator getPredicateIndicator() { if (predicateIndicatorCache == null) { - predicateIndicatorCache = new PredicateIndicator(getFunctor(),getArity()); + predicateIndicatorCache = new PredicateIndicator(getNS(), getFunctor(), getArity()); } return predicateIndicatorCache; } @@ -558,4 +563,17 @@ return LogExpr.EMPTY_UNIF_LIST.iterator(); } } + + private static final class DefaultNameSpace extends Atom { + public DefaultNameSpace() { + super("default"); + } + protected int calcHashCode() { + return getFunctor().hashCode(); + }; + + public String toString() { + return getFunctor(); + }; + } } Modified: trunk/src/jason/asSyntax/LiteralImpl.java =================================================================== --- trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/LiteralImpl.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -68,6 +68,12 @@ type = pos; } + /** creates a literal based on another but in another name space and signal */ + public LiteralImpl(Atom namespace, boolean pos, Literal l) { + super(namespace, l); + type = pos; + } + protected LiteralImpl(String functor, int terms) { super(functor, terms); } Modified: trunk/src/jason/asSyntax/PlanLibrary.java =================================================================== --- trunk/src/jason/asSyntax/PlanLibrary.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/PlanLibrary.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -144,7 +144,7 @@ add(p,false); } - private String kqmlReceivedFunctor = Config.get().getKqmlFunctor(); + private final String kqmlReceivedFunctor = Config.get().getKqmlFunctor(); /** * Adds a plan into the plan library, either before or after all other Modified: trunk/src/jason/asSyntax/Pred.java =================================================================== --- trunk/src/jason/asSyntax/Pred.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/Pred.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -49,9 +49,16 @@ public Pred(String functor) { super(functor); } + public Pred(Atom namespace, String functor) { + super(namespace, functor); + } public Pred(Literal l) { - super(l); + this(l.getNS(), l); + } + + public Pred(Atom namespace, Literal l) { + super(namespace, l); if (l.hasAnnot()) { annots = l.getAnnots().cloneLT(); Modified: trunk/src/jason/asSyntax/PredicateIndicator.java =================================================================== --- trunk/src/jason/asSyntax/PredicateIndicator.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/PredicateIndicator.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -9,6 +9,8 @@ */ public final class PredicateIndicator implements Comparable<PredicateIndicator>, Serializable { + + private final Atom ns; // name space private final String functor; private final int arity; private final int hash; @@ -16,14 +18,26 @@ public PredicateIndicator(String functor, int arity) { this.functor = functor; this.arity = arity; + this.ns = Literal.DefaultNS; hash = calcHash(); } + public PredicateIndicator(Atom namespace, String functor, int arity) { + this.functor = functor; + this.arity = arity; + this.ns = namespace; + hash = calcHash(); + } public PredicateIndicator(String prefix, PredicateIndicator pi) { this.functor = prefix + pi.functor; this.arity = pi.arity; + this.ns = Literal.DefaultNS; hash = calcHash(); } + public Atom getNS() { + return ns; + } + public String getFunctor() { return functor; } @@ -37,7 +51,7 @@ if (o == this) return true; if (o != null && o instanceof PredicateIndicator && o.hashCode() == this.hashCode()) { final PredicateIndicator pi = (PredicateIndicator)o; - return arity == pi.arity && functor.equals(pi.functor); + return arity == pi.arity && functor.equals(pi.functor) && ns.equals(pi.getNS()); } return false; } @@ -49,8 +63,12 @@ @Override public int compareTo(PredicateIndicator pi) { - int c = this.functor.compareTo(pi.functor); + int c = this.ns.compareTo(pi.ns); if (c != 0) return c; + + c = this.functor.compareTo(pi.functor); + if (c != 0) return c; + if (pi.arity > this.arity) return -1; if (this.arity > pi.arity) return 1; return 0; @@ -59,10 +77,14 @@ private int calcHash() { int t = 31 * arity; if (functor != null) t = 31 * t + functor.hashCode(); + if (ns != Literal.DefaultNS) t = t + 71 * ns.hashCode(); return t; } public String toString() { - return functor + "/" + arity; + if (ns == Literal.DefaultNS) + return functor + "/" + arity; + else + return ns + "::" + functor + "/" + arity; } } Modified: trunk/src/jason/asSyntax/Structure.java =================================================================== --- trunk/src/jason/asSyntax/Structure.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/Structure.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -63,8 +63,18 @@ this.terms = new ArrayList<Term>(5); } + public Structure(Atom ns, String functor) { + //this.functor = (functor == null ? null : functor.intern()); // it does not improve performance in test i did! + super(ns, functor); + this.terms = new ArrayList<Term>(5); + } + public Structure(Literal l) { - super(l); + this(l.getNS(), l); + } + + public Structure(Atom namespace, Literal l) { + super(namespace, l); final int tss = l.getArity(); terms = new ArrayList<Term>(tss); for (int i = 0; i < tss; i++) @@ -74,7 +84,7 @@ // used by capply protected Structure(Literal l, Unifier u) { - super(l); + super(l, u); final int tss = l.getArity(); terms = new ArrayList<Term>(tss); for (int i = 0; i < tss; i++) @@ -436,6 +446,10 @@ public String toString() { StringBuilder s = new StringBuilder(); + if (getNS() != DefaultNS) { + s.append(getNS()); + s.append("::"); + } if (getFunctor() != null) s.append(getFunctor()); if (getArity() > 0) { Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc =================================================================== --- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2015-12-03 23:17:22 UTC (rev 1859) @@ -591,47 +591,62 @@ /* Literal */ Literal literal() : - { Pred F; Token k; boolean type = Literal.LPos; } + { Pred F = null; Pred V; Token k; boolean type = Literal.LPos; Atom NS = Literal.DefaultNS; Token tns; } { ( ( [ <TK_NEG> { type = Literal.LNeg; } ] - (F=pred() { + + [ LOOKAHEAD(10) + tns = <ATOM> "::" { if (!tns.image.equals("default")) + NS = new Atom(tns.image); + } + ] + (F=pred() + | V = var() + [ + "::" F = pred() + ] + { VarTerm vt = (VarTerm)V; + vt.setNegated(type); + if (F == null) { // no namespace + return vt; + } else { + NS = vt; + } + } + ) + ) + | k=<TK_TRUE> { return Literal.LTrue; } + | k=<TK_FALSE> { return Literal.LFalse; } + ) + { if (F.getFunctor().indexOf(".") >= 0) { if (F.hasAnnot()) throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations."); if (type == Literal.LNeg) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated."); - try { - return new InternalActionLiteral(F, curAg); + try { + return new InternalActionLiteral(F, curAg); } catch (Exception e) { if (getArithFunction(F) == null) // it is not a registered function - logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); + logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); } } - return new LiteralImpl(type,F); + return new LiteralImpl(NS, type, F); } - | F = var() { - VarTerm vt = (VarTerm)F; - vt.setNegated(type); - return vt; - } - ) - ) - | k=<TK_TRUE> { return Literal.LTrue; } - | k=<TK_FALSE> { return Literal.LFalse; } - ) } /* Annotated Formulae */ -Pred pred() : { Token K; Pred p; List l; ListTerm lt; Term b; } +Pred pred() : { Token K; Pred p; List l; ListTerm lt; Term b; } { ( - K=<ATOM> + K=<ATOM> | K=<TK_BEGIN> | K=<TK_END> - ) { p = new Pred(K.image); + ) + { p = new Pred(K.image); p.setSrcInfo(new SourceInfo(asSource, K.beginLine)); } Modified: trunk/src/jason/asSyntax/parser/as2j.java =================================================================== --- trunk/src/jason/asSyntax/parser/as2j.java 2015-12-03 12:09:15 UTC (rev 1858) +++ trunk/src/jason/asSyntax/parser/as2j.java 2015-12-03 23:17:22 UTC (rev 1859) @@ -883,7 +883,7 @@ /* Literal */ final public Literal literal() throws ParseException { - Pred F; Token k; boolean type = Literal.LPos; + Pred F = null; Pred V; Token k; boolean type = Literal.LPos; Atom NS = Literal.DefaultNS; Token tns; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: case TK_NEG: @@ -900,34 +900,42 @@ jj_la1[32] = jj_gen; ; } + if (jj_2_4(10)) { + tns = jj_consume_token(ATOM); + jj_consume_token(47); + if (!tns.image.equals("default")) + NS = new Atom(tns.image); + } else { + ; + } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TK_BEGIN: case TK_END: case ATOM: F = pred(); - if (F.getFunctor().indexOf(".") >= 0) { - if (F.hasAnnot()) - {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations.");} - if (type == Literal.LNeg) - {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated.");} - try { - {if (true) return new InternalActionLiteral(F, curAg);} - } catch (Exception e) { - if (getArithFunction(F) == null) // it is not a registered function - logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); - } - } - {if (true) return new LiteralImpl(type,F);} break; case VAR: case UNNAMEDVAR: - F = var(); - VarTerm vt = (VarTerm)F; + V = var(); + switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { + case 47: + jj_consume_token(47); + F = pred(); + break; + default: + jj_la1[33] = jj_gen; + ; + } + VarTerm vt = (VarTerm)V; vt.setNegated(type); - {if (true) return vt;} + if (F == null) { // no namespace + {if (true) return vt;} + } else { + NS = vt; + } break; default: - jj_la1[33] = jj_gen; + jj_la1[34] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -941,16 +949,29 @@ {if (true) return Literal.LFalse;} break; default: - jj_la1[34] = jj_gen; + jj_la1[35] = jj_gen; jj_consume_token(-1); throw new ParseException(); } + if (F.getFunctor().indexOf(".") >= 0) { + if (F.hasAnnot()) + {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot have annotations.");} + if (type == Literal.LNeg) + {if (true) throw new ParseException(getSourceRef(F)+" Internal actions cannot be negated.");} + try { + {if (true) return new InternalActionLiteral(F, curAg);} + } catch (Exception e) { + if (getArithFunction(F) == null) // it is not a registered function + logger.warning(getSourceRef(F)+" warning: The internal action class for '"+F+"' was not loaded! Error: "+e); + } + } + {if (true) return new LiteralImpl(NS, type, F);} throw new Error("Missing return statement in function"); } /* Annotated Formulae */ final public Pred pred() throws ParseException { - Token K; Pred p; List l; ListTerm lt; Term b; + Token K; Pred p; List l; ListTerm lt; Term b; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case ATOM: K = jj_consume_token(ATOM); @@ -962,7 +983,7 @@ K = jj_consume_token(TK_END); break; default: - jj_la1[35] = jj_gen; + jj_la1[36] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -976,16 +997,16 @@ p.setTerms(l); break; default: - jj_la1[36] = jj_gen; + jj_la1[37] = jj_gen; ; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 48: + case 49: lt = list(); p.setAnnots(lt); break; default: - jj_la1[37] = jj_gen; + jj_la1[38] = jj_gen; ; } {if (true) return p;} @@ -1000,14 +1021,14 @@ label_9: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 47: + case 48: ; break; default: - jj_la1[38] = jj_gen; + jj_la1[39] = jj_gen; break label_9; } - jj_consume_token(47); + jj_consume_token(48); v = term(); listTerms.add(v); } @@ -1019,7 +1040,7 @@ final public Term term() throws ParseException { Object o; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 48: + case 49: o = list(); break; case 30: @@ -1042,7 +1063,7 @@ o = log_expr(); break; default: - jj_la1[39] = jj_gen; + jj_la1[40] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1052,7 +1073,7 @@ final public ListTermImpl list() throws ParseException { ListTermImpl lt = new ListTermImpl(); ListTerm last; Token K; Term f; - jj_consume_token(48); + jj_consume_token(49); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: case TK_TRUE: @@ -1068,26 +1089,26 @@ case 37: case 38: case 42: - case 48: + case 49: f = term_in_list(); last = lt.append(f); lt.setSrcInfo(f.getSrcInfo()); label_10: while (true) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 47: + case 48: ; break; default: - jj_la1[40] = jj_gen; + jj_la1[41] = jj_gen; break label_10; } - jj_consume_token(47); + jj_consume_token(48); f = term_in_list(); last = last.append(f); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 49: - jj_consume_token(49); + case 50: + jj_consume_token(50); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case VAR: K = jj_consume_token(VAR); @@ -1097,26 +1118,26 @@ K = jj_consume_token(UNNAMEDVAR); last.setNext(UnnamedVar.create(K.image)); break; - case 48: + case 49: f = list(); last = last.concat((ListTerm)f); break; default: - jj_la1[41] = jj_gen; + jj_la1[42] = jj_gen; jj_consume_token(-1); throw new ParseException(); } break; default: - jj_la1[42] = jj_gen; + jj_la1[43] = jj_gen; ; } break; default: - jj_la1[43] = jj_gen; + jj_la1[44] = jj_gen; ; } - jj_consume_token(50); + jj_consume_token(51); {if (true) return lt;} throw new Error("Missing return statement in function"); } @@ -1125,7 +1146,7 @@ final public Term term_in_list() throws ParseException { Object o; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 48: + case 49: o = list(); break; case VAR: @@ -1149,7 +1170,7 @@ o = rule_plan_term(); break; default: - jj_la1[44] = jj_gen; + jj_la1[45] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1162,13 +1183,13 @@ Object t1, t2; t1 = log_expr_trm(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 49: - jj_consume_token(49); + case 50: + jj_consume_token(50); t2 = log_expr(); {if (true) return new LogExpr((LogicalFormula)t1,LogicalOp.or,(LogicalFormula)t2);} break; default: - jj_la1[45] = jj_gen; + jj_la1[46] = jj_gen; ; } {if (true) return t1;} @@ -1179,13 +1200,13 @@ Object t1, t2; t1 = log_expr_factor(); switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 51: - jj_consume_token(51); + case 52: + jj_consume_token(52); t2 = log_expr_trm(); {if (true) return new LogExpr((LogicalFormula)t1,LogicalOp.and,(LogicalFormula)t2);} break; default: - jj_la1[46] = jj_gen; + jj_la1[47] = jj_gen; ; } {if (true) return t1;} @@ -1217,7 +1238,7 @@ {if (true) return t;} break; default: - jj_la1[47] = jj_gen; + jj_la1[48] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1254,54 +1275,54 @@ op1 = string(); break; default: - jj_la1[48] = jj_gen; + jj_la1[49] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 45: case 46: - case 52: case 53: case 54: case 55: case 56: case 57: + case 58: switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case 45: jj_consume_token(45); operator = RelationalOp.lt; break; - case 52: - jj_consume_token(52); + case 53: + jj_consume_token(53); operator = RelationalOp.lte; break; case 46: jj_consume_token(46); operator = RelationalOp.gt; break; - case 53: - jj_consume_token(53); - operator = RelationalOp.gte; - break; case 54: jj_consume_token(54); - operator = RelationalOp.eq; + operator = RelationalOp.gte; break; case 55: jj_consume_token(55); - operator = RelationalOp.dif; + operator = RelationalOp.eq; break; case 56: jj_consume_token(56); - operator = RelationalOp.unify; + operator = RelationalOp.dif; break; case 57: jj_consume_token(57); + operator = RelationalOp.unify; + break; + case 58: + jj_consume_token(58); operator = RelationalOp.literalBuilder; break; default: - jj_la1[49] = jj_gen; + jj_la1[50] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1323,14 +1344,14 @@ case STRING: op2 = string(); break; - case 48: + case 49: op2 = list(); break; case 30: op2 = rule_plan_term(); break; default: - jj_la1[50] = jj_gen; + jj_la1[51] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1341,7 +1362,7 @@ {if (true) return new RelExpr((Term)op1, operator, (Term)op2);} break; default: - jj_la1[51] = jj_gen; + jj_la1[52] = jj_gen; ; } {if (true) return op1;} @@ -1361,7 +1382,7 @@ ; break; default: - jj_la1[52] = jj_gen; + jj_la1[53] = jj_gen; break label_11; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -1374,7 +1395,7 @@ op = ArithmeticOp.minus; break; default: - jj_la1[53] = jj_gen; + jj_la1[54] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1400,21 +1421,21 @@ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case TK_INTDIV: case TK_INTMOD: - case 58: case 59: + case 60: ; break; default: - jj_la1[54] = jj_gen; + jj_la1[55] = jj_gen; break label_12; } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 58: - jj_consume_token(58); + case 59: + jj_consume_token(59); op = ArithmeticOp.times; break; - case 59: - jj_consume_token(59); + case 60: + jj_consume_token(60); op = ArithmeticOp.div; break; case TK_INTDIV: @@ -1426,7 +1447,7 @@ op = ArithmeticOp.mod; break; default: - jj_la1[55] = jj_gen; + jj_la1[56] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1448,8 +1469,8 @@ t1 = arithm_expr_simple(); op = ArithmeticOp.none; switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 60: - jj_consume_token(60); + case 61: + jj_consume_token(61); op = ArithmeticOp.pow; t2 = arithm_expr_factor(); if (!(t1 instanceof NumberTerm)) { @@ -1461,7 +1482,7 @@ {if (true) return new ArithExpr((NumberTerm)t1, op, (NumberTerm)t2);} break; default: - jj_la1[56] = jj_gen; + jj_la1[57] = jj_gen; ; } {if (true) return t1;} @@ -1511,7 +1532,7 @@ {if (true) return t;} break; default: - jj_la1[57] = jj_gen; + jj_la1[58] = jj_gen; jj_consume_token(-1); throw new ParseException(); } @@ -1546,17 +1567,17 @@ v = UnnamedVar.create(K.image); break; default: - jj_la1[58] = jj_gen; + jj_la1[59] = jj_gen; jj_consume_token(-1); throw new ParseException(); } switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { - case 48: + case 49: lt = list(); v.setAnnots(lt); break; default: - jj_la1[59] = jj_gen; + jj_la1[60] = jj_gen; ; } {if (true) return v;} @@ -1593,97 +1614,37 @@ finally { jj_save(2, xla); } } - final private boolean jj_3R_117() { - if (jj_3R_106()) return true; - return false; + final private boolean jj_2_4(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_4(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(3, xla); } } - final private boolean jj_3R_83() { - if (jj_scan_token(57)) return true; + final private boolean jj_3R_118() { + if (jj_3R_107()) return true; return false; } - final private boolean jj_3R_82() { - if (jj_scan_token(56)) return true; - return false; - } - - final private boolean jj_3R_116() { + final private boolean jj_3R_117() { if (jj_scan_token(41)) return true; return false; } - final private boolean jj_3R_81() { - if (jj_scan_token(55)) return true; - return false; - } - - final private boolean jj_3R_80() { - if (jj_scan_token(54)) return true; - return false; - } - - final private boolean jj_3R_79() { - if (jj_scan_token(53)) return true; - return false; - } - - final private boolean jj_3R_78() { - if (jj_scan_token(46)) return true; - return false; - } - - final private boolean jj_3R_77() { - if (jj_scan_token(52)) return true; - return false; - } - - final private boolean jj_3R_76() { - if (jj_scan_token(45)) return true; - return false; - } - - final private boolean jj_3R_72() { + final private boolean jj_3R_65() { Token xsp; xsp = jj_scanpos; - if (jj_3R_76()) { + if (jj_3R_71()) { jj_scanpos = xsp; - if (jj_3R_77()) { - jj_scanpos = xsp; - if (jj_3R_78()) { - jj_scanpos = xsp; - if (jj_3R_79()) { - jj_scanpos = xsp; - if (jj_3R_80()) { - jj_scanpos = xsp; - if (jj_3R_81()) { - jj_scanpos = xsp; - if (jj_3R_82()) { - jj_scanpos = xsp; - if (jj_3R_83()) return true; + if (jj_3R_72()) return true; } - } - } - } - } - } - } xsp = jj_scanpos; - if (jj_3R_84()) { - jj_scanpos = xsp; - if (jj_3R_85()) { - jj_scanpos = xsp; - if (jj_3R_86()) { - jj_scanpos = xsp; - if (jj_3R_87()) return true; - } - } - } + if (jj_3R_73()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_71() { - if (jj_3R_74()) return true; + final private boolean jj_3R_116() { + if (jj_3R_123()) return true; return false; } @@ -1692,11 +1653,6 @@ return false; } - final private boolean jj_3R_70() { - if (jj_3R_73()) return true; - return false; - } - final private boolean jj_3R_114() { if (jj_3R_121()) return true; return false; @@ -1707,48 +1663,36 @@ return false; } - final private boolean jj_3R_112() { - if (jj_3R_119()) return true; - return false; - } - - final private boolean jj_3R_64() { + final private boolean jj_3R_107() { Token xsp; xsp = jj_scanpos; - if (jj_3R_70()) { - jj_scanpos = xsp; - if (jj_3R_71()) return true; - } - xsp = jj_scanpos; - if (jj_3R_72()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3R_106() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_112()) { - jj_scanpos = xsp; if (jj_3R_113()) { jj_scanpos = xsp; if (jj_3R_114()) { jj_scanpos = xsp; - if (jj_3R_115()) return true; + if (jj_3R_115()) { + jj_scanpos = xsp; + if (jj_3R_116()) return true; } } } xsp = jj_scanpos; - if (jj_3R_116()) jj_scanpos = xsp; + if (jj_3R_117()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_117()) jj_scanpos = xsp; + if (jj_3R_118()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_99() { - if (jj_3R_106()) return true; + final private boolean jj_3R_100() { + if (jj_3R_107()) return true; return false; } + final private boolean jj_3R_57() { + if (jj_3R_65()) return true; + return false; + } + final private boolean jj_3R_45() { if (jj_scan_token(40)) return true; return false; @@ -1771,6 +1715,12 @@ return false; } + final private boolean jj_3R_56() { + if (jj_scan_token(TK_NOT)) return true; + if (jj_3R_49()) return true; + return false; + } + final private boolean jj_3R_31() { if (jj_scan_token(36)) return true; return false; @@ -1802,6 +1752,16 @@ return false; } + final private boolean jj_3R_49() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_56()) { + jj_scanpos = xsp; + if (jj_3R_57()) return true; + } + return false; + } + final private boolean jj_3R_29() { if (jj_scan_token(39)) return true; return false; @@ -1823,6 +1783,12 @@ return false; } + final private boolean jj_3R_50() { + if (jj_scan_token(52)) return true; + if (jj_3R_36()) return true; + return false; + } + final private boolean jj_3_2() { Token xsp; xsp = jj_scanpos; @@ -1835,6 +1801,14 @@ return false; } + final private boolean jj_3R_36() { + if (jj_3R_49()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_50()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3R_16() { Token xsp; xsp = jj_scanpos; @@ -1851,7 +1825,7 @@ return false; } - final private boolean jj_3R_65() { + final private boolean jj_3R_66() { if (jj_scan_token(30)) return true; Token xsp; xsp = jj_scanpos; @@ -1859,48 +1833,13 @@ xsp = jj_scanpos; if (jj_3_3()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3R_99()) jj_scanpos = xsp; + if (jj_3R_100()) jj_scanpos = xsp; if (jj_scan_token(31)) return true; return false; } - final private boolean jj_3R_56() { - if (jj_3R_64()) return true; - return false; - } - - final private boolean jj_3R_55() { - if (jj_scan_token(TK_NOT)) return true; - if (jj_3R_49()) return true; - return false; - } - - final private boolean jj_3R_49() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_55()) { - jj_scanpos = xsp; - if (jj_3R_56()) return true; - } - return false; - } - - final private boolean jj_3R_50() { - if (jj_scan_token(51)) return true; - if (jj_3R_36()) return true; - return false; - } - - final private boolean jj_3R_36() { - if (jj_3R_49()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_50()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3R_37() { - if (jj_scan_token(49)) return true; + if (jj_scan_token(50)) return true; if (jj_3R_20()) return true; return false; } @@ -1913,21 +1852,13 @@ return false; } - final private boolean jj_3R_53() { - if (jj_scan_token(TK_LABEL_AT)) return true; + final private boolean jj_3R_70() { + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_43() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_53()) jj_scanpos = xsp; - if (jj_3R_16()) return true; - return false; - } - final private boolean jj_3R_69() { - if (jj_3R_65()) return true; + if (jj_3R_75()) return true; return false; } @@ -1937,279 +1868,228 @@ } final private boolean jj_3R_67() { - if (jj_3R_73()) return true; - return false; - } - - final private boolean jj_3R_66() { if (jj_3R_39()) return true; return false; } - final private boolean jj_3R_60() { + final private boolean jj_3R_61() { Token xsp; xsp = jj_scanpos; - if (jj_3R_66()) { - jj_scanpos = xsp; if (jj_3R_67()) { jj_scanpos = xsp; if (jj_3R_68()) { jj_scanpos = xsp; - if (jj_3R_69()) return true; + if (jj_3R_69()) { + jj_scanpos = xsp; + if (jj_3R_70()) return true; } } } return false; } - final private boolean jj_3R_95() { + final private boolean jj_3R_96() { if (jj_3R_39()) return true; return false; } - final private boolean jj_3R_94() { + final private boolean jj_3R_95() { if (jj_scan_token(UNNAMEDVAR)) return true; return false; } - final private boolean jj_3R_93() { + final private boolean jj_3R_53() { + if (jj_scan_token(TK_LABEL_AT)) return true; + return false; + } + + final private boolean jj_3R_94() { if (jj_scan_token(VAR)) return true; return false; } - final private boolean jj_3R_74() { + final private boolean jj_3R_75() { if (jj_scan_token(STRING)) return true; return false; } - final private boolean jj_3R_42() { - if (jj_scan_token(34)) return true; + final private boolean jj_3R_43() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_53()) jj_scanpos = xsp; + if (jj_3R_16()) return true; return false; } - final private boolean jj_3R_63() { + final private boolean jj_3R_64() { if (jj_3R_39()) return true; return false; } - final private boolean jj_3R_90() { - if (jj_scan_token(49)) return true; + final private boolean jj_3R_91() { + if (jj_scan_token(50)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_93()) { - jj_scanpos = xsp; if (jj_3R_94()) { jj_scanpos = xsp; - if (jj_3R_95()) return true; + if (jj_3R_95()) { + jj_scanpos = xsp; + if (jj_3R_96()) return true; } } return false; } - final private boolean jj_3R_89() { - if (jj_scan_token(47)) return true; - if (jj_3R_60()) return true; + final private boolean jj_3R_90() { + if (jj_scan_token(48)) return true; + if (jj_3R_61()) return true; return false; } - final private boolean jj_3R_62() { + final private boolean jj_3R_63() { if (jj_scan_token(UNNAMEDVAR)) return true; return false; } - final private boolean jj_3R_126() { - if (jj_3R_20()) return true; - return false; - } - - final private boolean jj_3R_61() { + final private boolean jj_3R_62() { if (jj_scan_token(VAR)) return true; return false; } - final private boolean jj_3R_134() { - if (jj_scan_token(37)) return true; - return false; - } - - final private boolean jj_3R_125() { - if (jj_3R_65()) return true; - return false; - } - final private boolean jj_3R_52() { - if (jj_3R_60()) return true; + if (jj_3R_61()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_89()) { jj_scanpos = xsp; break; } + if (jj_3R_90()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3R_90()) jj_scanpos = xsp; + if (jj_3R_91()) jj_scanpos = xsp; return false; } final private boolean jj_3R_54() { Token xsp; xsp = jj_scanpos; - if (jj_3R_61()) { + if (jj_3R_62()) { jj_scanpos = xsp; - if (jj_3R_62()) return true; + if (jj_3R_63()) return true; } xsp = jj_scanpos; - if (jj_3R_63()) jj_scanpos = xsp; + if (jj_3R_64()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_137() { - if (jj_scan_token(46)) return true; - return false; - } - final private boolean jj_3R_39() { - if (jj_scan_token(48)) return true; + if (jj_scan_token(49)) return true; Token xsp; xsp = jj_scanpos; if (jj_3R_52()) jj_scanpos = xsp; - if (jj_scan_token(50)) return true; + if (jj_scan_token(51)) return true; return false; } - final private boolean jj_3R_136() { - if (jj_scan_token(45)) return true; + final private boolean jj_3R_42() { + if (jj_scan_token(34)) return true; return false; } - final private boolean jj_3R_135() { - if (jj_scan_token(37)) return true; + final private boolean jj_3R_60() { + if (jj_3R_20()) return true; return false; } - final private boolean jj_3R_132() { - if (jj_scan_token(38)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_134()) jj_scanpos = xsp; + final private boolean jj_3R_59() { + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_133() { + final private boolean jj_3R_58() { + if (jj_3R_39()) return true; + return false; + } + + final private boolean jj_3R_51() { Token xsp; xsp = jj_scanpos; - if (jj_3R_135()) { + if (jj_3R_58()) { jj_scanpos = xsp; - if (jj_3R_136()) { + if (jj_3R_59()) { jj_scanpos = xsp; - if (jj_3R_137()) return true; + if (jj_3R_60()) return true; } } return false; } - final private boolean jj_3R_59() { + final private boolean jj_3R_127() { if (jj_3R_20()) return true; return false; } - final private boolean jj_3R_58() { - if (jj_3R_65()) return true; - return false; - } - - final private boolean jj_3R_57() { - if (jj_3R_39()) return true; - return false; - } - - final private boolean jj_3R_131() { + final private boolean jj_3R_135() { if (jj_scan_token(37)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_133()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_130() { - if (jj_scan_token(40)) return true; + final private boolean jj_3R_126() { + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_41() { + final private boolean jj_3R_119() { if (jj_3R_19()) return true; return false; } - final private boolean jj_3R_51() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_57()) { - jj_scanpos = xsp; - if (jj_3R_58()) { - jj_scanpos = xsp; - if (jj_3R_59()) return true; - } - } + final private boolean jj_3R_138() { + if (jj_scan_token(46)) return true; return false; } - final private boolean jj_3R_129() { - if (jj_scan_token(44)) return true; + final private boolean jj_3R_137() { + if (jj_scan_token(45)) return true; return false; } - final private boolean jj_3R_128() { - if (jj_scan_token(34)) return true; + final private boolean jj_3R_136() { + if (jj_scan_token(37)) return true; return false; } - final private boolean jj_3R_124() { + final private boolean jj_3R_133() { + if (jj_scan_token(38)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_128()) { - jj_scanpos = xsp; - if (jj_3R_129()) { - jj_scanpos = xsp; - if (jj_3R_130()) { - jj_scanpos = xsp; - if (jj_3R_131()) { - jj_scanpos = xsp; - if (jj_3R_132()) return true; - } - } - } - } + if (jj_3R_135()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_118() { - if (jj_3R_19()) return true; + final private boolean jj_3R_76() { + if (jj_scan_token(48)) return true; + if (jj_3R_51()) return true; return false; } - final private boolean jj_3R_122() { + final private boolean jj_3R_134() { Token xsp; xsp = jj_scanpos; - if (jj_3R_124()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3R_125()) { + if (jj_3R_136()) { jj_scanpos = xsp; - if (jj_3R_126()) return true; + if (jj_3R_137()) { + jj_scanpos = xsp; + if (jj_3R_138()) return true; } + } return false; } - final private boolean jj_3R_75() { - if (jj_scan_token(47)) return true; - if (jj_3R_51()) return true; + final private boolean jj_3R_112() { + if (jj_3R_119()) return true; return false; } final private boolean jj_3R_111() { - if (jj_3R_118()) return true; - return false; - } - - final private boolean jj_3R_110() { if (jj_scan_token(42)) return true; if (jj_3R_20()) return true; if (jj_scan_token(43)) return true; @@ -2221,29 +2101,88 @@ Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_75()) { jj_scanpos = xsp; break; } + if (jj_3R_76()) { jj_scanpos = xsp; break; } } return false; } - final private boolean jj_3R_109() { + final private boolean jj_3R_132() { if (jj_scan_token(37)) return true; - if (jj_3R_100()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_134()) jj_scanpos = xsp; return false; } + final private boolean jj_3R_131() { + if (jj_scan_token(40)) return true; + return false; + } + + final private boolean jj_3R_110() { + if (jj_scan_token(37)) return true; + if (jj_3R_101()) return true; + return false; + } + + final private boolean jj_3R_41() { + if (jj_3R_19()) return true; + return false; + } + + final private boolean jj_3R_130() { + if (jj_scan_token(44)) return true; + return false; + } + + final private boolean jj_3R_129() { + if (jj_scan_token(34)) return true; + return false; + } + + final private boolean jj_3R_125() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_129()) { + jj_scanpos = xsp; + if (jj_3R_130()) { + jj_scanpos = xsp; + if (jj_3R_131()) { + jj_scanpos = xsp; + if (jj_3R_132()) { + jj_scanpos = xsp; + if (jj_3R_133()) return true; + } + } + } + } + return false; + } + final private boolean jj_3R_22() { if (jj_3R_39()) return true; return false; } - final private boolean jj_3R_108() { + final private boolean jj_3R_123() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_125()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3R_126()) { + jj_scanpos = xsp; + if (jj_3R_127()) return true; + } + return false; + } + + final private boolean jj_3R_109() { if (jj_scan_token(38)) return true; - if (jj_3R_100()) return true; + if (jj_3R_101()) return true; return false; } - final private boolean jj_3R_107() { + final private boolean jj_3R_108() { if (jj_scan_token(NUMBER)) return true; return false; } @@ -2255,18 +2194,18 @@ return false; } - final private boolean jj_3R_100() { + final private boolean jj_3R_101() { Token xsp; xsp = jj_scanpos; - if (jj_3R_107()) { - jj_scanpos = xsp; if (jj_3R_108()) { jj_scanpos = xsp; if (jj_3R_109()) { jj_scanpos = xsp; if (jj_3R_110()) { jj_scanpos = xsp; - if (jj_3R_111()) return true; + if (jj_3R_111()) { + jj_scanpos = xsp; + if (jj_3R_112()) return true; } } } @@ -2274,28 +2213,6 @@ return false; } - final private boolean jj_3R_121() { - if (jj_scan_token(TK_WHILE)) return true; - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; - if (jj_3R_65()) 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; - return false; - } - - final private boolean jj_3R_40() { - if (jj_scan_token(30)) return true; - return false; - } - final private boolean jj_3R_13() { Token xsp; xsp = jj_scanpos; @@ -2313,106 +2230,176 @@ return false; } - final private boolean jj_3R_101() { - if (jj_scan_token(60)) return true; - if (jj_3R_92()) return true; + final private boolean jj_3R_102() { + if (jj_scan_token(61)) return true; + if (jj_3R_93()) return true; return false; } - final private boolean jj_3R_92() { - if (jj_3R_100()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3R_101()) jj_scanpos = xsp; + final private boolean jj_3R_122() { + if (jj_scan_token(TK_WHILE)) return true; + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_35() { - if (jj_scan_token(TK_FALSE)) return true; + final private boolean jj_3R_93() { + if (jj_3R_101()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_102()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_34() { - if (jj_scan_token(TK_TRUE)) return true; + 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_48() { - if (jj_3R_54()) return true; + final private boolean jj_3R_40() { + if (jj_scan_token(30)) return true; return false; } - final private boolean jj_3R_120() { - if (jj_scan_token(TK_FOR)) return true; - if (jj_scan_token(42)) return true; - if (jj_3R_20()) return true; - if (jj_scan_token(43)) return true; - if (jj_3R_65()) return true; + final private boolean jj_3R_106() { + if (jj_scan_token(TK_INTMOD)) return true; return false; } final private boolean jj_3R_105() { - if (jj_scan_token(TK_INTMOD)) return true; + if (jj_scan_token(TK_INTDIV)) return true; return false; } final private boolean jj_3R_104() { - if (jj_scan_token(TK_INTDIV)) return true; + if (jj_scan_token(60)) return true; return false; } + final private boolean jj_3R_35() { + if (jj_scan_token(TK_FALSE)) return true; + return false; + } + final private boolean jj_3R_103() { if (jj_scan_token(59)) return true; return false; } - final private boolean jj_3R_102() { - if (jj_scan_token(58)) return true; + final private boolean jj_3R_34() { + if (jj_scan_token(TK_TRUE)) return true; return false; } - final private boolean jj_3R_96() { + final private boolean jj_3R_97() { Token xsp; xsp = jj_scanpos; - if (jj_3R_102()) { - jj_scanpos = xsp; if (jj_3R_103()) { jj_scanpos = xsp; if (jj_3R_104()) { jj_scanpos = xsp; - if (jj_3R_105()) return true; + if (jj_3R_105()) { + jj_scanpos = xsp; + if (jj_3R_106()) return true; } } } - if (jj_3R_92()) return true; + if (jj_3R_93()) return true; return false; } - final private boolean jj_3R_88() { - if (jj_3R_92()) return true; + final private boolean jj_3R_121() { + if (jj_scan_token(TK_FOR)) return true; + if (jj_scan_token(42)) return true; + if (jj_3R_20()) return true; + if (jj_scan_token(43)) return true; + if (jj_3R_66()) return true; + return false; + } + + final private boolean jj_3R_89() { + if (jj_3R_93()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_96()) { jj_scanpos = xsp; break; } + if (jj_3R_97()) { jj_scanpos = xsp; break; } } return false; } + final private boolean jj_3R_55() { + if (jj_scan_token(47)) return true; + if (jj_3R_13()) return true; + return false; + } + + final private boolean jj_3R_48() { + if (jj_3R_54()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3R_55()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3R_47() { if (jj_3R_13()) return true; return false; } + final private boolean jj_3R_99() { + if (jj_scan_token(38)) return true; + return false; + } + + final private boolean jj_3R_98() { + if (jj_scan_token(37)) return true; + return false; + } + + final private boolean jj_3R_92() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_98()) { + jj_scanpos = xsp; + if (jj_3R_99()) return true; + } + if (jj_3R_89()) return true; + return false; + } + + final private boolean jj_3_4() { + if (jj_scan_token(ATOM)) return true; + if (jj_scan_token(47)) return true; + return false; + } + final private boolean jj_3R_46() { if (jj_scan_token(TK_NEG)) return true; return false; } + final private boolean jj_3R_74() { + if (jj_3R_89()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_92()) { jj_scanpos = xsp; break; } + } + return false; + } + final private boolean jj_3R_33() { Token xsp; xsp = jj_scanpos; if (jj_3R_46()) jj_scanpos = xsp; xsp = jj_scanpos; + if (jj_3_4()) jj_scanpos = xsp; + xsp = jj_scanpos; if (jj_3R_47()) { jj_scanpos = xsp; if (jj_3R_48()) return true; @@ -2433,52 +2420,46 @@ return false; } - final private boolean jj_3R_98() { - if (jj_scan_token(38)) return true; + final private boolean jj_3R_128() { + if (jj_scan_token(TK_ELSE)) return true; return false; } - final private boolean jj_3R_127() { - if (jj_scan_token(TK_ELSE)) return true; + final private boolean jj_3R_88() { + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_97() { - if (jj_scan_token(37)) return true; + final private boolean jj_3R_87() { + if (jj_3R_39()) return true; return false; } - final private boolean jj_3R_123() { + final private boolean jj_3R_124() { Token xsp; xsp = jj_scanpos; - if (jj_3R_127()) jj_scanpos = xsp; - if (jj_3R_65()) return true; + if (jj_3R_128()) jj_scanpos = xsp; + if (jj_3R_66()) return true; return false; } - final private boolean jj_3R_91() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_97()) { - jj_scanpos = xsp; - if (jj_3R_98()) return true; - } - if (jj_3R_88()) return true; + final private boolean jj_3R_86() { + if (jj_3R_75()) return true; return false; } + final private boolean jj_3R_85() { + if (jj_3R_74()) return true; + return false; + } + final private boolean jj_3R_26() { if (jj_3R_43()) return true; return false; } - final private boolean jj_3R_73() { - if (jj_3R_... [truncated message content] |
From: <jom...@us...> - 2015-12-03 12:09:17
|
Revision: 1858 http://sourceforge.net/p/jason/svn/1858 Author: jomifred Date: 2015-12-03 12:09:15 +0000 (Thu, 03 Dec 2015) Log Message: ----------- do not create the environment if no one was specified in the .mas2j Modified Paths: -------------- trunk/src/jason/infra/centralised/RunCentralisedMAS.java trunk/src/jason/infra/centralised/StartNewAgentGUI.java Modified: trunk/src/jason/infra/centralised/RunCentralisedMAS.java =================================================================== --- trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-12-02 14:17:57 UTC (rev 1857) +++ trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-12-03 12:09:15 UTC (rev 1858) @@ -418,8 +418,10 @@ } public void createEnvironment() throws JasonException { - logger.fine("Creating environment " + project.getEnvClass()); - env = new CentralisedEnvironment(project.getEnvClass(), this); + if (project.getEnvClass() != null && !project.getEnvClass().getClassName().equals(jason.environment.Environment.class.getName())) { + logger.fine("Creating environment " + project.getEnvClass()); + env = new CentralisedEnvironment(project.getEnvClass(), this); + } } public void createAgs() throws JasonException { Modified: trunk/src/jason/infra/centralised/StartNewAgentGUI.java =================================================================== --- trunk/src/jason/infra/centralised/StartNewAgentGUI.java 2015-12-02 14:17:57 UTC (rev 1857) +++ trunk/src/jason/infra/centralised/StartNewAgentGUI.java 2015-12-03 12:09:15 UTC (rev 1858) @@ -110,7 +110,7 @@ public void run() { boolean debug = RunCentralisedMAS.isDebug(); boolean fs = RunCentralisedMAS.getRunner().getControllerInfraTier() != null; - RuntimeServicesInfraTier services = RunCentralisedMAS.getRunner().getEnvironmentInfraTier().getRuntimeServices(); + RuntimeServicesInfraTier services = RunCentralisedMAS.getRunner().getRuntimeServices(); try { String agClass = null; if (ap.agClass != null) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-12-02 14:17:59
|
Revision: 1857 http://sourceforge.net/p/jason/svn/1857 Author: jomifred Date: 2015-12-02 14:17:57 +0000 (Wed, 02 Dec 2015) Log Message: ----------- add step in the range internal action Modified Paths: -------------- trunk/src/jason/stdlib/range.java Modified: trunk/src/jason/stdlib/range.java =================================================================== --- trunk/src/jason/stdlib/range.java 2015-11-22 11:37:15 UTC (rev 1856) +++ trunk/src/jason/stdlib/range.java 2015-12-02 14:17:57 UTC (rev 1857) @@ -13,16 +13,17 @@ /** - <p>Internal action: <b><code>.range(<i>Var</i>,<i>Start</i>,<i>End</i>)</code></b>. + <p>Internal action: <b><code>.range(<i>Var</i>,<i>Start</i>,<i>End</i>, <i>Step</i>)</code></b>. <p>Description: backtrack all values for <i>Var</i> starting at <i>Start</i> - and finishing at <i>End</i>. + and finishing at <i>End</i> by increments of <i>Step</i> (default step value is 1). <p>Parameters:<ul> <li>+/- var (Variable): the variable that unifies with all values.</li> <li>+ start (number): initial value.</li> <li>+ end (number): last value.</li> + <li>+ end (number, optional): step.</li> </ul> @@ -31,6 +32,8 @@ <li> <code>.range(3,1,5)</code>: true.</li> <li> <code>.range(6,1,5)</code>: false.</li> <li> <code>.range(X,1,5)</code>: unifies X with 1, 2, 3, 4, and 5.</li> + <li> <code>.range(X,1,11,2)</code>: unifies X with 2, 4, 6, 8, and 10.</li> + <li> <code>.range(X,5,1,-1)</code>: unifies X with 5, 4, 3, 2, and 1.</li> </ul> @@ -46,7 +49,7 @@ } @Override public int getMinArgs() { return 3; } - @Override public int getMaxArgs() { return 3; } + @Override public int getMaxArgs() { return 4; } @Override protected void checkArguments(Term[] args) throws JasonException { super.checkArguments(args); // check number of arguments @@ -54,6 +57,8 @@ throw JasonException.createWrongArgument(this,"second parameter ('" + args[1] + "') must be a number!"); if (!args[2].isNumeric()) throw JasonException.createWrongArgument(this,"third parameter ('" + args[2] + "') must be a number!"); + if (args.length == 4 && !args[3].isNumeric()) + throw JasonException.createWrongArgument(this,"fourth parameter ('" + args[3] + "') must be a number!"); } @@ -63,6 +68,11 @@ final int start = (int)((NumberTerm)args[1]).solve(); final int end = (int)((NumberTerm)args[2]).solve(); + final int step; + if (args.length == 4) + step = (int)((NumberTerm)args[3]).solve(); + else + step = 1; if (!args[0].isVar()) { // first arg is not a var int vl = (int)((NumberTerm)args[0]).solve(); @@ -72,14 +82,17 @@ final Term var = args[0]; return new Iterator<Unifier>() { - int vl = start-1; + int vl = start-step; public boolean hasNext() { - return vl < end; + if (step > 0) + return vl+step <= end; + else + return vl+step >= end; } public Unifier next() { - vl++; + vl += step; Unifier c = un.clone(); c.unifiesNoUndo(var,new NumberTermImpl(vl)); return c; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-22 11:37:18
|
Revision: 1856 http://sourceforge.net/p/jason/svn/1856 Author: jomifred Date: 2015-11-22 11:37:15 +0000 (Sun, 22 Nov 2015) Log Message: ----------- update c4jason and moise Modified Paths: -------------- trunk/lib/c4jason.jar trunk/lib/moise.jar trunk/src/jason/asSemantics/TransitionSystem.java Modified: trunk/lib/c4jason.jar =================================================================== (Binary files differ) Modified: trunk/lib/moise.jar =================================================================== (Binary files differ) Modified: trunk/src/jason/asSemantics/TransitionSystem.java =================================================================== --- trunk/src/jason/asSemantics/TransitionSystem.java 2015-11-18 13:34:38 UTC (rev 1855) +++ trunk/src/jason/asSemantics/TransitionSystem.java 2015-11-22 11:37:15 UTC (rev 1856) @@ -875,7 +875,7 @@ for (VarTerm v: renamedVars) { Term t = u.function.get(v); if (t != null && t.isVar()) { - getLogger().info("adding "+t+"="+v+"="+renamedVars.function.get(v)+" u="+u); + //getLogger().info("adding "+t+"="+v+"="+renamedVars.function.get(v)+" u="+u); if (adds == null) adds = new HashMap<VarTerm, Term>(); try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-18 13:34:40
|
Revision: 1855 http://sourceforge.net/p/jason/svn/1855 Author: jomifred Date: 2015-11-18 13:34:38 +0000 (Wed, 18 Nov 2015) Log Message: ----------- fix problem in concurrent execution of create_agent Modified Paths: -------------- trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/infra/centralised/CentralisedRuntimeServices.java Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-13 14:41:52 UTC (rev 1854) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-18 13:34:38 UTC (rev 1855) @@ -127,8 +127,8 @@ public void stopAg() { running = false; wake(); // so that it leaves the run loop - //if (myThread != null) // not necessary, the ag loop should finish since running == false - // myThread.interrupt(); + if (myThread != null) + myThread.interrupt(); synchronized (syncStopRun) { // wait the run loop to finish masRunner.delAg(agName); } Modified: trunk/src/jason/infra/centralised/CentralisedRuntimeServices.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedRuntimeServices.java 2015-11-13 14:41:52 UTC (rev 1854) +++ trunk/src/jason/infra/centralised/CentralisedRuntimeServices.java 2015-11-18 13:34:38 UTC (rev 1855) @@ -41,18 +41,20 @@ stts = new Settings(); String nb = ""; - int n = 1; - while (masRunner.getAg(agName+nb) != null) - nb = "_" + (n++); - agName = agName + nb; + synchronized (logger) { // to avoid problems related to concurrent executions of .create_agent + int n = 1; + while (masRunner.getAg(agName+nb) != null) + nb = "_" + (n++); + agName = agName + nb; + + CentralisedAgArch agArch = newAgInstance(); + agArch.setAgName(agName); + agArch.createArchs(ap.getAgArchClasses(), ap.agClass.getClassName(), ap.getBBClass(), agSource, stts, masRunner); + agArch.setEnvInfraTier(masRunner.getEnvironmentInfraTier()); + agArch.setControlInfraTier(masRunner.getControllerInfraTier()); + masRunner.addAg(agArch); + } - CentralisedAgArch agArch = newAgInstance(); - agArch.setAgName(agName); - agArch.createArchs(ap.getAgArchClasses(), ap.agClass.getClassName(), ap.getBBClass(), agSource, stts, masRunner); - agArch.setEnvInfraTier(masRunner.getEnvironmentInfraTier()); - agArch.setControlInfraTier(masRunner.getControllerInfraTier()); - masRunner.addAg(agArch); - logger.fine("Agent " + agName + " created!"); return agName; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-13 14:41:54
|
Revision: 1854 http://sourceforge.net/p/jason/svn/1854 Author: jomifred Date: 2015-11-13 14:41:52 +0000 (Fri, 13 Nov 2015) Log Message: ----------- fix bug related to pool of threads and agent creation Modified Paths: -------------- trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/infra/centralised/RunCentralisedMAS.java Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-11 20:16:54 UTC (rev 1853) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-13 14:41:52 UTC (rev 1854) @@ -126,9 +126,10 @@ public void stopAg() { running = false; - if (myThread != null) - myThread.interrupt(); - synchronized (syncStopRun) { + wake(); // so that it leaves the run loop + //if (myThread != null) // not necessary, the ag loop should finish since running == false + // myThread.interrupt(); + synchronized (syncStopRun) { // wait the run loop to finish masRunner.delAg(agName); } getTS().getAg().stopAg(); Modified: trunk/src/jason/infra/centralised/RunCentralisedMAS.java =================================================================== --- trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-11-11 20:16:54 UTC (rev 1853) +++ trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-11-13 14:41:52 UTC (rev 1854) @@ -27,6 +27,7 @@ import jason.asSemantics.Agent; import jason.asSyntax.directives.DirectiveProcessor; import jason.asSyntax.directives.Include; +import jason.bb.DefaultBeliefBase; import jason.control.ExecutionControlGUI; import jason.infra.repl.ReplAgGUI; import jason.jeditplugin.Config; @@ -458,15 +459,15 @@ } agArch.setAgName(numberedAg); agArch.setEnvInfraTier(env); - if (isPool && cAg > 0) { + if (isPool && cAg > 0 && ap.getAgArchClasses().isEmpty() && ap.getBBClass().equals(DefaultBeliefBase.class.getName())) { // creation by cloning previous agent (which is faster -- no parsing, for instance) + // used if not customisations are defined agArch.createArchs(ap.getAgArchClasses(), pag, this); } else { // normal creation agArch.createArchs(ap.getAgArchClasses(), ap.agClass.getClassName(), ap.getBBClass(), ap.asSource.toString(), ap.getAsSetts(debug, project.getControlClass() != null), this); } addAg(agArch); - pag = agArch.getTS().getAg(); } } catch (Exception e) { @@ -715,8 +716,14 @@ } } - public void finish() { - + private Boolean runningFinish = false; + public void finish() { + // avoid two threads running finish! + synchronized (runningFinish) { + if (runningFinish) + return; + runningFinish = true; + } try { // creates a thread that guarantees system.exit(0) in 5 seconds // (the stop of agents can block) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-11 20:16:56
|
Revision: 1853 http://sourceforge.net/p/jason/svn/1853 Author: jomifred Date: 2015-11-11 20:16:54 +0000 (Wed, 11 Nov 2015) Log Message: ----------- improve sleep for agents in thread pool Modified Paths: -------------- trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/infra/centralised/RunCentralisedMAS.java Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-11 19:40:48 UTC (rev 1852) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-11 20:16:54 UTC (rev 1853) @@ -212,13 +212,15 @@ private Object sleepSync = new Object(); private int sleepTime = 50; + public static final int MAX_SLEEP = 1000; + public void sleep() { try { if (!getTS().getSettings().isSync()) { logger.fine("Entering in sleep mode...."); synchronized (sleepSync) { sleepSync.wait(sleepTime); // wait for messages - if (sleepTime < 1000) + if (sleepTime < MAX_SLEEP) sleepTime += 100; } } Modified: trunk/src/jason/infra/centralised/RunCentralisedMAS.java =================================================================== --- trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-11-11 19:40:48 UTC (rev 1852) +++ trunk/src/jason/infra/centralised/RunCentralisedMAS.java 2015-11-11 20:16:54 UTC (rev 1853) @@ -57,6 +57,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import java.util.logging.ConsoleHandler; import java.util.logging.Handler; import java.util.logging.Level; @@ -597,8 +598,15 @@ @Override public void sleep() { //if (sleepingAgs.contains(this)) - // System.out.println("*** ops already slepping "+this); - sleepingAgs.add(this); + // System.out.println("*** oops already sleeping "+this); + sleepingAgs.add(this); + + // wake up the agent in 1 second anyway + Agent.getScheduler().schedule(new Runnable() { + public void run() { + wake(); + } + }, MAX_SLEEP, TimeUnit.MILLISECONDS); } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-11 19:40:50
|
Revision: 1852 http://sourceforge.net/p/jason/svn/1852 Author: jomifred Date: 2015-11-11 19:40:48 +0000 (Wed, 11 Nov 2015) Log Message: ----------- add internal action save_agent Modified Paths: -------------- trunk/release-notes.txt trunk/src/jason/stdlib/create_agent.java trunk/src/jason/stdlib/kill_agent.java trunk/src/jason/stdlib/package.html Added Paths: ----------- trunk/src/jason/stdlib/save_agent.java Modified: trunk/release-notes.txt =================================================================== --- trunk/release-notes.txt 2015-11-02 11:10:34 UTC (rev 1851) +++ trunk/release-notes.txt 2015-11-11 19:40:48 UTC (rev 1852) @@ -394,7 +394,7 @@ .... !myadd( { .print(a); .print(b) } ) .... // pass the body of the plan as parameter to !myadd - +!myadd(Action) <- .add_plan( {+!g : c & b <- Action} ). + +!myadd(Action) <-.add_plan( {+!g : c & b <- Action} ). // add a plan with a fixed event/context and body // given as a parameter Modified: trunk/src/jason/stdlib/create_agent.java =================================================================== --- trunk/src/jason/stdlib/create_agent.java 2015-11-02 11:10:34 UTC (rev 1851) +++ trunk/src/jason/stdlib/create_agent.java 2015-11-11 19:40:48 UTC (rev 1852) @@ -89,6 +89,7 @@ </ul> @see jason.stdlib.kill_agent + @see jason.stdlib.save_agent @see jason.stdlib.stopMAS @see jason.runtime.RuntimeServicesInfraTier */ Modified: trunk/src/jason/stdlib/kill_agent.java =================================================================== --- trunk/src/jason/stdlib/kill_agent.java 2015-11-02 11:10:34 UTC (rev 1851) +++ trunk/src/jason/stdlib/kill_agent.java 2015-11-11 19:40:48 UTC (rev 1852) @@ -53,6 +53,7 @@ </ul> @see jason.stdlib.create_agent + @see jason.stdlib.save_agent @see jason.stdlib.stopMAS @see jason.runtime.RuntimeServicesInfraTier Modified: trunk/src/jason/stdlib/package.html =================================================================== --- trunk/src/jason/stdlib/package.html 2015-11-02 11:10:34 UTC (rev 1851) +++ trunk/src/jason/stdlib/package.html 2015-11-11 19:40:48 UTC (rev 1852) @@ -128,6 +128,8 @@ <li>{@link jason.stdlib.wait wait}: wait some event.</li> <li>{@link jason.stdlib.create_agent create_agent}: create a new agent.</li> + <li>{@link jason.stdlib.save_agent save_agent}: store the beliefs and plans into a file.</li> + <li>{@link jason.stdlib.create_agent create_agent}: create a new agent.</li> <li>{@link jason.stdlib.kill_agent kill_agent}: kill an agent.</li> <li>{@link jason.stdlib.clone}: clone an agent.</li> <li>{@link jason.stdlib.stopMAS stopMAS}: stop all agents.</li> Added: trunk/src/jason/stdlib/save_agent.java =================================================================== --- trunk/src/jason/stdlib/save_agent.java (rev 0) +++ trunk/src/jason/stdlib/save_agent.java 2015-11-11 19:40:48 UTC (rev 1852) @@ -0,0 +1,111 @@ +//---------------------------------------------------------------------------- +// Copyright (C) 2003 Rafael H. Bordini, Jomi F. Hubner, et al. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// To contact the authors: +// http://www.inf.ufrgs.br/~bordini +// http://www.das.ufsc.br/~jomi +// +//---------------------------------------------------------------------------- + +package jason.stdlib; + +import jason.asSemantics.DefaultInternalAction; +import jason.asSemantics.TransitionSystem; +import jason.asSemantics.Unifier; +import jason.asSyntax.ListTerm; +import jason.asSyntax.ListTermImpl; +import jason.asSyntax.Literal; +import jason.asSyntax.Plan; +import jason.asSyntax.StringTerm; +import jason.asSyntax.Term; +import jason.bb.BeliefBase; + +import java.io.BufferedWriter; +import java.io.FileWriter; + +/** + <p>Internal action: <b><code>.save_agent</code></b>. + + <p>Description: stores the beliefs, rules, and plans of the agent into a file. + + <p>Parameters:<ul> + + <li>+ file name (atom, string, or variable): the name of the file. + + <li><i>+ initial goals</i> (list -- optional): list of initial goals that will be included in the file. + + </ul> + + <p>Examples:<ul> + + <li> <code>.save_agent("/tmp/x.asl")</code>: save the agent at file "/tmp/x.asl".</li> + + <li> <code>.save_agent("/tmp/x.asl", [start, say(hello)])</code>: includes <code>start</code> and <code>say(hello)</code> as initial goals.</li> + </ul> + + @see jason.stdlib.kill_agent + @see jason.stdlib.create_agent + @see jason.stdlib.stopMAS + @see jason.runtime.RuntimeServicesInfraTier +*/ +public class save_agent extends DefaultInternalAction { + + @Override public int getMinArgs() { return 1; } + @Override public int getMaxArgs() { return 2; } + + @Override + public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { + checkArguments(args); + + String fileName = null; + if (args[0].isString()) + fileName = ((StringTerm)args[0]).getString(); + else + fileName = args[0].toString(); + + ListTerm goals = new ListTermImpl(); + if (args.length > 1) + goals = (ListTerm)args[1]; + + BufferedWriter out = new BufferedWriter(new FileWriter(fileName)); + + // store beliefs (and rules) + out.append("// beliefs and rules\n"); + for (Literal b: ts.getAg().getBB()) { + b = b.copy(); + b.delSource(BeliefBase.ASelf); + out.append(b+".\n"); + } + + // store initial goals + out.append("\n\n// initial goals\n"); + for (Term g: goals) { + out.append("!"+g+".\n"); + } + + + // store plans + out.append("\n\n// plans\n"); + for (Plan p: ts.getAg().getPL()) { + if (!p.getLabel().toString().startsWith("kqmlReceived") && !p.getLabel().toString().startsWith("kqmlError")) + out.append(p+"\n"); + } + out.close(); + return true; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-11-02 11:10:36
|
Revision: 1851 http://sourceforge.net/p/jason/svn/1851 Author: jomifred Date: 2015-11-02 11:10:34 +0000 (Mon, 02 Nov 2015) Log Message: ----------- add constants in settings Modified Paths: -------------- trunk/doc/mini-tutorial/src/hello-bdi/index.html trunk/doc/mini-tutorial/src/hello-bdi/index.org trunk/src/jason/architecture/MindInspectorAgArch.java trunk/src/jason/architecture/MindInspectorWeb.java trunk/src/jason/asSemantics/Agent.java trunk/src/jason/infra/centralised/CentralisedAgArch.java trunk/src/jason/mas2j/AgentParameters.java trunk/src/jason/runtime/Settings.java trunk/src/jason/stdlib/create_agent.java Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.html =================================================================== (Binary files differ) Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.org =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-11-02 11:10:34 UTC (rev 1851) @@ -94,7 +94,7 @@ The /tell/ message that Alice sent to Bob is automatically interpreted by Jason. The default interpretation, since it is a "tell" message, is to include the content of the message (=happy(bob)=) in the Bob's belief base. When that belief is added in the belief base, the event =+happy(bob)= is included in the queue of events. Bob then reacts to this event creating an intention. You can access the [[http://localhost:3272][Jason Mind Inspector]] to see the Bob's mental state (or use the Debug button in the MAS Console): -#+ATTR_HTML: width=500 style="center;margin:0px 20px 20px 20px;" +#+ATTR_HTML: :width 500 [[./screens/mind-1.png]] As we can see, the belief is not exactly =happy(bob)= but =happy(bob)[source(alice)]=. The part enclosed by =[= and =]= are annotations. All beliefs in Jason have annotations for their sources. This information can be used, for instance, if an agent needs to consider only those beliefs that come from trustable sources: @@ -183,7 +183,7 @@ It is important to notice how many intentions Bob has: -#+ATTR_HTML: width=500 style="center;margin:0px 20px 20px 20px;" +#+ATTR_HTML: :width 500 [[./screens/mind-2.png]] Bob is concurrently executing three intentions: one for each Modified: trunk/src/jason/architecture/MindInspectorAgArch.java =================================================================== --- trunk/src/jason/architecture/MindInspectorAgArch.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/architecture/MindInspectorAgArch.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -28,6 +28,7 @@ import jason.asSyntax.Structure; import jason.control.ExecutionControlGUI; import jason.jeditplugin.Config; +import jason.runtime.Settings; import jason.util.asl2html; import jason.util.asl2xml; @@ -90,7 +91,7 @@ @Override public void init() { - setupMindInspector(getTS().getSettings().getUserParameter("mindinspector")); + setupMindInspector(getTS().getSettings().getUserParameter(Settings.MIND_INSPECTOR)); } /** Modified: trunk/src/jason/architecture/MindInspectorWeb.java =================================================================== --- trunk/src/jason/architecture/MindInspectorWeb.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/architecture/MindInspectorWeb.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -2,6 +2,7 @@ import jason.asSemantics.Agent; import jason.jeditplugin.Config; +import jason.runtime.Settings; import jason.util.asl2html; import jason.util.asl2xml; @@ -139,7 +140,7 @@ AgArch arch = ag.getTS().getUserAgArch(); if (arch != null) { // should add a new conf for mindinspector, otherwise will start a new gui for the agent - arch.getTS().getSettings().addOption("mindinspector","web(cycle,html,no_history)"); + arch.getTS().getSettings().addOption(Settings.MIND_INSPECTOR,"web(cycle,html,no_history)"); MindInspectorAgArch miArch = new MindInspectorAgArch(); arch.insertAgArch(miArch); miArch.init(); Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/asSemantics/Agent.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -546,7 +546,7 @@ } protected void addInitialBelsFromProjectInBB() { - String sBels = getTS().getSettings().getUserParameter("beliefs"); + String sBels = getTS().getSettings().getUserParameter(Settings.INIT_BELS); if (sBels != null) { try { for (Term t: ASSyntax.parseList("["+sBels+"]")) { @@ -579,7 +579,7 @@ } protected void addInitialGoalsFromProjectInBB() { - String sGoals = getTS().getSettings().getUserParameter("goals"); + String sGoals = getTS().getSettings().getUserParameter(Settings.INIT_GOALS); if (sGoals != null) { try { for (Term t: ASSyntax.parseList("["+sGoals+"]")) { Modified: trunk/src/jason/infra/centralised/CentralisedAgArch.java =================================================================== --- trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/infra/centralised/CentralisedAgArch.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -95,7 +95,7 @@ createCustomArchs(agArchClasses); // mind inspector arch - if (stts.getUserParameter("mindinspector") != null) { + if (stts.getUserParameter(Settings.MIND_INSPECTOR) != null) { insertAgArch(new MindInspectorAgArch()); getFirstAgArch().init(); } Modified: trunk/src/jason/mas2j/AgentParameters.java =================================================================== --- trunk/src/jason/mas2j/AgentParameters.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/mas2j/AgentParameters.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -218,7 +218,7 @@ if (forceSync || debug) { stts.setSync(true); } - stts.addOption("project-parameter", this); // place of copy of this object anyway + stts.addOption(Settings.PROJECT_PARAMETER, this); // place of copy of this object anyway return stts; } Modified: trunk/src/jason/runtime/Settings.java =================================================================== --- trunk/src/jason/runtime/Settings.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/runtime/Settings.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -56,6 +56,10 @@ private Map<String,Object> userParameters = new HashMap<String,Object>(); + public static final String PROJECT_PARAMETER = "project-parameter"; + public static final String INIT_BELS = "beliefs"; + public static final String INIT_GOALS = "goals"; + public static final String MIND_INSPECTOR = "mindinspector"; public Settings() { } @@ -227,6 +231,7 @@ public Map<String,Object> getUserParameters() { return userParameters; } + public String getUserParameter(String key) { String vl = (String)userParameters.get(key); if (vl != null && vl.startsWith("\"") && vl.endsWith("\"")) { @@ -235,4 +240,9 @@ } return vl; } + + public Object removeUserParameter(String key) { + return userParameters.remove(key); + } + } Modified: trunk/src/jason/stdlib/create_agent.java =================================================================== --- trunk/src/jason/stdlib/create_agent.java 2015-10-28 11:07:45 UTC (rev 1850) +++ trunk/src/jason/stdlib/create_agent.java 2015-11-02 11:10:34 UTC (rev 1851) @@ -34,6 +34,7 @@ import jason.asSyntax.Term; import jason.mas2j.ClassParameters; import jason.runtime.RuntimeServicesInfraTier; +import jason.runtime.Settings; import java.io.File; import java.util.ArrayList; @@ -129,7 +130,7 @@ } } RuntimeServicesInfraTier rs = ts.getUserAgArch().getRuntimeServices(); - name = rs.createAgent(name, source, agClass, agArchClasses, bbPars, ts.getSettings()); + name = rs.createAgent(name, source, agClass, agArchClasses, bbPars, getSettings(ts)); rs.startAgent(name); if (args[0].isVar()) @@ -138,6 +139,14 @@ return true; } + protected Settings getSettings(TransitionSystem ts) { + /*Settings s = ts.getSettings(); + s.removeUserParameter(Settings.INIT_BELS); + s.removeUserParameter(Settings.INIT_GOALS); + return s;*/ + return new Settings(); + } + protected String getName(Term[] args) { String name; if (args[0].isString()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-10-28 11:07:47
|
Revision: 1850 http://sourceforge.net/p/jason/svn/1850 Author: jomifred Date: 2015-10-28 11:07:45 +0000 (Wed, 28 Oct 2015) Log Message: ----------- update bdi hello world tutorial Modified Paths: -------------- trunk/doc/mini-tutorial/src/hello-bdi/Makefile trunk/doc/mini-tutorial/src/hello-bdi/index.html trunk/doc/mini-tutorial/src/hello-bdi/index.org trunk/doc/mini-tutorial/src/hello-bdi/jcm.css Modified: trunk/doc/mini-tutorial/src/hello-bdi/Makefile =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/Makefile 2015-10-19 08:28:05 UTC (rev 1849) +++ trunk/doc/mini-tutorial/src/hello-bdi/Makefile 2015-10-28 11:07:45 UTC (rev 1850) @@ -7,6 +7,7 @@ cp jcm.css ../../hello-bdi cp -R screens ../../hello-bdi cp -R code ../../hello-bdi + find . -name .DS_Store -exec rm {} \; publish: scp index.html jomifred,ja...@we...:/home/groups/j/ja/jason/htdocs/mini-tutorial/hello-bdi Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.html =================================================================== (Binary files differ) Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.org =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-10-19 08:28:05 UTC (rev 1849) +++ trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-10-28 11:07:45 UTC (rev 1850) @@ -8,8 +8,9 @@ #+LANGUAGE: pt #+OPTIONS: email:t H:2 toc:2 num:nil author:t \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t #+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:t pri:nil tags:nil -#+STYLE: <link rel="stylesheet" type="text/css" href="./jcm.css" /> +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="./jcm.css" /> + * Introduction This programming (mini) tutorial will illustrate how the BDI model is used in the [[http://jason.sf.net][Jason]] agent-oriented programming language. We start by a very simple agent code and progress exploring the BDI features of Jason. @@ -162,7 +163,7 @@ intention to react to the event. The first plan for =+happy(H)= is used when =H= is =bob= and the -source of =happy(H)= is sincere ([[http://jason.sourceforge.net/api/jason/stdlib/my_name.html][=.my\_name=]] is true if the value of +source of =happy(H)= is sincere ([[http://jason.sourceforge.net/api/jason/stdlib/my_name.html][=.my_name=]] is true if the value of =H= is the name of the agent executing that internal action). The second plan is used otherwise. The first plan for =+!say(X)= is used in days other than Monday and the second on Fridays. (Notice that @@ -275,7 +276,7 @@ +today(saturday) <- .print("**** weekend!"); .drop_all_intentions. +!enter_lazy_mode - : .findall(A, .intend(say(A)), [_,_|L]) // the agent has two say intentions + : .findall(A, .intend(say(A)), [_,_|L]) // the agent has at most two active "say" intentions <- for ( .member(I,L) ) { .suspend(say(I)); }. Modified: trunk/doc/mini-tutorial/src/hello-bdi/jcm.css =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/jcm.css 2015-10-19 08:28:05 UTC (rev 1849) +++ trunk/doc/mini-tutorial/src/hello-bdi/jcm.css 2015-10-28 11:07:45 UTC (rev 1850) @@ -41,6 +41,14 @@ padding-right: 10px; } +.subtitle { + color:#48005E; + font-weight: normal; + font-size: medium; + font-family: "Helvetica Neue Light", Optima, Garamond, Times; + text-align: center; +} + H1 { color:#48005E; font-size: 150%; font-weight:200; @@ -91,3 +99,42 @@ /*border: 1px solid black;*/ font-family: Courier, fixed, serif; } + +code +{ + white-space: pre; + font-family: Courier, fixed, serif; +} + +#table-of-contents { + font-size: 10pt; + position: fixed; + right: 0em; + top: 0em; + background: white; + line-height: 12pt; + text-align: right; + box-shadow: 0 0 1em #777777; + -webkit-box-shadow: 0 0 1em #777777; + -moz-box-shadow: 0 0 1em #777777; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-bottomleft: 5px; + /* ensure doesn't flow off the screen when expanded */ + max-height: 80%; + overflow: auto; } +#table-of-contents h2 { + font-size: 13pt; + max-width: 9em; + border: 0; + font-weight: normal; + padding-left: 0.5em; + padding-right: 0.5em; + padding-top: 0.05em; + padding-bottom: 0.05em; } +#table-of-contents #text-table-of-contents { + display: none; + text-align: left; } +#table-of-contents:hover #text-table-of-contents { + display: block; + padding: 0.5em; + margin-top: -1.5em; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-10-19 08:28:07
|
Revision: 1849 http://sourceforge.net/p/jason/svn/1849 Author: jomifred Date: 2015-10-19 08:28:05 +0000 (Mon, 19 Oct 2015) Log Message: ----------- add setTimeout in TimeSteppedEnvironment.java Modified Paths: -------------- trunk/src/jason/environment/TimeSteppedEnvironment.java Modified: trunk/src/jason/environment/TimeSteppedEnvironment.java =================================================================== --- trunk/src/jason/environment/TimeSteppedEnvironment.java 2015-10-16 19:11:52 UTC (rev 1848) +++ trunk/src/jason/environment/TimeSteppedEnvironment.java 2015-10-19 08:28:05 UTC (rev 1849) @@ -84,11 +84,18 @@ stepStarted(step); } + /** defines the time for a pause between cycles */ public void setSleep(int s) { sleep = s; } + public void setTimeout(int to) { + stepTimeout = to; + if (timeoutThread != null) + timeoutThread.timeout = to; + } + @Override public void stop() { super.stop(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-10-16 19:11:55
|
Revision: 1848 http://sourceforge.net/p/jason/svn/1848 Author: jomifred Date: 2015-10-16 19:11:52 +0000 (Fri, 16 Oct 2015) Log Message: ----------- improve create agent (so that jacamo can override it) Modified Paths: -------------- trunk/doc/index.html trunk/src/jason/asSemantics/Agent.java trunk/src/jason/asSyntax/directives/Include.java trunk/src/jason/stdlib/create_agent.java Modified: trunk/doc/index.html =================================================================== --- trunk/doc/index.html 2015-10-08 17:00:01 UTC (rev 1847) +++ trunk/doc/index.html 2015-10-16 19:11:52 UTC (rev 1848) @@ -17,7 +17,7 @@ <li><a href="faq.html">FAQ</a> (html)</li><br/> -<li><a href="api/jason/stdlib/package-summary.html#package.description">Stantard internal actions</a> (html)</li> +<li><a href="api/jason/stdlib/package-summary.html#package_description">Stantard internal actions</a> (html)</li> <li><a href="api/jason/functions/package-summary.html">Stantard arithmetic functions</a> (html)</li> <li>API of all classes: generated by <a href="api/index.html">JavaDoc</a>.</li><br> Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-10-08 17:00:01 UTC (rev 1847) +++ trunk/src/jason/asSemantics/Agent.java 2015-10-16 19:11:52 UTC (rev 1848) @@ -455,6 +455,10 @@ return objIA; } + public void setIA(String iaName, InternalAction ia) { + internalActions.put(iaName, ia); + } + public void initDefaultFunctions() { if (functions == null) functions = new HashMap<String, ArithFunction>(); Modified: trunk/src/jason/asSyntax/directives/Include.java =================================================================== --- trunk/src/jason/asSyntax/directives/Include.java 2015-10-08 17:00:01 UTC (rev 1847) +++ trunk/src/jason/asSyntax/directives/Include.java 2015-10-16 19:11:52 UTC (rev 1848) @@ -46,7 +46,7 @@ file = checkPathAndFixWithSourcePath(file, aslSourcePath, outerPrefix); in = new URL(file).openStream(); - } if (outerPrefix.startsWith(CRPrefix)) { + } else if (outerPrefix.startsWith(CRPrefix)) { // outer is loaded from a resource ("application".jar) file, used for java web start int posSlash = outerPrefix.lastIndexOf("/"); Modified: trunk/src/jason/stdlib/create_agent.java =================================================================== --- trunk/src/jason/stdlib/create_agent.java 2015-10-08 17:00:01 UTC (rev 1847) +++ trunk/src/jason/stdlib/create_agent.java 2015-10-16 19:11:52 UTC (rev 1848) @@ -108,6 +108,37 @@ public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { checkArguments(args); + String name = getName(args); + String source = getSource(args); + + List<String> agArchClasses = getAgArchClasses(args); + + String agClass = null; + ClassParameters bbPars = null; + if (args.length > 2) { // optional parameter + // get the parameters + for (Term t: (ListTerm)args[2]) { + if (t.isStructure()) { + Structure s = (Structure)t; + if (s.getFunctor().equals("beliefBaseClass")) { + bbPars = new ClassParameters(testString(s.getTerm(0))); + } else if (s.getFunctor().equals("agentClass")) { + agClass = testString(s.getTerm(0)).toString(); + } + } + } + } + RuntimeServicesInfraTier rs = ts.getUserAgArch().getRuntimeServices(); + name = rs.createAgent(name, source, agClass, agArchClasses, bbPars, ts.getSettings()); + rs.startAgent(name); + + if (args[0].isVar()) + return un.unifies(new StringTermImpl(name), args[0]); + else + return true; + } + + protected String getName(Term[] args) { String name; if (args[0].isString()) name = ((StringTerm)args[0]).getString(); @@ -116,7 +147,10 @@ if (args[0].isVar()) name = name.substring(0,1).toLowerCase() + name.substring(1); - + return name; + } + + protected String getSource(Term[] args) throws JasonException { String source = null; if (args.length > 1) { @@ -132,33 +166,23 @@ } source = fSource.getAbsolutePath(); } - - String agClass = null; + return source; + } + + protected List<String> getAgArchClasses(Term[] args) { List<String> agArchClasses = new ArrayList<String>(); - ClassParameters bbPars = null; if (args.length > 2) { // optional parameter // get the parameters for (Term t: (ListTerm)args[2]) { if (t.isStructure()) { Structure s = (Structure)t; - if (s.getFunctor().equals("beliefBaseClass")) { - bbPars = new ClassParameters(testString(s.getTerm(0))); - } else if (s.getFunctor().equals("agentClass")) { - agClass = testString(s.getTerm(0)).toString(); - } else if (s.getFunctor().equals("agentArchClass")) { + if (s.getFunctor().equals("agentArchClass")) { agArchClasses.add(testString(s.getTerm(0)).toString()); } } } } - RuntimeServicesInfraTier rs = ts.getUserAgArch().getRuntimeServices(); - name = rs.createAgent(name, source, agClass, agArchClasses, bbPars, ts.getSettings()); - rs.startAgent(name); - - if (args[0].isVar()) - return un.unifies(new StringTermImpl(name), args[0]); - else - return true; + return agArchClasses; } private Structure testString(Term t) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-10-08 17:00:04
|
Revision: 1847 http://sourceforge.net/p/jason/svn/1847 Author: jomifred Date: 2015-10-08 17:00:01 +0000 (Thu, 08 Oct 2015) Log Message: ----------- fix include Modified Paths: -------------- trunk/src/jason/asSemantics/Agent.java trunk/src/jason/stdlib/include.java Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-10-08 08:25:34 UTC (rev 1846) +++ trunk/src/jason/asSemantics/Agent.java 2015-10-08 17:00:01 UTC (rev 1847) @@ -174,8 +174,6 @@ load(asSrc); } - private boolean initialLoadAlreadyDone = false; - /** parse and load the initial agent code, asSrc may be null */ public void load(String asSrc) throws JasonException { // set the agent @@ -203,20 +201,16 @@ if (getPL().hasMetaEventPlans()) getTS().addGoalListener(new GoalListenerForMetaEvents(getTS())); - if (!initialLoadAlreadyDone) // to avoid loading it twice - addInitialBelsFromProjectInBB(); + addInitialBelsFromProjectInBB(); addInitialBelsInBB(); - if (!initialLoadAlreadyDone) - addInitialGoalsFromProjectInBB(); + addInitialGoalsFromProjectInBB(); addInitialGoalsInTS(); fixAgInIAandFunctions(this); // used to fix agent reference in functions used inside includes } - if (!initialLoadAlreadyDone) // to avoid loading it twice - loadKqmlPlans(); + loadKqmlPlans(); setASLSrc(asSrc); - initialLoadAlreadyDone = true; } catch (Exception e) { logger.log(Level.SEVERE, "Error creating customised Agent class!", e); throw new JasonException("Error creating customised Agent class! - " + e); @@ -577,6 +571,7 @@ g.addAnnot(BeliefBase.TSelf); getTS().getC().addAchvGoal(g,Intention.EmptyInt); } + initialGoals.clear(); } protected void addInitialGoalsFromProjectInBB() { Modified: trunk/src/jason/stdlib/include.java =================================================================== --- trunk/src/jason/stdlib/include.java 2015-10-08 08:25:34 UTC (rev 1846) +++ trunk/src/jason/stdlib/include.java 2015-10-08 17:00:01 UTC (rev 1847) @@ -28,7 +28,7 @@ import jason.asSemantics.DefaultInternalAction; import jason.asSemantics.TransitionSystem; import jason.asSemantics.Unifier; -import jason.asSyntax.StringTerm; +import jason.asSyntax.Pred; import jason.asSyntax.Term; import jason.asSyntax.directives.DirectiveProcessor; import jason.asSyntax.directives.Include; @@ -61,17 +61,18 @@ @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { checkArguments(args); - Agent ag = ts.getAg(); - String originalSrc = ag.getASLSrc(); // the source file that has the include directive - String file = ((StringTerm)args[0]).getString(); - - file = Include.checkPathAndFixWithSourcePath( - file, - ((Include)DirectiveProcessor.getDirective("include")).getSourcePaths(), + Agent ag = ts.getAg(); + Pred inc = new Pred("include"); + inc.addTerm(args[0]); + + Agent result = ((Include)DirectiveProcessor.getDirective("include")).process( + inc, + ag, null); - ts.getAg().load( file ); - ts.getAg().setASLSrc(originalSrc); + ag.importComponents(result); + ag.addInitialBelsInBB(); + ag.addInitialGoalsInTS(); return true; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-10-08 08:25:36
|
Revision: 1846 http://sourceforge.net/p/jason/svn/1846 Author: jomifred Date: 2015-10-08 08:25:34 +0000 (Thu, 08 Oct 2015) Log Message: ----------- include internal action lower_case, upper_case, and include Modified Paths: -------------- trunk/release-notes.txt trunk/src/jason/asSemantics/Agent.java trunk/src/jason/asSyntax/directives/Include.java trunk/src/jason/stdlib/package.html Added Paths: ----------- trunk/src/jason/stdlib/include.java trunk/src/jason/stdlib/lower_case.java trunk/src/jason/stdlib/upper_case.java Modified: trunk/release-notes.txt =================================================================== --- trunk/release-notes.txt 2015-09-24 15:08:01 UTC (rev 1845) +++ trunk/release-notes.txt 2015-10-08 08:25:34 UTC (rev 1846) @@ -20,8 +20,9 @@ - .asserta: inserts a belief (or rule) in the begin of the belief base (can be used in prolog like rules) - .assertz: inserts a belief (or rule) in the end of the belief base (can be used in prolog like rules) - .relevant_rules: gets rules with a specified head +- .lower_case and upper_case for strings +- .include: to load an asl source code at run time - New Tutorial on BDI (see doc/index.html) --------------------------- Modified: trunk/src/jason/asSemantics/Agent.java =================================================================== --- trunk/src/jason/asSemantics/Agent.java 2015-09-24 15:08:01 UTC (rev 1845) +++ trunk/src/jason/asSemantics/Agent.java 2015-10-08 08:25:34 UTC (rev 1846) @@ -173,8 +173,10 @@ initAg(); load(asSrc); } - - /** parse and load the agent code, asSrc may be null */ + + private boolean initialLoadAlreadyDone = false; + + /** parse and load the initial agent code, asSrc may be null */ public void load(String asSrc) throws JasonException { // set the agent try { @@ -201,42 +203,52 @@ if (getPL().hasMetaEventPlans()) getTS().addGoalListener(new GoalListenerForMetaEvents(getTS())); - addInitialBelsFromProjectInBB(); + if (!initialLoadAlreadyDone) // to avoid loading it twice + addInitialBelsFromProjectInBB(); addInitialBelsInBB(); - addInitialGoalsFromProjectInBB(); + if (!initialLoadAlreadyDone) + addInitialGoalsFromProjectInBB(); addInitialGoalsInTS(); fixAgInIAandFunctions(this); // used to fix agent reference in functions used inside includes } - // load kqml plans at the end of the ag PL - Config c = Config.get(); - if (c.getKqmlPlansFile().equals(Message.kqmlDefaultPlans)) { - // load default implementation - // if KQML functor is not changed - if (c.getKqmlFunctor().equals(Message.kqmlReceivedFunctor)) { - String file = Message.kqmlDefaultPlans.substring(Message.kqmlDefaultPlans.indexOf("/")); - if (JasonException.class.getResource(file) != null) { - setASLSrc("kqmlPlans.asl"); - parseAS(JasonException.class.getResource(file)); - } else { - logger.warning("The kqmlPlans.asl was not found!"); - } - } - } else { - // load from specified file - try { - parseAS(new File(c.getKqmlPlansFile())); - } catch (Exception e) { - logger.warning("Error reading kqml semantic plans. "+e+". from file "+c.getKqmlPlansFile()); - } - } + if (!initialLoadAlreadyDone) // to avoid loading it twice + loadKqmlPlans(); + setASLSrc(asSrc); + initialLoadAlreadyDone = true; } catch (Exception e) { logger.log(Level.SEVERE, "Error creating customised Agent class!", e); throw new JasonException("Error creating customised Agent class! - " + e); } } + + public void loadKqmlPlans() { + // load kqml plans at the end of the ag PL + Config c = Config.get(); + if (c.getKqmlPlansFile().equals(Message.kqmlDefaultPlans)) { + // load default implementation + // if KQML functor is not changed + if (c.getKqmlFunctor().equals(Message.kqmlReceivedFunctor)) { + String file = Message.kqmlDefaultPlans.substring(Message.kqmlDefaultPlans.indexOf("/")); + if (JasonException.class.getResource(file) != null) { + setASLSrc("kqmlPlans.asl"); + parseAS(JasonException.class.getResource(file)); + } else { + logger.warning("The kqmlPlans.asl was not found!"); + } + } + } else { + // load from specified file + try { + parseAS(new File(c.getKqmlPlansFile())); + } catch (Exception e) { + logger.warning("Error reading kqml semantic plans. "+e+". from file "+c.getKqmlPlansFile()); + } + } + } + /** @deprecated Prefer the initAg method with only the source code of the agent as parameter. * * A call of this method like Modified: trunk/src/jason/asSyntax/directives/Include.java =================================================================== --- trunk/src/jason/asSyntax/directives/Include.java 2015-09-24 15:08:01 UTC (rev 1845) +++ trunk/src/jason/asSyntax/directives/Include.java 2015-10-08 08:25:34 UTC (rev 1846) @@ -93,6 +93,10 @@ aslSourcePath = sp; } + public List<String> getSourcePaths() { + return aslSourcePath; + } + /** fix path of the asl code based on aslSourcePath, also considers code from a jar file (if urlPrefix is not null) */ public static String checkPathAndFixWithSourcePath(String f, List<String> srcpath, String urlPrefix) { if (urlPrefix == null || urlPrefix.length() == 0) { Added: trunk/src/jason/stdlib/include.java =================================================================== --- trunk/src/jason/stdlib/include.java (rev 0) +++ trunk/src/jason/stdlib/include.java 2015-10-08 08:25:34 UTC (rev 1846) @@ -0,0 +1,77 @@ +//---------------------------------------------------------------------------- +// Copyright (C) 2003 Rafael H. Bordini, Jomi F. Hubner, et al. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// To contact the authors: +// http://www.inf.ufrgs.br/~bordini +// http://www.das.ufsc.br/~jomi +// +//---------------------------------------------------------------------------- + +package jason.stdlib; + +import jason.JasonException; +import jason.asSemantics.Agent; +import jason.asSemantics.DefaultInternalAction; +import jason.asSemantics.TransitionSystem; +import jason.asSemantics.Unifier; +import jason.asSyntax.StringTerm; +import jason.asSyntax.Term; +import jason.asSyntax.directives.DirectiveProcessor; +import jason.asSyntax.directives.Include; + +/** + <p>Internal action: <b><code>.include</code></b>. + + <p>Description: loads an .asl file, i.e., includes beliefs, goals, and plans from a file. + + <p>Parameters:<ul> + <li>+ the file (string): the file name.<br/> + </ul> + + <p>Examples:<ul> + <li> <code>.include("x.asl")</code>.</li> + </ul> + + */ +public class include extends DefaultInternalAction { + + @Override public int getMinArgs() { return 1; } + @Override public int getMaxArgs() { return 1; } + + @Override protected void checkArguments(Term[] args) throws JasonException { + super.checkArguments(args); // check number of arguments + if (!args[0].isString()) + throw JasonException.createWrongArgument(this,"first argument must be a string."); + } + + @Override public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { + checkArguments(args); + + Agent ag = ts.getAg(); + String originalSrc = ag.getASLSrc(); // the source file that has the include directive + String file = ((StringTerm)args[0]).getString(); + + file = Include.checkPathAndFixWithSourcePath( + file, + ((Include)DirectiveProcessor.getDirective("include")).getSourcePaths(), + null); + + ts.getAg().load( file ); + ts.getAg().setASLSrc(originalSrc); + return true; + } +} Added: trunk/src/jason/stdlib/lower_case.java =================================================================== --- trunk/src/jason/stdlib/lower_case.java (rev 0) +++ trunk/src/jason/stdlib/lower_case.java 2015-10-08 08:25:34 UTC (rev 1846) @@ -0,0 +1,57 @@ + +package jason.stdlib; + +import jason.asSemantics.DefaultInternalAction; +import jason.asSemantics.InternalAction; +import jason.asSemantics.TransitionSystem; +import jason.asSemantics.Unifier; +import jason.asSyntax.StringTerm; +import jason.asSyntax.StringTermImpl; +import jason.asSyntax.Term; + +/** + <p>Internal action: <b><code>.lower_case(S1,S2)</code></b>. + + <p>Description: converts the string S1 into lower case S2. + + <p>Parameters:<ul> + <li>+ S1 (a term). The term representation as a string will be used.<br/> + <li>-/+ S2 (a string).<br/> + </ul> + + <p>Examples:<ul> + <li> <code>.lower_case("CArtAgO",X)</code>: unifies X with "cartago". + </ul> + + @see jason.stdlib.concat + @see jason.stdlib.delete + @see jason.stdlib.length + @see jason.stdlib.reverse + +*/ +public class lower_case extends DefaultInternalAction { + + private static InternalAction singleton = null; + public static InternalAction create() { + if (singleton == null) + singleton = new lower_case(); + return singleton; + } + + @Override public int getMinArgs() { return 2; } + @Override public int getMaxArgs() { return 2; } + + @Override + public Object execute(TransitionSystem ts, final Unifier un, final Term[] args) throws Exception { + checkArguments(args); + + String arg = null; + if (args[0].isString()) + arg = ((StringTerm)args[0]).getString(); + else + arg = args[0].toString(); + arg = arg.toLowerCase(); + return un.unifies(new StringTermImpl(arg), args[1]); + } +} + Modified: trunk/src/jason/stdlib/package.html =================================================================== --- trunk/src/jason/stdlib/package.html 2015-09-24 15:08:01 UTC (rev 1845) +++ trunk/src/jason/stdlib/package.html 2015-10-08 08:25:34 UTC (rev 1846) @@ -93,6 +93,8 @@ <li>{@link jason.stdlib.substring substring}: test substrings of strings. </li> <li>{@link jason.stdlib.string string}: check whether an argument is a string.</li> <li>{@link jason.stdlib.term2string term2string}: convert terms to strings and vice-versa.</li> + <li>{@link jason.stdlib.lower_case lower_case}: lower case strings.</li> + <li>{@link jason.stdlib.upper_case upper_case}: upper case strings.</li> </ul> <h2>Execution control</h2> @@ -137,6 +139,8 @@ <li>{@link jason.stdlib.range range}: backtrack values in a range (used in <b>for</b>).</li> <li>{@link jason.stdlib.random random}: produces random numbers.</li> + + <li>{@link jason.stdlib.include include}: loads a source code at run time.</li> </ul> </body> Added: trunk/src/jason/stdlib/upper_case.java =================================================================== --- trunk/src/jason/stdlib/upper_case.java (rev 0) +++ trunk/src/jason/stdlib/upper_case.java 2015-10-08 08:25:34 UTC (rev 1846) @@ -0,0 +1,56 @@ + +package jason.stdlib; + +import jason.asSemantics.DefaultInternalAction; +import jason.asSemantics.InternalAction; +import jason.asSemantics.TransitionSystem; +import jason.asSemantics.Unifier; +import jason.asSyntax.StringTerm; +import jason.asSyntax.StringTermImpl; +import jason.asSyntax.Term; + +/** + <p>Internal action: <b><code>.upper_case(S1,S2)</code></b>. + + <p>Description: converts the string S1 into upper case S2. + + <p>Parameters:<ul> + <li>+ S1 (a term). The term representation as a string will be used.<br/> + <li>-/+ S2 (a string).<br/> + </ul> + + <p>Examples:<ul> + <li> <code>.upper_case("CArtAgO",X)</code>: unifies X with "CARTAGO". + </ul> + + @see jason.stdlib.concat + @see jason.stdlib.delete + @see jason.stdlib.length + @see jason.stdlib.reverse + +*/ +public class upper_case extends DefaultInternalAction { + + private static InternalAction singleton = null; + public static InternalAction create() { + if (singleton == null) + singleton = new upper_case(); + return singleton; + } + + @Override public int getMinArgs() { return 2; } + @Override public int getMaxArgs() { return 2; } + + @Override + public Object execute(TransitionSystem ts, final Unifier un, final Term[] args) throws Exception { + checkArguments(args); + String arg = null; + if (args[0].isString()) + arg = ((StringTerm)args[0]).getString(); + else + arg = args[0].toString(); + arg = arg.toUpperCase(); + return un.unifies(new StringTermImpl(arg), args[1]); + } +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-09-24 15:08:04
|
Revision: 1845 http://sourceforge.net/p/jason/svn/1845 Author: jomifred Date: 2015-09-24 15:08:01 +0000 (Thu, 24 Sep 2015) Log Message: ----------- improve Jade Launcher Modified Paths: -------------- trunk/src/jason/infra/jade/RunJadeMAS.java trunk/src/jason/jeditplugin/Config.java trunk/src/jason/mas2j/ClassParameters.java Modified: trunk/src/jason/infra/jade/RunJadeMAS.java =================================================================== --- trunk/src/jason/infra/jade/RunJadeMAS.java 2015-09-22 18:47:50 UTC (rev 1844) +++ trunk/src/jason/infra/jade/RunJadeMAS.java 2015-09-24 15:08:01 UTC (rev 1845) @@ -48,6 +48,7 @@ import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Vector; @@ -91,6 +92,7 @@ runner.finish(); } + @Override public int init(String[] args) { // test if a container is informed @@ -113,6 +115,17 @@ createAgs(); } } + + public void addInitArgs(String[] args) { + for (String a: args) { + initArgs.addAll( Arrays.asList(a.split(" "))); + } + for (String a: initArgs) { + if (a.equals("-sniffer")) { + Config.get().put(Config.JADE_SNIFFER, "true"); + } + } + } @Override public void createButtons() { @@ -228,8 +241,8 @@ String agName = ap.name; if (ap.getHost() != null && targetContainer != null && !ap.getHost().equals(targetContainer)) continue; // skip this agent, it is not for this container - if (ap.getHost() == null && !profile.getBooleanProperty(Profile.MAIN, true)) - continue; // skip this agent, agents without host will be placed in the main container + if (ap.getHost() == null && !profile.getBooleanProperty(Profile.MAIN, true) && !Config.get().getClass().getName().equals("jacamo.util.Config")) + continue; // skip this agent, agents without host will be placed in the main container (but not in JaCaMo) // mind inspector arch if (ap.getOption("mindinspector") != null) { Modified: trunk/src/jason/jeditplugin/Config.java =================================================================== --- trunk/src/jason/jeditplugin/Config.java 2015-09-22 18:47:50 UTC (rev 1844) +++ trunk/src/jason/jeditplugin/Config.java 2015-09-24 15:08:01 UTC (rev 1845) @@ -97,6 +97,7 @@ protected static String configFactory = null; public static void setClassFactory(String f) { + singleton = null; configFactory = f; } Modified: trunk/src/jason/mas2j/ClassParameters.java =================================================================== --- trunk/src/jason/mas2j/ClassParameters.java 2015-09-22 18:47:50 UTC (rev 1844) +++ trunk/src/jason/mas2j/ClassParameters.java 2015-09-24 15:08:01 UTC (rev 1845) @@ -1,11 +1,13 @@ package jason.mas2j; +import jason.asSyntax.Structure; +import jason.asSyntax.Term; + import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; -import jason.asSyntax.*; - /** * Used to store class parameters in .mas2j file, e.g. * environment: Mars(a,b,c); @@ -51,6 +53,9 @@ public void addParameter(String s) { parameters.add(s); } + public Collection<String> getParameters() { + return parameters; + } public String getParameter(int index) { return parameters.get(index); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-09-22 18:47:53
|
Revision: 1844 http://sourceforge.net/p/jason/svn/1844 Author: jomifred Date: 2015-09-22 18:47:50 +0000 (Tue, 22 Sep 2015) Log Message: ----------- the first parameter of .nth can be a variable (to discover the index of same element of a list) Modified Paths: -------------- trunk/src/jason/runtime/MASConsoleColorGUI.java trunk/src/jason/runtime/MASConsoleGUI.java trunk/src/jason/stdlib/nth.java trunk/src/test/RuleTest.java Modified: trunk/src/jason/runtime/MASConsoleColorGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-08-04 12:47:36 UTC (rev 1843) +++ trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-09-22 18:47:50 UTC (rev 1844) @@ -10,6 +10,7 @@ import javax.swing.JScrollPane; import javax.swing.JTextPane; +import javax.swing.SwingUtilities; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.DefaultCaret; @@ -57,7 +58,7 @@ } @Override - public void append(String agName, String s) { + public void append(final String agName, String s) { try { Color c = null; if (agName != null) { @@ -77,19 +78,22 @@ MASColorTextPane ta = agsTextArea.get(agName); if (ta == null) { // add new tab for the agent - synchronized (this) { - ta = new MASColorTextPane(Color.black); - ta.setEditable(false); - ((DefaultCaret)ta.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); - agsTextArea.put(agName, ta); - int i = 0; - for (; i<tabPane.getTabCount(); i++) { - if (agName.toUpperCase().compareTo( tabPane.getTitleAt(i).toUpperCase()) < 0) - break; + ta = new MASColorTextPane(Color.black); + ta.setEditable(false); + ((DefaultCaret)ta.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); + final MASColorTextPane cta = ta; + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + agsTextArea.put(agName, cta); + int i = 0; + for (; i<tabPane.getTabCount(); i++) { + if (agName.toUpperCase().compareTo( tabPane.getTitleAt(i).toUpperCase()) < 0) + break; + } + tabPane.add(new JScrollPane(cta),i); + tabPane.setTitleAt(i, agName); } - tabPane.add(new JScrollPane(ta),i); - tabPane.setTitleAt(i, agName); - } + }); } if (ta != null) { // print out Modified: trunk/src/jason/runtime/MASConsoleGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleGUI.java 2015-08-04 12:47:36 UTC (rev 1843) +++ trunk/src/jason/runtime/MASConsoleGUI.java 2015-09-22 18:47:50 UTC (rev 1844) @@ -45,6 +45,7 @@ import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextArea; +import javax.swing.SwingUtilities; import javax.swing.text.DefaultCaret; /** the GUI console to output log messages */ @@ -178,7 +179,7 @@ append(null, s); } - public void append(String agName, String s) { + public void append(final String agName, String s) { try { if (!frame.isVisible()) { frame.setVisible(true); @@ -192,8 +193,13 @@ ta = new JTextArea(); ta.setEditable(false); ((DefaultCaret)ta.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); - agsTextArea.put(agName, ta); - tabPane.add(agName, new JScrollPane(ta)); + final JTextArea cta = ta; + SwingUtilities.invokeAndWait(new Runnable() { + public void run() { + agsTextArea.put(agName, cta); + tabPane.add(agName, new JScrollPane(cta)); + } + }); } if (ta != null) { if (ta.getDocument().getLength() > 100000) { Modified: trunk/src/jason/stdlib/nth.java =================================================================== --- trunk/src/jason/stdlib/nth.java 2015-08-04 12:47:36 UTC (rev 1843) +++ trunk/src/jason/stdlib/nth.java 2015-09-22 18:47:50 UTC (rev 1844) @@ -1,16 +1,24 @@ package jason.stdlib; -import jason.*; -import jason.asSemantics.*; -import jason.asSyntax.*; +import jason.JasonException; +import jason.asSemantics.DefaultInternalAction; +import jason.asSemantics.InternalAction; +import jason.asSemantics.TransitionSystem; +import jason.asSemantics.Unifier; +import jason.asSyntax.ASSyntax; +import jason.asSyntax.ListTerm; +import jason.asSyntax.NumberTerm; +import jason.asSyntax.Term; +import java.util.Iterator; + /** <p>Internal action: <b><code>.nth</code></b>. <p>Description: gets the nth term of a list. <p>Parameters:<ul> -<li>+ index (integer): the position of the term, the first term is at position 0.<br/> +<li>-/+ index (integer): the position of the term (the first term is at position 0)<br/> <li>+ list (list): the list where to get the term from.<br/> <li>-/+ term (term): the term at position <i>index</i> in the <i>list</i>.<br/> </ul> @@ -21,6 +29,7 @@ <li> <code>.nth(0,[a,b,c],d)</code>: false. <li> <code>.nth(0,[a,b,c],a)</code>: true. <li> <code>.nth(5,[a,b,c],X)</code>: error. +<li> <code>.nth(X,[a,b,c,a,e],a)</code>: unifies <code>X</code> with <code>0</code> (and <code>3</code> if it backtracks). </ul> @see jason.stdlib.concat @@ -52,26 +61,69 @@ @Override protected void checkArguments(Term[] args) throws JasonException { super.checkArguments(args); // check number of arguments - if (!args[0].isNumeric()) { - throw JasonException.createWrongArgument(this,"first argument should be numeric and not '"+args[0]+"'."); + if (!args[0].isNumeric() && !args[0].isVar()) { + throw JasonException.createWrongArgument(this,"the first argument should be numeric or a variable -- not '"+args[0]+"'."); } if (!args[1].isList()) { - throw JasonException.createWrongArgument(this,"second argument should be a list and not '"+args[1]+"'."); + throw JasonException.createWrongArgument(this,"the second argument should be a list and not '"+args[1]+"'."); } } @Override - public Object execute(TransitionSystem ts, Unifier un, Term[] args) throws Exception { + public Object execute(TransitionSystem ts, final Unifier un, final Term[] args) throws Exception { checkArguments(args); - int index = (int)((NumberTerm)args[0]).solve(); ListTerm list = (ListTerm)args[1]; - if (index < 0 || index >= list.size()) { - throw new JasonException("nth: index "+index+" is out of bounds ("+list.size()+")"); + if (args[0].isNumeric()) { + int index = (int)((NumberTerm)args[0]).solve(); + + if (index < 0 || index >= list.size()) { + throw new JasonException("nth: index "+index+" is out of bounds ("+list.size()+")"); + } + + return un.unifies(args[2], list.get(index)); } - Term element = list.get(index); + + if (args[0].isVar()) { + + final Iterator<Term> ilist = list.iterator(); + + // return all indexes for thirds arg + return new Iterator<Unifier>() { + int index = -1; + Unifier c = null; // the current response (which is an unifier) + + public boolean hasNext() { + if (c == null) // the first call of hasNext should find the first response + find(); + return c != null; + } - return un.unifies(args[2], element); + public Unifier next() { + if (c == null) find(); + Unifier b = c; + find(); // find next response + return b; + } + + void find() { + while (ilist.hasNext()) { + index++; + Term candidate = ilist.next(); + c = un.clone(); + if (c.unifiesNoUndo( args[2], candidate)) { + c.unifies(args[0], ASSyntax.createNumber(index)); + return; // found another response + } + } + c = null; // no more sublists found + } + + public void remove() {} + }; + + } + return false; } } Modified: trunk/src/test/RuleTest.java =================================================================== --- trunk/src/test/RuleTest.java 2015-08-04 12:47:36 UTC (rev 1843) +++ trunk/src/test/RuleTest.java 2015-09-22 18:47:50 UTC (rev 1844) @@ -1,5 +1,6 @@ package test; +import jason.RevisionFailedException; import jason.asSemantics.Agent; import jason.asSemantics.Unifier; import jason.asSyntax.ASSyntax; @@ -10,6 +11,9 @@ import jason.asSyntax.Term; import jason.asSyntax.VarTerm; import jason.asSyntax.parser.ParseException; +import static jason.asSyntax.ASSyntax.parseLiteral; +import static jason.asSyntax.ASSyntax.parseFormula; +import static jason.asSyntax.ASSyntax.createRule; import java.util.HashMap; import java.util.Iterator; @@ -163,6 +167,57 @@ assertEquals("+!test4 <- .add_plan({ +!g : v <- .print(ok) },self,end); !test4a.", t.toString()); } + public void testMaiquel() throws ParseException, RevisionFailedException { + Agent ag = new Agent(); + ag.initAg(); + //first rule: rule1(X):-teste(X)¬(prop(X))&X + ag.addBel(createRule(parseLiteral("rule1(X)"), parseFormula("teste(X)¬(prop(X))&X"))); + + //second rule: rule2(X):-teste(X)&X¬(prop(X)) + ag.addBel(createRule(parseLiteral("rule2(X)"), parseFormula("teste(X)&X¬(prop(X))"))); + + //asserting some facts + //ag.addBel(parseLiteral("teste(p(K))")); // original proposal and the cause of the problem => test does not produce a ground literal + ag.addBel(parseLiteral("teste(p(tom))")); // correction + ag.addBel(parseLiteral("teste(p(bob))")); // correction + + + ag.addBel(parseLiteral("p(tom)")); + ag.addBel(parseLiteral("p(bob)")); + /* + Iterator<Unifier> it1 = parseFormula("rule1(A)").logicalConsequence(ag, new Unifier()); + System.out.print("Rule 1: "); + while(it1.hasNext()){ + System.out.print(it1.next()); + } + System.out.print("\n"); + Iterator<Unifier> it2 = parseFormula("rule2(A)").logicalConsequence(ag, new Unifier()); + System.out.print("Rule 2: "); + while(it2.hasNext()){ + System.out.print(it2.next()); + } + */ + + //asserting a new fact + ag.addBel(parseLiteral("prop(p(bob))")); + assertEquals(1, iteratorSize(parseFormula("rule1(A)").logicalConsequence(ag, new Unifier()))); + assertEquals(1, iteratorSize(parseFormula("rule2(A)").logicalConsequence(ag, new Unifier()))); + /* + Iterator<Unifier> it12 = parseFormula("rule1(A)").logicalConsequence(ag, new Unifier()); + System.out.print("Rule 1: "); + while(it12.hasNext()){ + System.out.print(it12.next()); + } + System.out.print("\n"); + Iterator<Unifier> it22 = parseFormula("rule2(A)").logicalConsequence(ag, new Unifier()); + System.out.print("Rule 2: "); + while(it22.hasNext()){ + System.out.print(it22.next()); + } + */ + } + + @SuppressWarnings("unchecked") private int iteratorSize(Iterator i) { int c = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-08-04 12:47:39
|
Revision: 1843 http://sourceforge.net/p/jason/svn/1843 Author: jomifred Date: 2015-08-04 12:47:36 +0000 (Tue, 04 Aug 2015) Log Message: ----------- improve mas console stability Modified Paths: -------------- trunk/README trunk/doc/mini-tutorial/src/hello-bdi/index.org trunk/release-notes.txt trunk/src/jason/runtime/MASConsoleColorGUI.java trunk/src/jason/runtime/MASConsoleGUI.java Modified: trunk/README =================================================================== --- trunk/README 2015-08-03 14:14:51 UTC (rev 1842) +++ trunk/README 2015-08-04 12:47:36 UTC (rev 1843) @@ -2,7 +2,7 @@ First release: December 2003. Jason is distributed under LGPL (see file LICENSE). -Java 1.5 is required to run this application, it is available +Java 1.7 is required to run this application, it is available at http://java.sun.com. For more information, please read doc/index.html. Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.org =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-08-03 14:14:51 UTC (rev 1842) +++ trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-08-04 12:47:36 UTC (rev 1843) @@ -14,7 +14,7 @@ This programming (mini) tutorial will illustrate how the BDI model is used in the [[http://jason.sf.net][Jason]] agent-oriented programming language. We start by a very simple agent code and progress exploring the BDI features of Jason. -We assume that the reader knows the basic concepts of the BDI model (an introduction and further references are found at the [[http://en.wikipedia.org/wiki/Belief–desire–intention_software_model][Wikipedia]]). It is important to know these concepts to be a good Jason programmer, in the same way that knowing the concepts of and objects and classes is important for a Java programmer. Very briefly, in the BDI model the agent has /beliefs/ (based on what it perceives and communicates with other agents) that can produce /desires/ (states of the world that the agent wants to achieve). The agent /deliberates/ on its desires and decides to /commit/ to some (desires to which the agent is committed become /intentions/). The satisfy its intentions, the agent executes plans that lead to action. The behaviour of the agent (i.e., its actions) is thus explained/caused by what it intends (i.e., the desires it decided to pursue). An important feature of the model is that the agent should /react/ to changes in its environment as soon as possible while keeping its /pro-active/ (i.e., desires-oriented) behaviour. (Do not worry about all these high-level anthropomorphic concepts (in italics), we will try to keep the simplicity of usual hello world programs.) +We assume that the reader knows the basic concepts of the BDI model (an introduction and further references are found at the [[http://en.wikipedia.org/wiki/Belief–desire–intention_software_model][Wikipedia]]). It is important to know these concepts to be a good Jason programmer, in the same way that knowing the concepts of and objects and classes is important for a Java programmer. Very briefly, in the BDI model the agent has /beliefs/ (based on what it perceives and communicates with other agents) that can produce /desires/ (states of the world that the agent wants to achieve). The agent /deliberates/ on its desires and decides to /commit/ to some (desires to which the agent is committed become /intentions/). The satisfy its intentions, the agent executes plans that lead to action. The behaviour of the agent (i.e., its actions) is thus explained/caused by what it intends (i.e., the desires it decided to pursue). An important feature of architectures that implement the BDI model is that the agent should /react/ to changes in its environment as soon as possible while keeping its /pro-active/ (i.e., desires-oriented) behaviour. (Do not worry about all these high-level anthropomorphic concepts (in italics), we will try to keep the simplicity of usual hello world programs.) * Bob (the mentalist) @@ -80,7 +80,7 @@ The first plan has a different kind of event: the agent has started to believe something (the belief that follows =+=). So when the agent starts believing that Bob is happy, the desire to say hello (=!say(hello)=) is created. In this case, the desire is the result of changes in the agent's beliefs. The agent starts believing something when, for instance, it perceives the state of the environment or receives a message from another agent. -The second plan has also changed: (i) the agent will decide to pursue the desire to say something on days other than Monday; (ii) after printing the message, the desire is keept, producing a loop that will end on the next Monday. In other words, the intention to achieve =!say= does not finish because that intention itself creates a new desire =!say= (here also conveniently called sub-goal). Only when this sub-goal is achieved, the intention finishes (which never happens in the above plan). +The second plan has also changed: (i) the agent will decide to pursue the desire to say something on days other than Monday; (ii) after printing the message, the desire is kept, producing a loop that will end on the next Monday. In other words, the intention to achieve =!say= does not finish because that intention itself creates a new desire =!say= (here also conveniently called sub-goal). Only when this sub-goal is achieved, the intention finishes (which never happens in the above plan). If you run this program, nothing happens! Different from other languages where the programmer defines a sequence of operations, in Jason the programmer /declares/ plans and the order of execution depends on the order of the events that take place on a particular environment. @@ -208,7 +208,7 @@ At this point of the tutorial, you could try to imagine how to program this application using conventional languages like Java and C. Even -actor-based langages, which are also oriented to events and great +actor-based languages, which are also oriented to events and great tools for concurrency, will not be so reactive as Jason. * Bob (the revisionist) Modified: trunk/release-notes.txt =================================================================== --- trunk/release-notes.txt 2015-08-03 14:14:51 UTC (rev 1842) +++ trunk/release-notes.txt 2015-08-04 12:47:36 UTC (rev 1843) @@ -17,10 +17,13 @@ New internal actions: -- .asserta: insert a belief (or rule) in the begin of the belief base (can be used in prolog like rules) -- .assertz: insert a belief (or rule) in the end of the belief base (can be used in prolog like rules) +- .asserta: inserts a belief (or rule) in the begin of the belief base (can be used in prolog like rules) +- .assertz: inserts a belief (or rule) in the end of the belief base (can be used in prolog like rules) +- .relevant_rules: gets rules with a specified head +New Tutorial on BDI (see doc/index.html) + --------------------------- version 1.4.2 Modified: trunk/src/jason/runtime/MASConsoleColorGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-08-03 14:14:51 UTC (rev 1842) +++ trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-08-04 12:47:36 UTC (rev 1843) @@ -80,6 +80,7 @@ synchronized (this) { ta = new MASColorTextPane(Color.black); ta.setEditable(false); + ((DefaultCaret)ta.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); agsTextArea.put(agName, ta); int i = 0; for (; i<tabPane.getTabCount(); i++) { @@ -90,10 +91,9 @@ tabPane.setTitleAt(i, agName); } } - if (ta != null) { // no new TA was created + if (ta != null) { // print out - int l = ta.getDocument().getLength(); - if (l > 100000) { + if (ta.getDocument().getLength() > 100000) { ta.setText(""); } ta.append(s); @@ -102,14 +102,11 @@ // print in output synchronized (output) { - int l = output.getDocument().getLength(); - if (l > 60000) { + if (output.getDocument().getLength() > 60000) { cleanConsole(); - //l = 0; } try { output.append(c, s); - //output.setCaretPosition(l); } catch (IllegalArgumentException e) { } } Modified: trunk/src/jason/runtime/MASConsoleGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleGUI.java 2015-08-03 14:14:51 UTC (rev 1842) +++ trunk/src/jason/runtime/MASConsoleGUI.java 2015-08-04 12:47:36 UTC (rev 1843) @@ -191,13 +191,12 @@ if (ta == null) { ta = new JTextArea(); ta.setEditable(false); + ((DefaultCaret)ta.getCaret()).setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE); agsTextArea.put(agName, ta); tabPane.add(agName, new JScrollPane(ta)); } - if (ta != null) { // no new TA was created - // print out - int l = ta.getDocument().getLength(); - if (l > 100000) { + if (ta != null) { + if (ta.getDocument().getLength() > 100000) { ta.setText(""); } ta.append(s); @@ -206,14 +205,11 @@ // print in output synchronized (output) { - int l = output.getDocument().getLength(); - if (l > 60000) { - cleanConsole(); - //l = 0; - } try { + if (output.getDocument().getLength() > 60000) { + cleanConsole(); + } output.append(s); - //output.setCaretPosition(l); } catch (IllegalArgumentException e) { } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-08-03 14:14:53
|
Revision: 1842 http://sourceforge.net/p/jason/svn/1842 Author: jomifred Date: 2015-08-03 14:14:51 +0000 (Mon, 03 Aug 2015) Log Message: ----------- update hello bdi tutorial Modified Paths: -------------- trunk/doc/mini-tutorial/src/hello-bdi/index.html trunk/doc/mini-tutorial/src/hello-bdi/index.org Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.html =================================================================== (Binary files differ) Modified: trunk/doc/mini-tutorial/src/hello-bdi/index.org =================================================================== --- trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-06-15 12:45:27 UTC (rev 1841) +++ trunk/doc/mini-tutorial/src/hello-bdi/index.org 2015-08-03 14:14:51 UTC (rev 1842) @@ -1,5 +1,5 @@ #+TITLE: (BDI) Hello World -#+AUTHOR: Jomi F. Hubner (with Rafael H. Bordini assistance) +#+AUTHOR: Jomi F. Hubner (with Rafael H. Bordini support) #+EMAIL: jom...@gm... #+DATE: 2015 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jom...@us...> - 2015-06-15 12:45:29
|
Revision: 1841 http://sourceforge.net/p/jason/svn/1841 Author: jomifred Date: 2015-06-15 12:45:27 +0000 (Mon, 15 Jun 2015) Log Message: ----------- try to fix some problems with mas console Modified Paths: -------------- trunk/src/jason/runtime/MASConsoleColorGUI.java trunk/src/jason/runtime/MASConsoleGUI.java trunk/src/jason/runtime/OutputStreamAdapter.java trunk/src/jason/stdlib/term2string.java trunk/src/templates/logging.properties Modified: trunk/src/jason/runtime/MASConsoleColorGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-05-25 12:41:56 UTC (rev 1840) +++ trunk/src/jason/runtime/MASConsoleColorGUI.java 2015-06-15 12:45:27 UTC (rev 1841) @@ -2,7 +2,6 @@ import java.awt.BorderLayout; import java.awt.Color; -import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; @@ -77,7 +76,8 @@ if (isTabbed() && agName != null) { MASColorTextPane ta = agsTextArea.get(agName); if (ta == null) { - synchronized (this) { + // add new tab for the agent + synchronized (this) { ta = new MASColorTextPane(Color.black); ta.setEditable(false); agsTextArea.put(agName, ta); @@ -101,16 +101,17 @@ } // print in output - synchronized (this) { + synchronized (output) { int l = output.getDocument().getLength(); if (l > 60000) { cleanConsole(); - l = 0; + //l = 0; } - output.append(c, s); try { - output.setCaretPosition(l); - } catch (IllegalArgumentException e) {} + output.append(c, s); + //output.setCaretPosition(l); + } catch (IllegalArgumentException e) { + } } } catch (Exception e) { try { @@ -169,9 +170,8 @@ AttributeSet as = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Foreground, c); try { getDocument().insertString(getDocument().getLength(), s, as); - } catch (BadLocationException e) { - e.printStackTrace(); - } + } catch (BadLocationException e) { + } } } Modified: trunk/src/jason/runtime/MASConsoleGUI.java =================================================================== --- trunk/src/jason/runtime/MASConsoleGUI.java 2015-05-25 12:41:56 UTC (rev 1840) +++ trunk/src/jason/runtime/MASConsoleGUI.java 2015-06-15 12:45:27 UTC (rev 1841) @@ -31,7 +31,6 @@ import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; @@ -206,16 +205,17 @@ } // print in output - int l = output.getDocument().getLength(); - if (l > 60000) { - cleanConsole(); - l = 0; - } - synchronized (this) { - output.append(s); + synchronized (output) { + int l = output.getDocument().getLength(); + if (l > 60000) { + cleanConsole(); + //l = 0; + } try { - output.setCaretPosition(l); - } catch (java.lang.IllegalArgumentException e) {} + output.append(s); + //output.setCaretPosition(l); + } catch (IllegalArgumentException e) { + } } } catch (Exception e) { try { Modified: trunk/src/jason/runtime/OutputStreamAdapter.java =================================================================== --- trunk/src/jason/runtime/OutputStreamAdapter.java 2015-05-25 12:41:56 UTC (rev 1840) +++ trunk/src/jason/runtime/OutputStreamAdapter.java 2015-06-15 12:45:27 UTC (rev 1841) @@ -63,7 +63,8 @@ void append(String s) { if (masConsole != null) { masConsole.append(s); - } if (ta != null) { + } + if (ta != null) { ta.append(s); ta.setCaretPosition(ta.getDocument().getLength()); } Modified: trunk/src/jason/stdlib/term2string.java =================================================================== --- trunk/src/jason/stdlib/term2string.java 2015-05-25 12:41:56 UTC (rev 1840) +++ trunk/src/jason/stdlib/term2string.java 2015-06-15 12:45:27 UTC (rev 1841) @@ -24,7 +24,8 @@ <p>Examples:<ul> <li> <code>.term2string(b,"b")</code>: true. <li> <code>.term2string(b,X)</code>: unifies X with "b". - <li> <code>.term2string(X,"b")</code>: unified X with b. + <li> <code>.term2string(X,"b")</code>: unifies X with b. + <li> <code>.term2string(X,"10")</code>: unifies X with 10 (a number term). </ul> @see jason.stdlib.concat Modified: trunk/src/templates/logging.properties =================================================================== --- trunk/src/templates/logging.properties 2015-05-25 12:41:56 UTC (rev 1840) +++ trunk/src/templates/logging.properties 2015-06-15 12:45:27 UTC (rev 1841) @@ -29,7 +29,7 @@ jason.runtime.MASConsoleLogHandler.formatter = jason.runtime.MASConsoleLogFormatter # set one text area for each agent jason.runtime.MASConsoleLogHandler.tabbed = false -jason.runtime.MASConsoleLogHandler.colors = true +jason.runtime.MASConsoleLogHandler.colors = false # default file output is in project's directory. java.util.logging.FileHandler.pattern = mas.log This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |