|
From: <jom...@us...> - 2009-03-24 11:47:40
|
Revision: 1478
http://jason.svn.sourceforge.net/jason/?rev=1478&view=rev
Author: jomifred
Date: 2009-03-24 11:47:30 +0000 (Tue, 24 Mar 2009)
Log Message:
-----------
add method removeLast in ListTermImpl class
Modified Paths:
--------------
trunk/src/jason/asSemantics/Circumstance.java
trunk/src/jason/asSemantics/TransitionSystem.java
trunk/src/jason/asSyntax/ListTerm.java
trunk/src/jason/asSyntax/ListTermImpl.java
trunk/src/jason/asSyntax/VarTerm.java
trunk/src/test/ListTermTest.java
Modified: trunk/src/jason/asSemantics/Circumstance.java
===================================================================
--- trunk/src/jason/asSemantics/Circumstance.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/jason/asSemantics/Circumstance.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -23,7 +23,6 @@
package jason.asSemantics;
-import jason.JasonException;
import jason.asSyntax.Literal;
import jason.asSyntax.Trigger;
import jason.asSyntax.Trigger.TEOperator;
Modified: trunk/src/jason/asSemantics/TransitionSystem.java
===================================================================
--- trunk/src/jason/asSemantics/TransitionSystem.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/jason/asSemantics/TransitionSystem.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -70,19 +70,12 @@
private AgArch agArch = null;
private Circumstance C = null;
private Settings setts = null;
-
- // first step of the SOS
- private State step = State.StartRC;
-
- // number of reasoning cycles since last belief revision
- private int nrcslbr;
+ private State step = State.StartRC; // first step of the SOS
+ private int nrcslbr = Settings.ODefaultNRC; // number of reasoning cycles since last belief revision
// both configuration and configuration' point to this
// object, this is just to make it look more like the SOS
private TransitionSystem confP;
-
- // both configuration and configuration' point to this
- // object, this is just to make it look more like the SOS
private TransitionSystem conf;
private Queue<Runnable> taskForBeginOfCycle = new ConcurrentLinkedQueue<Runnable>();
Modified: trunk/src/jason/asSyntax/ListTerm.java
===================================================================
--- trunk/src/jason/asSyntax/ListTerm.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/jason/asSyntax/ListTerm.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -23,6 +23,8 @@
public VarTerm getTail();
public void setTail(VarTerm v);
public ListTerm getLast();
+ public ListTerm getPenultimate();
+ public Term removeLast();
public ListTerm append(Term t);
public ListTerm concat(ListTerm lt);
public ListTerm reverse();
Modified: trunk/src/jason/asSyntax/ListTermImpl.java
===================================================================
--- trunk/src/jason/asSyntax/ListTermImpl.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/jason/asSyntax/ListTermImpl.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -267,7 +267,28 @@
return null; // !!! no last!!!!
}
+ public ListTerm getPenultimate() {
+ if (getNext() == null)
+ return null;
+ if (isTail())
+ return this;
+ if (getNext().isEnd() && !getNext().isTail())
+ return this;
+ return getNext().getPenultimate();
+ }
+ public Term removeLast() {
+ ListTerm p = getPenultimate();
+ if (p != null) {
+ Term b = p.getTerm();
+ p.setTerm(null);
+ p.setNext(null);
+ return b;
+ } else {
+ return null;
+ }
+ }
+
/**
* Adds a term in the end of the list
* @return the ListTerm where the term was added (i.e. the last ListTerm of the list)
Modified: trunk/src/jason/asSyntax/VarTerm.java
===================================================================
--- trunk/src/jason/asSyntax/VarTerm.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/jason/asSyntax/VarTerm.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -840,6 +840,20 @@
return null;
}
+ public ListTerm getPenultimate() {
+ if (value != null && getValue().isList())
+ return ((ListTerm) getValue()).getPenultimate();
+ else
+ return null;
+ }
+
+ public Term removeLast() {
+ if (value != null && getValue().isList())
+ return ((ListTerm) getValue()).removeLast();
+ else
+ return null;
+ }
+
public ListTerm getNext() {
if (value != null && getValue().isList())
return ((ListTerm) getValue()).getNext();
Modified: trunk/src/test/ListTermTest.java
===================================================================
--- trunk/src/test/ListTermTest.java 2009-03-22 11:11:20 UTC (rev 1477)
+++ trunk/src/test/ListTermTest.java 2009-03-24 11:47:30 UTC (rev 1478)
@@ -30,6 +30,20 @@
//System.out.println("l1="+l1+"\nl2="+l2+"\nl3="+l3+"\nl4="+l4);
//System.out.println("l5="+l5);
}
+
+ public void testPenultimateAndRemoveLast() {
+ assertEquals("[c]",l1.getPenultimate().toString());
+ assertEquals("[b(r,t)|T]", l2.getPenultimate().toString());
+ assertEquals("[T]", l4.getPenultimate().toString());
+
+ assertEquals("c",l1.removeLast().toString());
+ assertEquals("[a,b]",l1.toString());
+ assertEquals("T",l4.removeLast().toString());
+ assertEquals("[X,b]",l4.toString());
+
+ assertEquals("b(r,t)",l2.removeLast().toString());
+ assertEquals("[a(1,2)]",l2.toString());
+ }
public void testSize() {
assertEquals(l1.size(), 3);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|