Beispiel #1
0
	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)
Beispiel #2
0
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)
Beispiel #3
0
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)