34 lines
955 B
Python
34 lines
955 B
Python
import logging
|
|
|
|
from ScEpTIC.llvmir_parser import sections_divider
|
|
from ScEpTIC.llvmir_parser import sections_parser
|
|
from ScEpTIC.llvmir_parser import token_generator
|
|
|
|
|
|
def parse_file(file, set_logging_level=None, log_section_content=False):
|
|
"""
|
|
Parses a .ll file and returns the AST
|
|
"""
|
|
|
|
logging.debug('Calling parse_file()')
|
|
|
|
current_logging_level = logging.getLogger().level
|
|
|
|
if set_logging_level is not None:
|
|
logging.getLogger().setLevel(set_logging_level)
|
|
|
|
# parse file to get corresponding tokens
|
|
tokens = token_generator.get_symbols_from_file(file)
|
|
|
|
# divide into section
|
|
sections = sections_divider.divide_into_sections(tokens)
|
|
|
|
# parse each section
|
|
parsed_sections = sections_parser.parse_sections(sections, log_section_content)
|
|
|
|
if set_logging_level is not None:
|
|
logging.getLogger().setLevel(current_logging_level)
|
|
|
|
|
|
return parsed_sections
|