Content deleted Content added
m Capitalising short description "compiler technique" per WP:SDFORMAT (via Bandersnatch) |
mNo edit summary |
||
Line 1:
{{Short description|Compiler technique}}
{{
In [[computer science]], '''control-flow analysis''' ('''CFA''') is a [[static code analysis|static-code-analysis]] technique for determining the [[control flow]] of a program. The control flow is expressed as a [[control-flow graph]] (CFG). For both [[functional programming language]]s and [[object-oriented programming language]]s, the term CFA, and elaborations such as ''k''-CFA, refer to specific algorithms that compute control flow.{{dubious|date=July 2014}}
For many [[imperative programming language]]s, the control flow of a program is explicit in a program's source code.{{dubious|date=July 2014}} As a result, [[interprocedural analysis|interprocedural]] 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]].{{dubious|date=July 2014}} For example, in a programming language with [[higher-order
<syntaxhighlight lang="scheme">
(lambda (f) (f x))
</syntaxhighlight>
it is unclear to which procedure <code>f</code> may refer. A control-flow analysis must consider where this expression could be invoked and what argument it may receive to determine the possible targets.
Techniques such as [[abstract interpretation]], [[constraint solving]], and [[type system]]s may be used for control-flow analysis.<ref>{{cite book |author-first1=Flemming |author-last1=Nielson |author-first2=Hanne Riis |author-last2=Nielson |author-first3=Chris |author-last3=Hankin |title=Principles of Program Analysis |publisher=[[Springer Science+Business Media]] |date=2005}}</ref>{{page needed|date=July 2014}}
==
* [[Control-flow diagram]] (CFD)
* [[Data-flow analysis]]
|