コード例 #1
0
ファイル: query.py プロジェクト: hellertime/leif
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))
コード例 #2
0
ファイル: query.py プロジェクト: hellertime/leif
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
コード例 #3
0
ファイル: query.py プロジェクト: hellertime/leif
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))
コード例 #4
0
ファイル: query.py プロジェクト: hellertime/leif
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
コード例 #5
0
ファイル: query.py プロジェクト: hellertime/leif
def reduceSimpleOperator(opcode,expressionTree,environmentFrames):
	op = data.computedMatchVectorOp(opcode)
	return op(*[reduceTopLevel(expression,environmentFrames) for expression in expressionTree])
コード例 #6
0
ファイル: query.py プロジェクト: hellertime/leif
def reduceSimpleOperator(opcode, expressionTree, environmentFrames):
    op = data.computedMatchVectorOp(opcode)
    return op(*[
        reduceTopLevel(expression, environmentFrames)
        for expression in expressionTree
    ])