当前位置: 首页>>代码示例>>Java>>正文


Java NaryExpression.size方法代码示例

本文整理汇总了Java中kodkod.ast.NaryExpression.size方法的典型用法代码示例。如果您正苦于以下问题:Java NaryExpression.size方法的具体用法?Java NaryExpression.size怎么用?Java NaryExpression.size使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在kodkod.ast.NaryExpression的用法示例。


在下文中一共展示了NaryExpression.size方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/**
 * Calls lookup(expr) and returns the cached value, if any. If a replacement
 * has not been cached, visits the expr's children. If nothing changes, the
 * argument is cached and returned, otherwise a replacement expr is cached
 * and returned.
 * 
 * @return { e: Expression | e.op = expr.op && #e.children = #expr.children
 *         && all i: [0..expr.children) | e.child(i) =
 *         expr.child(i).accept(delegate) }
 */
public Expression visit(NaryExpression expr) {
	Expression ret = lookup(expr);
	if (ret != null)
		return ret;

	final Expression[] visited = new Expression[expr.size()];
	boolean allSame = true;
	for (int i = 0; i < visited.length; i++) {
		final Expression child = expr.child(i);
		visited[i] = child.accept(delegate);
		allSame = allSame && visited[i] == child;
	}

	ret = allSame ? expr : Expression.compose(expr.op(), visited);
	return cache(expr, ret);
}
 
开发者ID:AlloyTools,项目名称:org.alloytools.alloy,代码行数:27,代码来源:AbstractReplacer.java

示例2: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** {@inheritDoc} */
public void visit(NaryExpression x) {
    String newname = makename(x); if (newname==null) return;
    String[] list = new String[x.size()];
    for(int i=0; i<list.length; i++)  list[i] = make(x.child(i));
    file.printf("Expression %s=Expression.compose(ExprOperator.", newname);
    switch(x.op()) {
       case INTERSECTION: file.print("INTERSECTION"); break;
       case OVERRIDE: file.print("OVERRIDE"); break;
       case PRODUCT: file.print("PRODUCT"); break;
       case UNION: file.print("UNION"); break;
       default: throw new RuntimeException("Unknown kodkod operator \""+x.op()+"\" encountered");
    }
    for(int i=0; i<list.length; i++) file.printf(", %s", list[i]);
    file.printf(");%n");
}
 
开发者ID:ModelWriter,项目名称:Tarski,代码行数:17,代码来源:TranslateKodkodToJava.java

