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))
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
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))
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
def reduceSimpleOperator(opcode,expressionTree,environmentFrames): op = data.computedMatchVectorOp(opcode) return op(*[reduceTopLevel(expression,environmentFrames) for expression in expressionTree])
def reduceSimpleOperator(opcode, expressionTree, environmentFrames): op = data.computedMatchVectorOp(opcode) return op(*[ reduceTopLevel(expression, environmentFrames) for expression in expressionTree ])