reachability_2_graphviz.py 606 B

123456789101112131415161718192021
  1. import json
  2. content = open("reachability_trace.txt", 'r').readlines()
  3. output = "digraph {\n"
  4. output += "\toverlap=false;\n"
  5. output += "\tsplines=true;\n"
  6. for f in content:
  7. if "--[" in f:
  8. # Transition
  9. src, rem = f.split(" --[", 1)
  10. name, dst = rem.split("]--> ", 1)
  11. output += '\tnode_%s -> node_%s [label="%s"]\n' % (src.strip(), dst.strip(), name.strip())
  12. else:
  13. # Node
  14. name, value = f.split(": ", 1)
  15. output += '\tnode_%s [label="%s"]\n' % (name, ",".join([str(i[1]) for i in sorted(json.loads(value).items())]))
  16. output += "}"
  17. print(output)