#!@PYTHON@ import sys import os import cgi import cgitb; cgitb.enable() sys.path.insert(0, '@pythondir@') # Directory for temporary files (images and other auxiliary files). imgdir = 'spotimg' # Cleanup stale files from our image directory. os.system('find ' + imgdir + ' -type f -amin +10 -print | xargs rm -f') myself = os.environ['SCRIPT_NAME']; form = cgi.FieldStorage() filled = form.has_key('formula') # FIXME: This assumes Apache. uid = os.environ['UNIQUE_ID']; imgprefix = imgdir + '/' + uid def escaped_print_dot(dict, what): print '
'; sys.stdout.flush()
s = spot.ostringstream()
spot.bdd_print_dot(s, dict, what)
print cgi.escape(s.str())
del s
print ''; sys.stdout.flush()
def escaped_print_set(dict, what):
print ''; sys.stdout.flush()
s = spot.ostringstream()
spot.bdd_print_set(s, dict, what)
print cgi.escape(s.str())
del s
print ''; sys.stdout.flush()
print "Content-Type: text/html"
print
os.close(sys.stderr.fileno())
os.dup2(sys.stdout.fileno(), sys.stderr.fileno())
import spot
print "' sys.stdout.flush() sys.stderr.flush() pel = spot.empty_parse_error_list() f = spot.parse(formula, pel, env, show_parse) if show_parse: print '' print '
' err = spot.format_parse_errors(spot.get_cout(), formula, pel) print '' if not f: print '
Aborting...
' sys.exit(0) if err: print 'Continuing anyway...
' print "Formula is", f, "
Building automaton...', sys.stdout.flush() concrete = spot.ltl_to_tgba(f, dict) print 'done.
' sys.stdout.flush() if show_automaton_dot: print ''; sys.stdout.flush()
s = spot.ostringstream()
spot.dotty_reachable(s, concrete)
print cgi.escape(s.str())
del s
print ''; sys.stdout.flush()
if show_automaton_gif:
outfile = spot.ofstream(imgprefix + '-a.dot')
spot.dotty_reachable(outfile, concrete)
del outfile
os.spawnlp(os.P_WAIT, 'dot', 'dot', '-Tgif', '-o',
imgprefix + '-a.gif', imgprefix + '-a.dot')
print '
'
if show_degen_dot or show_degen_gif:
print ''; sys.stdout.flush() s = spot.ostringstream() spot.dotty_reachable(s, degen) print cgi.escape(s.str()) del s print ''; sys.stdout.flush() if show_degen_gif: outfile = spot.ofstream(imgprefix + '-d.dot') spot.dotty_reachable(outfile, degen) del outfile os.spawnlp(os.P_WAIT, 'dot', 'dot', '-Tgif', '-o', imgprefix + '-d.gif', imgprefix + '-d.dot') print '
'
else:
degen = 0
if show_dictionnay:
print ''
sys.stdout.flush()
concrete.get_dict().dump(spot.get_cout())
print ''
if show_relation_dot or show_relation_set or show_relation_gif:
print '
'
if show_acceptance_dot or show_acceptance_set or show_acceptance_gif:
print '
'
if show_lbtt:
print ''
sys.stdout.flush()
spot.lbtt_reachable(spot.get_cout(), concrete)
print ''
if degen:
print '' sys.stdout.flush() spot.lbtt_reachable(spot.get_cout(), degen) print '' sys.stdout.flush() # Make sure degen is cleared before concrete. del degen del concrete print '