ag_gen/tools/color_code.py
2021-09-23 13:55:29 -05:00

45 lines
1.2 KiB
Python

#!/usr/bin/env python3
from sys import argv, exit
if len(argv) != 4:
print("Usage: %s [parse file] [input DOT file] [output DOT file]" % argv[0])
exit(1)
critical = []
nodecolor = []
with open(argv[1], 'r') as myfile:
text = myfile.read()
splits = text.split("ID:")
states = len(splits) -1
for i in range(states):
if "is_critical=true" in splits[i]:
critical.append("label="+str(i-1))
with open(argv[2], 'r') as inDOT:
DOTtext = inDOT.read()
dotsplits = DOTtext.split("\n")
for x in range(len(dotsplits)):
if (any(ele in (dotsplits[x]) for ele in critical)):
nodestr=dotsplits[x].rsplit(' ')[0]
node=nodestr.split("->")[1]
if node not in nodecolor:
nodecolor.append(node)
for x in range(len(dotsplits)):
if ("label" not in dotsplits[x]):
if (any(ele in (dotsplits[x]) for ele in nodecolor)):
tmpstr=dotsplits[x].split(";")[0]
newstr=tmpstr
finalstr=newstr.replace(tmpstr, tmpstr+"[fillcolor = \"#FF2C2C\", style=filled, fontname=\"times-bold\"];")
(dotsplits[x])=finalstr
sep="\n"
with open(argv[3], 'w') as outDOT:
outDOT.write(sep.join(dotsplits))