|
From: <jom...@us...> - 2016-03-02 10:22:19
|
Revision: 1875
http://sourceforge.net/p/jason/svn/1875
Author: jomifred
Date: 2016-03-02 10:22:16 +0000 (Wed, 02 Mar 2016)
Log Message:
-----------
support namespace in plans label
Modified Paths:
--------------
trunk/src/jason/asSyntax/PlanLibrary.java
trunk/src/jason/asSyntax/Structure.java
trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc
trunk/src/jason/asSyntax/parser/as2j.java
trunk/src/jason/stdlib/plan_label.java
Modified: trunk/src/jason/asSyntax/PlanLibrary.java
===================================================================
--- trunk/src/jason/asSyntax/PlanLibrary.java 2016-03-01 10:18:40 UTC (rev 1874)
+++ trunk/src/jason/asSyntax/PlanLibrary.java 2016-03-02 10:22:16 UTC (rev 1875)
@@ -156,9 +156,9 @@
*/
public void add(Plan p, boolean before) throws JasonException {
// test p.label
- if (p.getLabel() != null && planLabels.keySet().contains(p.getLabel().getFunctor())) {
+ if (p.getLabel() != null && planLabels.keySet().contains( getStringForLabel(p.getLabel()))) {
// test if the new plan is equal, in this case, just add a source
- Plan planInPL = get(p.getLabel().getFunctor());
+ Plan planInPL = get(p.getLabel());
if (p.equals(planInPL)) {
planInPL.getLabel().addSource(p.getLabel().getSources().get(0));
return;
@@ -183,7 +183,7 @@
p.setAsPlanTerm(false); // it is not a term anymore
- planLabels.put(p.getLabel().getFunctor(), p);
+ planLabels.put( getStringForLabel(p.getLabel()), p);
Trigger pte = p.getTrigger();
if (pte.getLiteral().isVar()) {
@@ -235,6 +235,13 @@
}
}
+ private String getStringForLabel(Atom p) {
+ if (p.getNS() == Literal.DefaultNS)
+ return p.getFunctor();
+ else
+ return p.getNS()+"::"+p.getFunctor();
+ }
+
public boolean hasMetaEventPlans() {
return hasMetaEventPlans;
}
@@ -254,8 +261,12 @@
/** return a plan for a label */
public Plan get(String label) {
- return planLabels.get(label);
+ return get(new Atom(label));
}
+ /** return a plan for a label */
+ public Plan get(Atom label) {
+ return planLabels.get(getStringForLabel(label));
+ }
public int size() {
return plans.size();
@@ -283,13 +294,13 @@
*/
public boolean remove(Atom pLabel, Term source) {
// find the plan
- Plan p = get(pLabel.getFunctor());
+ Plan p = get(pLabel);
if (p != null) {
boolean hasSource = p.getLabel().delSource(source);
// if no source anymore, remove the plan
if (hasSource && !p.getLabel().hasSource()) {
- remove(pLabel.getFunctor());
+ remove(pLabel);
}
return true;
}
@@ -297,8 +308,8 @@
}
/** remove the plan with label <i>pLabel</i> */
- public Plan remove(String pLabel) {
- Plan p = planLabels.remove(pLabel);
+ public Plan remove(Atom pLabel) {
+ Plan p = planLabels.remove( getStringForLabel(pLabel) );
// remove it from plans' list
plans.remove(p);
Modified: trunk/src/jason/asSyntax/Structure.java
===================================================================
--- trunk/src/jason/asSyntax/Structure.java 2016-03-01 10:18:40 UTC (rev 1874)
+++ trunk/src/jason/asSyntax/Structure.java 2016-03-02 10:22:16 UTC (rev 1875)
@@ -147,7 +147,10 @@
if (!getFunctor().equals(tAsStruct.getFunctor()))
return false;
-
+
+ if (!getNS().equals(tAsStruct.getNS()))
+ return false;
+
for (int i=0; i<ts; i++)
if (!getTerm(i).equals(tAsStruct.getTerm(i)))
return false;
Modified: trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc
===================================================================
--- trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-03-01 10:18:40 UTC (rev 1874)
+++ trunk/src/jason/asSyntax/parser/AS2JavaParser.jcc 2016-03-02 10:22:16 UTC (rev 1875)
@@ -123,6 +123,8 @@
if (u.isAtom()) {
if (((Atom)u).getFunctor().equals("default"))
return Literal.DefaultNS;
+ else if (((Atom)u).getFunctor().equals("this_ns"))
+ return thisnamespace;
else
return new Atom((Literal)u);
}
@@ -331,13 +333,13 @@
/* Plan */
Plan plan() : { Token k;
- Pred L = null;
+ Pred L = null; Literal L2;
Trigger T;
Object C = null;
PlanBody B = null;
int start = -1, end;}
{
- [ k = <TK_LABEL_AT> L=pred() { start = k.beginLine; } ]
+ [ k = <TK_LABEL_AT> L2=literal() { start = k.beginLine; L = new Pred(L2); } ] // use literal to allow namespace
T=trigger()
[ k = ":" C = log_expr() { if (start == -1) start = k.beginLine; } ]
[ k = "<-" B = plan_body() { if (start == -1) start = k.beginLine; } ]
Modified: trunk/src/jason/asSyntax/parser/as2j.java
===================================================================
--- trunk/src/jason/asSyntax/parser/as2j.java 2016-03-01 10:18:40 UTC (rev 1874)
+++ trunk/src/jason/asSyntax/parser/as2j.java 2016-03-02 10:22:16 UTC (rev 1875)
@@ -92,6 +92,8 @@
if (u.isAtom()) {
if (((Atom)u).getFunctor().equals("default"))
return Literal.DefaultNS;
+ else if (((Atom)u).getFunctor().equals("this_ns"))
+ return thisnamespace;
else
return new Atom((Literal)u);
}
@@ -358,7 +360,7 @@
/* Plan */
final public Plan plan() throws ParseException {
Token k;
- Pred L = null;
+ Pred L = null; Literal L2;
Trigger T;
Object C = null;
PlanBody B = null;
@@ -366,14 +368,15 @@
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case TK_LABEL_AT:
k = jj_consume_token(TK_LABEL_AT);
- L = pred();
- start = k.beginLine;
+ L2 = literal();
+ start = k.beginLine; L = new Pred(L2);
break;
default:
jj_la1[10] = jj_gen;
;
}
- T = trigger();
+ // use literal to allow namespace
+ T = trigger();
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case 35:
k = jj_consume_token(35);
@@ -1684,20 +1687,15 @@
finally { jj_save(3, xla); }
}
- final private boolean jj_3_3() {
- if (jj_3R_19()) return true;
- if (jj_scan_token(32)) return true;
- if (jj_3R_20()) return true;
- return false;
- }
-
final private boolean jj_3R_48() {
if (jj_scan_token(40)) return true;
return false;
}
- final private boolean jj_3R_72() {
- if (jj_3R_68()) return true;
+ final private boolean jj_3_3() {
+ if (jj_3R_19()) return true;
+ if (jj_scan_token(32)) return true;
+ if (jj_3R_20()) return true;
return false;
}
@@ -1711,6 +1709,11 @@
return false;
}
+ final private boolean jj_3R_72() {
+ if (jj_3R_68()) return true;
+ return false;
+ }
+
final private boolean jj_3R_32() {
if (jj_scan_token(36)) return true;
return false;
@@ -1721,6 +1724,11 @@
return false;
}
+ final private boolean jj_3R_70() {
+ if (jj_3R_76()) return true;
+ return false;
+ }
+
final private boolean jj_3R_31() {
Token xsp;
xsp = jj_scanpos;
@@ -1731,11 +1739,6 @@
return false;
}
- final private boolean jj_3R_70() {
- if (jj_3R_76()) return true;
- return false;
- }
-
final private boolean jj_3R_17() {
if (jj_scan_token(35)) return true;
if (jj_3R_20()) return true;
Modified: trunk/src/jason/stdlib/plan_label.java
===================================================================
--- trunk/src/jason/stdlib/plan_label.java 2016-03-01 10:18:40 UTC (rev 1874)
+++ trunk/src/jason/stdlib/plan_label.java 2016-03-02 10:22:16 UTC (rev 1875)
@@ -27,6 +27,7 @@
import jason.asSemantics.InternalAction;
import jason.asSemantics.TransitionSystem;
import jason.asSemantics.Unifier;
+import jason.asSyntax.Atom;
import jason.asSyntax.Plan;
import jason.asSyntax.Term;
@@ -75,7 +76,12 @@
checkArguments(args);
Term label = args[1];
- Plan p = ts.getAg().getPL().get(label.toString());
+ Plan p;
+ if (label.isAtom())
+ p = ts.getAg().getPL().get( (Atom)label);
+ else
+ p = ts.getAg().getPL().get( new Atom(label.toString()));
+
if (p != null) {
p = (Plan)p.clone();
p.getLabel().delSources();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|