changeset 91:f9579d8afd29

*** empty log message ***
author kono
date Fri, 18 Jan 2008 20:52:45 +0900
parents 8affa0aa0fc0
children 23853660f8b7
files src/lite/ITLCommander.java
diffstat 1 files changed, 28 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/lite/ITLCommander.java	Fri Jan 18 17:31:49 2008 +0900
+++ b/src/lite/ITLCommander.java	Fri Jan 18 20:52:45 2008 +0900
@@ -7,6 +7,7 @@
 
 import sbdd.BDDDiagnosis;
 import sbdd.BDDSatisfier;
+import sbdd.SBDDEntry;
 
 public class ITLCommander<Node extends ITLSolver> implements Command<Node> {
 
@@ -53,25 +54,22 @@
 		
 		if (name=="less") {
 			Node n = lf.falseNode();
-			int length = Integer.parseInt(args.get(0).toString());
+			int length = atoi(args);
 			for(int i =0;i<length;i++) {
 				n = lf.nextNode(n);
 			}
 			return (Node)n;
 		} else if (name == "ex"|| name=="do") {
 			checkSat();
-			Node n = args.get(0);
-			if (args.size()<1||n==null) {
+			if (args.size()<1) {
 				parser.error("ex(1) or ex(<>p) or ex(10,[]p)");
 				return lf.trueNode();
 			}
-			int index = -1;
-			if (n.getClass()==NumberSolver.class) {
-				index = Integer.parseInt(n.toString()); 
-			}
+			int index = atoi(args);
 			if (args.size()==1) {
-				// System.out.println(args.get(0)+":"+args.get(1));
+				Node n = args.get(0);
 				if (index>=0) {
+					// do(10) case
 					n = examples.get(index);
 					if (n==null) {
 						parser.error("Unknown registered example");
@@ -95,31 +93,31 @@
 			parser.define(args.get(0).toString(),args.get(1).toString());
 		} else if (name == "verbose") {
 			// verbose(true) / verbose(off)
-			Node n= null;
 			checkSat();
-			try {
-				int i = Integer.parseInt((n=args.get(0)).toString());
-				sat.verbose =  (i==0)? false:true;
-			} catch (NumberFormatException e) {
-				sat.verbose = (n==lf.trueNode())?true:false;
-			}
+			Node n;
+			if (args.size()==0 || (n=args.get(0))==null) n = lf.trueNode();
+			sat.verbose = (n==lf.trueNode())?true:false;
 		} else if (name == "include") {
 			String file = args.getFirst().toString();
 			parser.parseFile(file);
 		} else if (name == "exe") {
 			int length = 0;
-			if (args.size()>1) length = Integer.parseInt(args.get(0).toString());
+			if (args.size()>1) length = atoi(args);
 			checkSat();
 			diag.execute(sat.last, length );
 		} else if (name == "diag") {
 			int length = 0;
-			if (args.size()>1) length = Integer.parseInt(args.get(0).toString());
+			if (args.size()>1) length = atoi(args);
 			checkSat();
 			diag.counterExample(sat.last, length);
 		} else if (name == "clear") {
 			sat = new BDDSatisfier();
 		} else if (name == "states") {
-			System.out.println(sat.sf.hash);
+			// System.out.println(sat.sf.hash); too large
+			for(SBDDEntry e: sat.sf.hash.sbddArray) {
+				if (e==null) continue;
+				System.out.println(e);
+			}
 		} else if (name == "show") {
 			checkSat();
 			diag.showState(sat.last);
@@ -128,6 +126,18 @@
 		return lf.trueNode();
 	}
 
+	private int atoi(LinkedList<Node> args) {
+		// should have more strcit check..
+		int i=0;
+		if (args.size()==0) return i;
+		Node n = args.get(0);
+		if (n==null) return 0;
+		if (n.getClass()==NumberSolver.class) {
+			i = Integer.parseInt(n.toString()); 
+		}
+		return i;
+	}
+
 	private void checkSat() {
 		if (sat==null) {
 			sat = new BDDSatisfier();