def traverseAssignNode(self, generators): if (self.assignNode == None): sys.exit( "Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None." ) self.hasPairings = False self.protectsM = False if (self.assignNode.right.type == ops.LIST): self.isList = True self.type = ops.LIST onlyListElementsTypeDecl = self.isOnlyListElementsTypeDecl( self.assignNode.right) if (onlyListElementsTypeDecl != None): self.listElementsType = onlyListElementsTypeDecl else: addListNodesToList(self.assignNode.right, self.listNodesList) elif (self.assignNode.right.type == ops.SYMMAP): self.isSymmap = True self.type = ops.SYMMAP addListNodesToList(self.assignNode.right, self.listNodesList) elif ((self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD)): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj elif (self.assignNode.right.type == ops.EXPAND): self.isExpandNode = True elif (self.assignNode.right.type == ops.RANDOM): self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left self.assignBaseElemsOnlyThisFunc = self.assignNode.left elif (self.assignNode.right.type == ops.HASH): self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left self.assignBaseElemsOnlyThisFunc = self.assignNode.left elif (self.assignNode.right.type == ops.NOP): self.isNOP = True # JAA: activates the awesome symbolic executor! #if ( (self.assignBaseElemsOnly == None) or (self.beenSet == : if (self.isBaseElement == False): assignNodeRightDeepCopy = copy.deepcopy(self.assignNode.right) newAssignBaseElemsOnlyNode = self.traverseAssignBaseElemsOnlyRecursive( assignNodeRightDeepCopy, generators) self.assignBaseElemsOnly = newAssignBaseElemsOnlyNode assignNodeRightDeepCopyThisFunc = copy.deepcopy( self.assignNode.right) newAssignBaseElemsOnlyNodeThisFunc = self.traverseAssignBaseElemsOnlyThisFuncRecursive( assignNodeRightDeepCopyThisFunc, generators) self.assignBaseElemsOnlyThisFunc = newAssignBaseElemsOnlyNodeThisFunc self.traverseAssignNodeRecursive(self.assignNode.right, False) if (M in self.varDeps): self.protectsM = True
def traverseAssignNode(self, generators): if self.assignNode == None: sys.exit("Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None.") self.hasPairings = False self.protectsM = False if self.assignNode.right.type == ops.LIST: self.isList = True self.type = ops.LIST onlyListElementsTypeDecl = self.isOnlyListElementsTypeDecl(self.assignNode.right) if onlyListElementsTypeDecl != None: self.listElementsType = onlyListElementsTypeDecl else: addListNodesToList(self.assignNode.right, self.listNodesList) elif self.assignNode.right.type == ops.SYMMAP: self.isSymmap = True self.type = ops.SYMMAP addListNodesToList(self.assignNode.right, self.listNodesList) elif (self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj elif self.assignNode.right.type == ops.EXPAND: self.isExpandNode = True elif self.assignNode.right.type == ops.RANDOM: self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left self.assignBaseElemsOnlyThisFunc = self.assignNode.left elif self.assignNode.right.type == ops.HASH: self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left self.assignBaseElemsOnlyThisFunc = self.assignNode.left elif self.assignNode.right.type == ops.NOP: self.isNOP = True # JAA: activates the awesome symbolic executor! # if ( (self.assignBaseElemsOnly == None) or (self.beenSet == : if self.isBaseElement == False: assignNodeRightDeepCopy = copy.deepcopy(self.assignNode.right) newAssignBaseElemsOnlyNode = self.traverseAssignBaseElemsOnlyRecursive(assignNodeRightDeepCopy, generators) self.assignBaseElemsOnly = newAssignBaseElemsOnlyNode assignNodeRightDeepCopyThisFunc = copy.deepcopy(self.assignNode.right) newAssignBaseElemsOnlyNodeThisFunc = self.traverseAssignBaseElemsOnlyThisFuncRecursive( assignNodeRightDeepCopyThisFunc, generators ) self.assignBaseElemsOnlyThisFunc = newAssignBaseElemsOnlyNodeThisFunc self.traverseAssignNodeRecursive(self.assignNode.right, False) if M in self.varDeps: self.protectsM = True
def traverseAssignNode(self): if (self.assignNode == None): sys.exit( "Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None." ) self.hasPairings = False self.protectsM = False if (self.assignNode.right.type == ops.LIST): self.isList = True self.type = ops.LIST onlyListElementsTypeDecl = self.isOnlyListElementsTypeDecl( self.assignNode.right) if (onlyListElementsTypeDecl != None): self.listElementsType = onlyListElementsTypeDecl else: addListNodesToList(self.assignNode.right, self.listNodesList) elif (self.assignNode.right.type == ops.SYMMAP): self.isSymmap = True self.type = ops.SYMMAP addListNodesToList(self.assignNode.right, self.listNodesList) elif ((self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD)): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj elif (self.assignNode.right.type == ops.EXPAND): self.isExpandNode = True elif (self.assignNode.right.type == ops.RANDOM): self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left if (self.assignBaseElemsOnly == None): assignNodeRightDeepCopy = copy.deepcopy(self.assignNode.right) #newAssignBaseElemsOnlyNode = self.traverseAssignBaseElemsOnlyRecursive(assignNodeRightDeepCopy) #self.assignBaseElemsOnly = newAssignBaseElemsOnlyNode self.traverseAssignNodeRecursive(self.assignNode.right, False) if (M in self.varDeps): self.protectsM = True
def traverseAssignNode(self): if (self.assignNode == None): sys.exit("Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None.") self.hasPairings = False self.protectsM = False if (self.assignNode.right.type == ops.LIST): self.isList = True self.type = ops.LIST addListNodesToList(self.assignNode.right, self.listNodesList) elif ( (self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD) ): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj self.traverseAssignNodeRecursive(self.assignNode.right) if (M in self.varDeps): self.protectsM = True
def traverseAssignNode(self): if (self.assignNode == None): sys.exit("Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None.") self.hasPairings = False self.protectsM = False if (self.assignNode.right.type == ops.LIST): self.isList = True self.type = ops.LIST onlyListElementsTypeDecl = self.isOnlyListElementsTypeDecl(self.assignNode.right) if (onlyListElementsTypeDecl != None): self.listElementsType = onlyListElementsTypeDecl else: addListNodesToList(self.assignNode.right, self.listNodesList) elif (self.assignNode.right.type == ops.SYMMAP): self.isSymmap = True self.type = ops.SYMMAP addListNodesToList(self.assignNode.right, self.listNodesList) elif ( (self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD) ): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj elif (self.assignNode.right.type == ops.EXPAND): self.isExpandNode = True elif (self.assignNode.right.type == ops.RANDOM): self.isBaseElement = True self.assignBaseElemsOnly = self.assignNode.left if (self.assignBaseElemsOnly == None): assignNodeRightDeepCopy = copy.deepcopy(self.assignNode.right) #newAssignBaseElemsOnlyNode = self.traverseAssignBaseElemsOnlyRecursive(assignNodeRightDeepCopy) #self.assignBaseElemsOnly = newAssignBaseElemsOnlyNode self.traverseAssignNodeRecursive(self.assignNode.right, False) if (M in self.varDeps): self.protectsM = True
def traverseAssignNode(self): if (self.assignNode == None): sys.exit( "Attempting to run traverseAssignNode in VarInfo when self.assignNode is still None." ) self.hasPairings = False self.protectsM = False if (self.assignNode.right.type == ops.LIST): self.isList = True self.type = ops.LIST addListNodesToList(self.assignNode.right, self.listNodesList) elif ((self.assignNode.right.type == ops.ON) and (self.assignNode.right.left.type == ops.PROD)): dotProdObj = DotProd() dotProdObj.setDotProdObj(self.assignNode.right, self.lineNo, self.funcName) self.dotProdObj = dotProdObj self.traverseAssignNodeRecursive(self.assignNode.right) if (M in self.varDeps): self.protectsM = True