psyclone.psyir.transformations.move_trans#

This module provides the MoveTrans transformation.

Classes#

  • MoveTrans: Provides a transformation to move a node in the tree. For

class psyclone.psyir.transformations.move_trans.MoveTrans[source]#

Provides a transformation to move a node in the tree. For example:

from psyclone.transformations import MoveTrans
trans=MoveTrans()
trans.apply(schedule.children[0], schedule.children[2],
            options = {"position":"after")

Nodes may only be moved to a new location with the same parent and must not break any dependencies otherwise an exception is raised.

Inheritance

Inheritance diagram of MoveTrans
apply(node, location, position='before', options=None, **kwargs)[source]#

Move the node represented by node before location location (which is also a node) by default and after if the optional position argument is set to ‘after’.

Parameters:
  • node (Node) – the node to be moved.

  • location (Node) – node before or after which the given node should be moved.

  • position (str) – whether to place the moved node before or after the location. This must be ‘before’ or ‘after’.

  • options (Optional[Dict[str, Any]]) – a dictionary with options for transformations.

  • options["position"] (str) – either ‘before’ or ‘after’.

Raises:
validate(node, location, options=None, **kwargs)[source]#

validity checks for input arguments.

Parameters:
  • node (Node) – the node to be moved.

  • options (Optional[Dict[str, Any]]) – a dictionary with options for transformations.

  • options["position"] (str) – either ‘before’ or ‘after’.

  • location (Node) – node before or after which the given node should be moved.

  • position (str) – whether to place the moved node before or after the location. This must be ‘before’ or ‘after’.

Raises: