view src/lite/ITLCommander.java @ 65:48db54d3129b

*** empty log message ***
author kono
date Fri, 11 Jan 2008 02:10:06 +0900
parents f97d0d631992
children 4ced2af1ff09
line wrap: on
line source

package lite;

import java.util.LinkedList;
import sbdd.BDDSatisfier;
import logicNode.parser.Command;

public class ITLCommander<Node extends ITLSolver> implements Command<Node> {


	private ITLNodeFactoryInterface<Node> lf;
	private ITLNodeParser<Node> parser;
	public BDDSatisfier sat;

	public ITLCommander(ITLNodeFactoryInterface<Node> lf, ITLNodeParser<Node> parser) {
		this.lf = lf;
		this.parser = parser;
	}

	public Node exec(Node predicate, Node value, LinkedList<Node> args) {
		if (predicate.toString() == "length") {
			Node n = lf.emptyNode();
			int length = Integer.parseInt(args.get(0).toString());
			for(int i =0;i<length;i++) {
				n = lf.nextNode(n);
			}
			return (Node)n;
		} else if (predicate.toString() == "less") {
			Node n = lf.falseNode();
			int length = Integer.parseInt(args.get(0).toString());
			for(int i =0;i<length;i++) {
				n = lf.orNode(lf.emptyNode(),lf.nextNode(n));
			}
			return (Node)n;
		} else if (predicate.toString() == "ex") {
			if (sat==null) sat = new BDDSatisfier();
			// System.out.println(args.get(0)+":"+args.get(1));
			System.out.println(args.get(0));
			sat.verify(args.get(1));
			return lf.trueNode();
		} else if (predicate.toString() == "def") {
			parser.define(args.get(0).toString(),args.get(1).toString());
			return lf.trueNode();
		} else if (predicate.toString() == "verbose") {
			if (Integer.parseInt(args.get(0).toString())==0) {
				sat.verbose = false;
			} else {
				sat.verbose = true;
			}
			return lf.trueNode();
		} else if (predicate.toString() == "include") {
			String file = args.getFirst().toString();
			parser.parseFile(file);
			return lf.trueNode();
		}
		System.out.println("Unknown Command Predicate:"+predicate+" Value:"+value+" Args:"+args);
		return value;
	}

}