def resolve_file(filename): parser = Parser() try: with open(filename, 'r') as file: for line in file: line = re.sub('\s', '', line) line_is_ignored = ignored_line.match(line) if line_is_ignored is not None: continue try: parser.handle_line(line) except ParseError as exception: print( colored( 'Parse error of type : {} detected on line\n\t --> {}' .format(exception.exception_type, line), 'red')) raise FileError() if not parser.queries: print(colored('No queries furnished', 'red')) raise FileError if args.verbose: print(parser) resolver = Resolver(parser.facts, parser.rules, args.verbose) for query in parser.queries: try: if args.verbose: print( colored('Query to solve : {}'.format(query), 'yellow')) response = resolver.resolve_query(query) print( colored( 'query {} has been resolved to : {}'.format( query, response), 'green')) except ContradictionError as exception: print( colored( 'Contradiction detected on {0} that is {1} while his opposite is also {1}' .format(exception.name, exception.value), 'red')) except (FileNotFoundError, NameError, PermissionError, IsADirectoryError, UnicodeDecodeError) as error: print(colored(error, 'red')) raise FileError()