def searchValue( self, varMap ): tmpResult = [] if ( ( self.alreadyCalculated == True and self.value != -1 ) or self.value == 1 or len(self.solutions) == 0 ): self.alreadyCalculated = True return (self.value) if ( self.inProgress == True ): return (-1) self.inProgress = True for (i, solution) in enumerate(self.solutions): tmpResult.append(solution.calculValue(varMap)) print "######--debug--######" self.display() for solution in self.solutions: print(solution.display()) print "#####################" result = -1 for (i, solution) in enumerate(tmpResult): if ( result == -1 ): result = solution elif ( result != solution and solution != -1 ): exit_error("Regles incoherante concernant " + self.name) elif ( solution != -1 ) : result = solution self.alreadyCalculated = True self.value = result # print("Value found for " + self.name) self.inProgress = False return (result)
def parseLine(line, facts, input, output, queries): parsedLine = "" if len(line.strip()) > 0 and line.strip()[0] != '#': for letter in line: if (letter == '#'): break if (checkAuthorizedChar(letter)): if not letter.isspace(): parsedLine += letter fillVar(facts, letter) else: exit_error("Unauthorized char in input file") checkLine(parsedLine, input, output, queries)
def checkLine(line, input, output, queries): regexQuery = getRuleRegex() regexInput = "^([=][]A-Z]{1,})$" regexOutput = "^([?][]A-Z]{1,})$" if re.search(regexQuery, line): queries.append(line) elif re.search(regexInput, line): input.extend(list(line[1:])) elif re.search(regexOutput, line): output.extend(list(line[1:])) else: exit_error("Unauthorized Line in file: "+ line)