#!/usr/bin/python
import sys,re,pickle
import synt
#
#
#

if len(sys.argv) == 1:
	print "Usage: viewdfs <file>"
	raise SystemExit

if sys.argv[1][-4:] == ".dfs":
	try:
		f = open(sys.argv[1] , "r")
		db = pickle.load(f)	
		f.close()
	except:
		print "Error reading file: ",sys.argv[1]
		raise SystemExit
else:
	try:
		f = open(sys.argv[1] + ".dfs" ,"r")
		db = pickle.load(f)	
		f.close()
	except:
		print "Error reading file: ",sys.argv[1] + ".dfs" 
		raise SystemExit

if len(db)	< synt.MD_LEN: 
	print "Number of Entries only: ", len(db)	
	raise SystemExit
print "Symbol Types:"
for n in range(100): 
	if n not in db[synt.MD_SYMTYPE].values():
		continue
	print "Symbols of Type ",n
	for x in db[synt.MD_SYMTYPE]:
		if  db[synt.MD_SYMTYPE][x] == n:
			print x,
	print
print
print "Precedence:"
for n in range(100): 
	if n not in db[synt.MD_PRECED].values():
		continue
	print "Symbols of Precedence ",n
	for x in db[synt.MD_PRECED]:
		if  db[synt.MD_PRECED][x] == n:
			print x,
	print
print
print "Definienda:"
for x in db[synt.MD_DEFS]:
	for y in db[synt.MD_DEFS][x]:
		print x,y
print "Arity:"
for n in range(10): 
	if n not in db[synt.MD_ARITY].values():
		continue
	print "Schemators of Arity ",n
	for x in db[synt.MD_ARITY]:
		if  db[synt.MD_ARITY][x] == n:
			print x,
	print
print "Transitive Operators: ", db[synt.MD_TROPS]
print "Transitive Combinations: ", db[synt.MD_TRMUL]
print "Commutative-Associative Operators: ", db[synt.MD_CAOPS]
print len(db[synt.MD_THMS]),"Properties File Theorems"
for  x in db[synt.MD_THMS]:
	print x
print "External Reference Abbreviations"
for x in db[synt.MD_REFD]:
	print x, db[synt.MD_REFD][x]
print "User Symbol Definitions"
for x in db[synt.MD_MACR]:
	print x
if db[synt.MD_RSFLG]:
	print "RESET FLAG!"
print "Properties File: ", db[synt.MD_PFILE]
print "Rules of Inference File: ", db[synt.MD_RFILE]

