import sys content = open('compiler/src/generators/z3.ts').read() lines = content.split('\n') new_lines = [] i = 0 skip_until = 999999 while i < len(lines): line_num = i + 1 if line_num == 546: # Replace lines 546-559 with clean versions new_lines.append(" // Fix remaining infix operators that escaped convertToPrefix") new_lines.append(" // word = word/val: convert to (= word val)") new_lines.append(" e = e.replace(/(\\b\\w+)\\s*=\\s*(\\w+|\\d+|Bool|true|false)\\b/g, '(= $1 $2)');") new_lines.append(" // (innermost expr) = val: convert to (= (expr) val)") new_lines.append(" e = e.replace(/\\(([^()]+)\\)\\s*=\\s*(\\w+|\\d+|Bool|true|false)\\b/g, '(= ($1) $2)');") new_lines.append(" // word <= word: convert to (<= word word)") new_lines.append(" e = e.replace(/(\\b\\w+)\\s*(<=|>=)\\s*(\\w+|\\d+|Bool|true|false)\\b/g, '($2 $1 $3)');") new_lines.append(" // (innermost expr) <= val: convert to (<= (expr) val)") new_lines.append(" e = e.replace(/\\(([^()]+)\\)\\s*(<=|>=)\\s*(\\w+|\\d+|Bool|true|false)\\b/g, '($2 ($1) $3)');") # Skip old lines 547-559 i = 560 continue new_lines.append(lines[i]) i += 1 open('compiler/src/generators/z3.ts', 'w').write('\n'.join(new_lines)) print('Done')