def parse_statements(graph, statements, bel_parser):
"""Parses a list of statements from a BEL Script.
:param BELGraph graph: A BEL graph
:param iter[str] statements: An enumerated iterable over the lines in the statements section of a BEL script
:param BelParser bel_parser: A BEL parser
"""
t = time.time()
for line_number, line in statements:
try:
bel_parser.parseString(line, line_number=line_number)
except ParseException as e:
parse_log.error('Line %07d - General Parser Failure: %s', line_number, line)
graph.add_warning(line_number, line, BelSyntaxError(line_number, line, e.loc),
bel_parser.get_annotations())
except PyBelWarning as e:
parse_log.warning('Line %07d - %s: %s', line_number, e.__class__.__name__, e)
graph.add_warning(line_number, line, e, bel_parser.get_annotations())
except Exception as e:
parse_log.exception('Line %07d - General Failure: %s', line_number, line)
graph.add_warning(line_number, line, e, bel_parser.get_annotations())
log.info('Parsed statements section in %.02f seconds with %d warnings', time.time() - t, len(graph.warnings))
for k, v in sorted(Counter(e.__class__.__name__ for _, _, e, _ in graph.warnings).items(), reverse=True):
log.debug(' %s: %d', k, v)
评论列表
文章目录