Control flow analysis is a static code analysis technique for determining the control flow of a program.
For many languages, the control flow of a program is explicit in a program's source code. As a result, control-flow analysis implicitly usually refers to a static analysis technique for determining the receiver(s) of function or method calls in computer programs written in a higher-order programming language. For both functional programming languages and object-oriented programming languages, the term CFA refers to an algorithm that computes control flow.
The term control flow analysis was introduced independently by Neil D. Jones[1] and Olin Shivers[2].
In a programming language like Scheme, the target of a function call may not be explicit. For example in the isolated expression:
(lambda (f) (f x))
it is unclear to which procedure f
may refer. To determine the possible targets, a control-flow analysis must consider where this expression could be invoked, and what argument it may receive.
Abstract interpretation, constraint solving and type systems may be used to compute control-flow analysis.
References
- ^ Neil D. Jones (1981), "Flow analysis of lambda expressions", Automata, Languages and Programming: 114–128, doi:10.1007/3-540-10843-2_10
- ^ Shivers, Olin (1988), "Control-flow analysis in Scheme", Proceedings of the ACM SIGPLAN'88 Conference on Programming Language Design and Implementation (PLDI), SIGPLAN Notices, Vol.23, No.7: 164–174, doi:10.1145/53990.54007
{{citation}}
: Unknown parameter|note=
ignored (help)
This article has not been added to any content categories. Please help out by adding categories to it so that it can be listed with similar articles. (April 2010) |