def generate_code(analyser: Analyser) -> bytes: """ Generates the Neo VM bytecode using of the analysed Python code :param analyser: semantic analyser it tge Python code :return: the Neo VM bytecode """ VMCodeMapping.reset() from boa3.compiler.codegeneratorvisitor import VisitorCodeGenerator generator = CodeGenerator(analyser.symbol_table) visitor = VisitorCodeGenerator(generator) visitor.visit(analyser.ast_tree) analyser.symbol_table.update(generator.symbol_table) generator.initialized_static_fields = True for symbol in [ symbol for symbol in analyser.symbol_table.values() if isinstance(symbol, Import) ]: generator.symbol_table.update(symbol.all_symbols) visitor.visit(symbol.ast) return generator.bytecode
def build_code_generator(self) -> CodeGenerator: from boa3.compiler.vmcodemapping import VMCodeMapping VMCodeMapping.reset() return CodeGenerator({})