Class CAstControlFlowRecorder

  • All Implemented Interfaces:
    CAstControlFlowMap

    public class CAstControlFlowRecorder
    extends Object
    implements CAstControlFlowMap
    An implementation of a CAstControlFlowMap that is designed to be used by producers of CAPA asts. In addition to implementing the control flow map, it additionally allows clients to record control flow mappings in terms of some arbitrary type object that are then mapped to CAstNodes by the client. These objects can be anything, but one common use is that some type of parse tree is walked to build a capa ast, with control flow being recorded in terms of parse tree nodes and then ast nodes being mapped to parse tree nodes. Note that, at present, support for mapping control flow on ast nodes directly is clunky. It is necessary to establish that an ast nodes maps to itself, i.e. call xx.map(node, node).
    • Method Detail

      • add

        public void add​(Object from,
                        Object to,
                        Object label)
        Add a control-flow edge from the `from' node to the `to' node with the (possibly null) label `label'. These nodes must be mapped by the client to CAstNodes using the `map' call; this mapping can happen before or after this add call.
      • map

        public void map​(Object node,
                        CAstNode ast)
        Establish a mapping between some object `node' and the ast node `ast'. Objects used as endpoints in a control flow edge must be mapped to ast nodes using this call.
      • isMapped

        public boolean isMapped​(Object node)