in cbmc_viewer/tracet.py [0:0]
def parse_text_traces(textfile, root=None, wkdir=None):
"""Parse a set of text traces."""
with open(textfile) as data:
lines = '\n'.join(data.read().splitlines())
blocks = re.split(r'\n\n+', lines)
traces = {}
name = None
trace = []
in_trace = False
for block in blocks:
if block.startswith('Trace for'):
if name:
traces[name] = trace
name = None
trace = []
name = block.split()[-1][:-1]
in_trace = True
continue
if not in_trace:
continue
if block.startswith('State'):
trace.append(parse_text_state(block, root, wkdir))
continue
if block.startswith('Assumption'):
trace.append(parse_text_assumption(block, root, wkdir))
continue
if block.startswith('Violated property'):
trace.append(parse_text_failure(block, root, wkdir))
continue
if block.startswith('** '):
if name:
traces[name] = trace
break
raise UserWarning("Unknown block: {}".format(block))
return traces