# Function: Remove all formatting from a Prolog program # Author: Claude AI # Caution: There may be a problem with specific file names embedded in long predicates. import re import sys import os def process_prolog_code(prolog_code): # Regular expression pattern to match filenames ending with a quote, strip periods pattern = r'([a-zA-Z0-9]+(?:\.[a-zA-Z0-9]+)+)\'' # Function to replace matched filenames def replace_filename(match): return re.sub(r'\.', '', match.group(1)) + "'" # Use re.sub to find and replace all matching filenames converted_filenames = re.sub(pattern, replace_filename, prolog_code) # Remove single-line comments code_without_single_line = re.sub(r'%.*$', '', converted_filenames, flags=re.MULTILINE) # Remove multi-line comments code_without_comments = re.sub(r'/\*[\s\S]*?\*/', '', code_without_single_line) # Split code into predicate segments predicates = re.split(r'(?") sys.exit(1) input_file = sys.argv[1] output_file = get_output_filename(input_file) try: with open(input_file, 'r') as file: prolog_code = file.read() except FileNotFoundError: print(f"Error: File '{input_file}' not found.") sys.exit(1) except IOError: print(f"Error: Unable to read file '{input_file}'.") sys.exit(1) processed_code = process_prolog_code(prolog_code) try: with open(output_file, 'w') as file: file.write(processed_code) print(f"Processed Prolog code has been written to '{output_file}'") except IOError: print(f"Error: Unable to write to file '{output_file}'.") sys.exit(1) if __name__ == "__main__": main()