# # samechek.py -- Simple program to superficially check certain equivalences. # Written May 22 2007 and placed in Public Domain. # # Usage: # from samechek import * # samechek('uusimmatp.txt') # (for example...) import os import re def readbfile_as_oneline(Anum): '''Open b-file for reading and construct a string from it.''' filename = "b" + Anum[1:] + ".txt" infp = open(filename,'r') linepat = re.compile(r'^([0-9]+) ([0-9]+)') terms = "" for line in infp.xreadlines(): m = linepat.match(line) if(m): ind = m.group(1) # val = m.group(2) # terms = terms + "," + val else: print "SKIPPING THE FOLLOWING LINE in " + filename + ": " + line + "\n" return(terms[1:]) # Skip the first comma. def samechek(filename): '''Opens file "filename" for reading and some checking...''' infp = open(filename,'r') # try: # lastdot = filename.rindex('.') # outfilename = filename[:lastdot] + ".htm" # except ValueError: # There were no dot in the filename # outfilename = filename + ".htm" # outfp = open(outfilename,'w') # outfp.write("
\n")
linepat = re.compile(r'^(..) (A[0-9]+) ')
prev_key = ""
prev_anum = ""
prev_terms = ""
for line in infp.xreadlines():
m = linepat.match(line)
if(m):
key = m.group(1) #
anum = m.group(2) #
terms = m.string[m.end(2)+1:-1] # The rest, sans newline
if("" == prev_anum):
huihai = "slapstick"
elif(anum == prev_anum):
if(len(terms) < len(prev_terms)):
print ("ERROR: Length of terms on line " + key + anum
+ " is less than length of terms on line " + prev_key + prev_anum
+ "\n")
elif(terms[0:len(prev_terms)] == prev_terms):
print ("OK: The terms on line " + prev_key + prev_anum
+ " match the beginning of the terms on line " + key + anum
+ "\n")
else:
print ("ERROR: The terms on line " + prev_key + prev_anum
+ " DO NOT match the beginning of the terms on line " + key + anum
+ "\n")
print ("prev_terms=" + prev_terms + "\n")
print ("terms[0:len(prev_terms)]=" + terms[0:len(prev_terms)] + "\n")
else: # i.e. if(anum != prev_anum):
print "ERROR: prev_anum != anum (" + prev_key + prev_anum + " != " + key + anum + ")\n"
if("CC" == key):
bfile_terms = readbfile_as_oneline(anum)
if(len(bfile_terms) > len(terms)):
print ("ERROR: Length of terms (" + str(len(terms)) + ") on line " + key + anum
+ " is less than the length of terms constructed from b-file (= " + str(len(bfile_terms))
+ ")\n")
print "terms=" + terms + "\n"
print "bfile_terms=" + bfile_terms + "\n"
elif(bfile_terms == terms):
print ("OK: The terms on line " + key + anum
+ " match the terms in b-file"
+ "(" + str(len(terms)) + " = " + str(len(bfile_terms)) + ")"
+ "\n")
# print "terms=" + terms + "\n"
# print "bfile_terms=" + bfile_terms + "\n"
elif(terms[0:len(bfile_terms)] == bfile_terms):
print ("OK: The beginning of the terms on line " + key + anum
+ " match the terms in b-file"
+ "\n")
# print "terms=" + terms + "\n"
# print "bfile_terms=" + bfile_terms + "\n"
else:
print ("ERROR: The terms on line " + key + anum
+ " DO NOT match the terms in b-file!"
+ "\n")
print ("terms=" + terms + "\n")
print ("bfile_terms=" + bfile_terms + "\n")
prev_key = key
prev_anum = anum
prev_terms = terms
else:
prev_key = ""
prev_anum = ""
prev_terms = ""
# This module ends here.