def add_to_internal_block(self, declaration): # todo by KP: factor me out to utils """ Adds the handed over declaration the internal block :param declaration: a single declaration :type declaration: ast_declaration """ if self.get_internals_blocks() is None: ASTUtils.create_internal_block(self) self.get_internals_blocks().get_declarations().append(declaration) return
def add_to_internal_block(self, declaration, index=-1): """ Adds the handed over declaration the internal block :param declaration: a single declaration :type declaration: ast_declaration """ if self.get_internals_blocks() is None: ASTUtils.create_internal_block(self) n_declarations = len(self.get_internals_blocks().get_declarations()) if n_declarations == 0: index = 0 else: index = 1 + (index % len(self.get_internals_blocks().get_declarations())) self.get_internals_blocks().get_declarations().insert(index, declaration) declaration.update_scope(self.get_internals_blocks().get_scope()) from pynestml.visitors.ast_symbol_table_visitor import ASTSymbolTableVisitor symtable_vistor = ASTSymbolTableVisitor() symtable_vistor.block_type_stack.push(BlockType.INTERNALS) declaration.accept(symtable_vistor) symtable_vistor.block_type_stack.pop()