@syntest/cfg
Version:
A Control Flow Graph package
41 lines • 2.31 kB
TypeScript
export declare enum EdgeType {
/**
* A normal edge is an edge that is neither a back edge nor an abnormal edge. Normal edges are typical of control flow.
*/
NORMAL = "NORMAL",
/**
* An exception edge is an edge that is part of an exception handling statement. Exception edges are typical of try-catch statements.
*/
EXCEPTION = "EXCEPTION",
/**
* A conditional edge is an edge that is part of a conditional statement. Conditional edges are typical of if statements.
*/
CONDITIONAL_TRUE = "CONDITIONAL_TRUE",
CONDITIONAL_FALSE = "CONDITIONAL_FALSE",
/**
* An interprocedural edge is an edge that crosses a procedure boundary. Interprocedural edges are typical of function calls.
* https://www.researchgate.net/profile/Katherine-Yelick/publication/228396231/figure/fig1/AS:669526194667520@1536638892015/Construction-of-the-interprocedural-control-flow-graph-of-a-program-from-the-individual.png
*/
INTERPROCEDURAL = "INTERPROCEDURAL",
/**
* A back edge is an edge that points to a block that has already been met during a depth-first (DFS) traversal of the graph. Back edges are typical of loops.
* https://en.wikipedia.org/wiki/Control-flow_graph
*/
BACK_EDGE = "BACK_EDGE",
/**
* A critical edge is an edge which is neither the only edge leaving its source block, nor the only edge entering its destination block. These edges must be split: a new block must be created in the middle of the edge, in order to insert computations on the edge without affecting any other edges.
* https://en.wikipedia.org/wiki/Control-flow_graph
*/
CRITICAL_EDGE = "CRITICAL_EDGE",
/**
* An abnormal edge is an edge whose destination is unknown. Exception handling constructs can produce them. These edges tend to inhibit optimization.
* https://en.wikipedia.org/wiki/Control-flow_graph
*/
ABNORMAL_EDGE = "ABNORMAL_EDGE",
/**
* An impossible edge (also known as a fake edge) is an edge which has been added to the graph solely to preserve the property that the exit block postdominates all blocks. It cannot ever be traversed.
* https://en.wikipedia.org/wiki/Control-flow_graph
*/
IMPOSSIBLE_EDGE = "IMPOSSIBLE_EDGE"
}
//# sourceMappingURL=EdgeType.d.ts.map