示例3: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** 
 * Calls lookup(expr) and returns the cached value, if any.  
 * If a replacement has not been cached, visits the expr's 
 * children.  If nothing changes, the argument is cached and
 * returned, otherwise a replacement expr is cached and returned.
 * @return { e: Expression | e.op = expr.op && #e.children = #expr.children && all i: [0..expr.children) | e.child(i) = expr.child(i).accept(this) }
 */
public Expression visit(NaryExpression expr) {
	Expression ret = lookup(expr);
	if (ret!=null) return ret;
	
	final Expression[] visited = new Expression[expr.size()];
	boolean allSame = true;
	for(int i = 0 ; i < visited.length; i++) { 
		final Expression child = expr.child(i);
		visited[i] = child.accept(this);
		allSame = allSame && visited[i]==child;
	}
	
	ret = allSame ? expr : Expression.compose(expr.op(), visited);
	return cache(expr,ret);
}
 
开发者ID:ModelWriter,项目名称:Tarski,代码行数:23,代码来源:AbstractReplacer.java

示例4: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/**
 * Calls lookup(expr) and returns the cached value, if any.  
 * If a translation has not been cached, translates the expression,
 * calls cache(...) on it and returns it.
 * @return let t = lookup(expr) | some t => t, 
 *      let op = (expr.op).(UNION->or + INTERSECTION->and + DIFFERENCE->difference + OVERRIDE->override + JOIN->dot + PRODUCT->cross) | 
 *       cache(expr, op(expr.left.accept(this), expr.right.accept(this)))
 */
public BooleanMatrix visit(NaryExpression expr) {
	BooleanMatrix ret = lookup(expr);
	if (ret!=null) return ret;

	final ExprOperator op = expr.op();
	final BooleanMatrix first = expr.child(0).accept(this);		
	final BooleanMatrix[] rest = new BooleanMatrix[expr.size()-1];
	for(int i = 0; i < rest.length; i++) { 	rest[i] = expr.child(i+1).accept(this); }
	
	switch(op) {
	case UNION        	: ret = first.or(rest); break;
	case INTERSECTION	: ret = first.and(rest); break;
	case OVERRIDE 		: ret = first.override(rest); break;
	case PRODUCT		: ret = first.cross(rest); break;
	default : 
		throw new IllegalArgumentException("Unknown associative operator: " + op);
	}

	return cache(expr, ret);
}
 
开发者ID:ModelWriter,项目名称:Tarski,代码行数:29,代码来源:FOL2BoolTranslator.java

示例5: isEmpty

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** @return true if e is (a product of) Expression.NONE*/
private boolean isEmpty(Expression e) { 
	if (e==Expression.NONE) return true;
	else if (e instanceof BinaryExpression) { 
		final BinaryExpression b = (BinaryExpression) e;
		return b.op()==ExprOperator.PRODUCT && isEmpty(b.left()) && isEmpty(b.right());
	} else if (e instanceof NaryExpression) { 
		final NaryExpression n = (NaryExpression) e;
		if (n.op()==ExprOperator.PRODUCT) { 
			for(int i = 0, max = n.size(); i < max; i++) { 
				if (!isEmpty(n.child(i))) return false;
			}
			return true;
		}
	}
	return false;
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:18,代码来源:PrettyPrinter.java

示例6: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
public Expression visit(NaryExpression expr) { 
	Expression ret = lookup(expr);
	if (ret!=null) return ret;
	
	final ExprOperator op = expr.op();
	
	final List<Expression> children = simplify(op, visitAll(expr));
	final int size = children.size();
	switch(size) { 
	case 0 : return cache(expr, empty(expr.arity()));
	case 1 : return cache(expr, children.get(0));
	default :
		ret = expr.size()==size && allSame(expr,children) ? expr : Expression.compose(op, children);
		return cache(expr,ret);
	}	
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:17,代码来源:Simplifier.java

示例7: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/**
 * Calls lookup(expr) and returns the cached value, if any. If a translation
 * has not been cached, translates the expression, calls cache(...) on it
 * and returns it.
 * 
 * @return let t = lookup(expr) | some t => t, let op = (expr.op).(UNION->or
 *         + INTERSECTION->and + DIFFERENCE->difference + OVERRIDE->override
 *         + JOIN->dot + PRODUCT->cross) | cache(expr,
 *         op(expr.left.accept(this), expr.right.accept(this)))
 */
public BooleanMatrix visit(NaryExpression expr) {
	BooleanMatrix ret = lookup(expr);
	if (ret != null)
		return ret;

	final ExprOperator op = expr.op();
	final BooleanMatrix first = expr.child(0).accept(this);
	final BooleanMatrix[] rest = new BooleanMatrix[expr.size() - 1];
	for (int i = 0; i < rest.length; i++) {
		rest[i] = expr.child(i + 1).accept(this);
	}

	switch (op) {
		case UNION :
			ret = first.or(rest);
			break;
		case INTERSECTION :
			ret = first.and(rest);
			break;
		case OVERRIDE :
			ret = first.override(rest);
			break;
		case PRODUCT :
			ret = first.cross(rest);
			break;
		default :
			throw new IllegalArgumentException("Unknown associative operator: " + op);
	}

	return cache(expr, ret);
}
 
开发者ID:AlloyTools,项目名称:org.alloytools.alloy,代码行数:42,代码来源:FOL2BoolTranslator.java

示例8: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/**
 * @ensures appends the tokenization of the given node to this.tokens
 */
public void visit(NaryExpression node) {
	final ExprOperator op = node.op();
	visitChild(node.child(0), parenthesize(op, node.child(0)));
	for (int i = 1, size = node.size(); i < size; i++) {
		infix(op);
		visitChild(node.child(i), parenthesize(op, node.child(i)));
	}
}
 
开发者ID:AlloyTools,项目名称:org.alloytools.alloy,代码行数:12,代码来源:PrettyPrinter.java

示例9: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** {@inheritDoc} */
public void visit(NaryExpression x) {
	String newname = makename(x);
	if (newname == null)
		return;
	String[] list = new String[x.size()];
	for (int i = 0; i < list.length; i++)
		list[i] = make(x.child(i));
	file.printf("Expression %s=Expression.compose(ExprOperator.", newname);
	switch (x.op()) {
		case INTERSECTION :
			file.print("INTERSECTION");
			break;
		case OVERRIDE :
			file.print("OVERRIDE");
			break;
		case PRODUCT :
			file.print("PRODUCT");
			break;
		case UNION :
			file.print("UNION");
			break;
		default :
			throw new RuntimeException("Unknown kodkod operator \"" + x.op() + "\" encountered");
	}
	for (int i = 0; i < list.length; i++)
		file.printf(", %s", list[i]);
	file.printf(");%n");
}
 
开发者ID:AlloyTools,项目名称:org.alloytools.alloy,代码行数:30,代码来源:TranslateKodkodToJava.java

示例10: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** @ensures appends the tokenization of the given node to this.tokens */
public void visit(NaryExpression node) {
	final ExprOperator op = node.op();
	visitChild(node.child(0), parenthesize(op, node.child(0)));
	for(int i = 1, size = node.size(); i < size; i++) {
		infix(op);
		visitChild(node.child(i), parenthesize(op, node.child(i)));
	}
}
 
开发者ID:ModelWriter,项目名称:Tarski,代码行数:10,代码来源:PrettyPrinter.java

示例11: visit

import kodkod.ast.NaryExpression; //导入方法依赖的package包/类
/** @effects appends the tokenization of the given node to this.tokens */
public void visit(NaryExpression node) {
	if (displayed(node)) return;
	final boolean oldTop = notTop();
	final ExprOperator op = node.op();
	visitChild(node.child(0), parenthesize(op, node.child(0)));
	for(int i = 1, size = node.size(); i < size; i++) {
		infix(op);
		visitChild(node.child(i), parenthesize(op, node.child(i)));
	}
	top = oldTop;
}
 
开发者ID:wala,项目名称:MemSAT,代码行数:13,代码来源:PrettyPrinter.java


注:本文中的kodkod.ast.NaryExpression.size方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。