def einit(init, domain): def mixInitWithLoc(loc): newInit = copy.deepcopy(init) checkForAlgebraicExpressions(newInit["expression"],["%loc"],[locations[loc]],str(0)) solveAlgebraicExpressions(newInit["expression"]) newInit["expression"] = checkForChains(newInit["expression"]) insertLocInExpression(newInit["expression"], loc) newInit["quantity"] = substituteDataArrayElementInString("%loc", newInit["quantity"], locations[loc]) newInit["quantity"] = str(int(aeParser.parse(newInit["quantity"],lexer=aeLexer))) return newInit def mixInitWithOrgDst(matrixCell): (org, dst, r) = matrixCell if (options.fullMatrix == False and r == 0): return nullInstruction if (org != dst): newInit = copy.deepcopy(init) checkForAlgebraicExpressions(newInit["expression"],["%org","%dst"],[locations[org],locations[dst]],str(r)) solveAlgebraicExpressions(newInit["expression"]) newInit["expression"] = checkForChains(newInit["expression"]) insertOrgInExpression(newInit["expression"],org) insertDstInExpression(newInit["expression"],dst) newInit["quantity"] = substituteDataArrayElementInString("%org", newInit["quantity"], locations[org]) newInit["quantity"] = substituteDataArrayElementInString("%dst", newInit["quantity"], locations[dst]) newInit["quantity"] = newInit["quantity"].replace("%cell", str(r)) newInit["quantity"] = str(int(aeParser.parse(newInit["quantity"],lexer=aeLexer))) return newInit else: return nullInstruction initBuilder = None if (domain[0].__class__ == "".__class__): #if it is string, it is just loc initBuilder = mixInitWithLoc else: #the type is tuple, it is a matrix initBuilder = mixInitWithOrgDst for i in map(initBuilder, domain): printing.printInit(i)