Exemplo n.º 1
0
def reduceScopeOp(expressionTree,environmentFrames):
	if len(expressionTree) > 2: raise ValueError("Scope operator takes exactly two arguments")
	scope,scoped = expressionTree[0],expressionTree[1]
	scopeRator,scopeRand = scope.nodes[0],scope.nodes[1:]
	scopedRator,scopedRand = scoped.nodes[0],scoped.nodes[1:]
	if not (scopeRator.name == scopedRator.name == "Term"): raise ValueError("Scope arguments must be Terms")
	op = data.computedMatchVectorOp(data.OP_SCOPE)
	return op(reduceTerm(scopeRand,environmentFrames),reduceTerm(scopedRand,environmentFrames))
Exemplo n.º 2
0
def reduceWithinOp(expressionTree,environmentFrames):
	count,expressionTree = expressionTree[0],expressionTree[1:]
	if isinstance(count,compiler.ast.Const):
		count = count.value
		op = data.computedMatchVectorOp(data.OP_WITHIN)
		return op(count,*[reduceTopLevel(expression,environmentFrames) for expression in expressionTree])
	
	return None
Exemplo n.º 3
0
def reduceScopeOp(expressionTree, environmentFrames):
    if len(expressionTree) > 2:
        raise ValueError("Scope operator takes exactly two arguments")
    scope, scoped = expressionTree[0], expressionTree[1]
    scopeRator, scopeRand = scope.nodes[0], scope.nodes[1:]
    scopedRator, scopedRand = scoped.nodes[0], scoped.nodes[1:]
    if not (scopeRator.name == scopedRator.name == "Term"):
        raise ValueError("Scope arguments must be Terms")
    op = data.computedMatchVectorOp(data.OP_SCOPE)
    return op(reduceTerm(scopeRand, environmentFrames),
              reduceTerm(scopedRand, environmentFrames))
Exemplo n.º 4
0
def reduceWithinOp(expressionTree, environmentFrames):
    count, expressionTree = expressionTree[0], expressionTree[1:]
    if isinstance(count, compiler.ast.Const):
        count = count.value
        op = data.computedMatchVectorOp(data.OP_WITHIN)
        return op(
            count, *[
                reduceTopLevel(expression, environmentFrames)
                for expression in expressionTree
            ])

    return None
Exemplo n.º 5
0
def reduceSimpleOperator(opcode,expressionTree,environmentFrames):
	op = data.computedMatchVectorOp(opcode)
	return op(*[reduceTopLevel(expression,environmentFrames) for expression in expressionTree])
Exemplo n.º 6
0
def reduceSimpleOperator(opcode, expressionTree, environmentFrames):
    op = data.computedMatchVectorOp(opcode)
    return op(*[
        reduceTopLevel(expression, environmentFrames)
        for expression in expressionTree
    ])