in cbmc_viewer/symbol_table.py [0:0]
def parse_symbol_table(definitions, wkdir):
"""Extract symbols and source locations from symbol table definitions."""
def nonnull(items):
nonnull_items = [item for item in items if item is not None]
if nonnull_items:
return nonnull_items[0]
return None
def nonnull_pair(items):
nonnull_items = [item for item in items if item is not None
and (item[0] is not None or item[1] is not None)]
if nonnull_items:
return nonnull_items[0]
return None, None
def symbol(dfn):
return nonnull([parse_symbol(line) for line in dfn])
def pretty(dfn):
return nonnull([parse_pretty_name(line) for line in dfn])
def location(dfn, wkdir):
return nonnull_pair([parse_location(line, wkdir) for line in dfn])
def parse_definition(dfn, wkdir):
loc = location(dfn, wkdir)
return {
'symbol': pretty(dfn) or symbol(dfn),
'file': loc[0],
'line': loc[1]
}
return [parse_definition(dfn, wkdir) for dfn in definitions]