[go: nahoru, domu]

Jump to content

Control-flow analysis: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
not it doesn't usually refer to that except in the inter-procedural case
Line 18: Line 18:
}}</ref>{{primary source inline}} 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}}
}}</ref>{{primary source inline}} 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}}


For many [[imperative programming language]]s, 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 example, in a programming language with [[higher-order functions]] like [[Scheme (programming language)|Scheme]], the target of a function call may not be explicit: in the isolated expression
For many [[imperative programming language]]s, the control flow of a program is explicit in a program's source code. As a result, [[inter-procedural]] 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 example, in a programming language with [[higher-order functions]] like [[Scheme (programming language)|Scheme]], the target of a function call may not be explicit: in the isolated expression
<source lang="scheme">
<source lang="scheme">
(lambda (f) (f x))
(lambda (f) (f x))

Revision as of 22:00, 20 July 2014

In computer science, control flow analysis is a static code analysis technique for determining the control flow of a program. The control flow is expressed as a control flow graph (CFG). The term "control flow analysis" was introduced independently by Neil D. Jones[1] and Olin Shivers.[2][non-primary source needed] For both functional programming languages and object-oriented programming languages, the term CFA, and elaborations such as k-CFA, refer to specific algorithms that compute control flow.[dubiousdiscuss]

For many imperative programming languages, the control flow of a program is explicit in a program's source code. As a result, inter-procedural 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 example, in a programming language with higher-order functions like Scheme, the target of a function call may not be explicit: 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.

Techniques such as abstract interpretation, constraint solving and type systems may be used to compute control-flow analysis.[3][dubiousdiscuss]

See also

References

  1. ^ Neil D. Jones (1981), "Flow analysis of lambda expressions", Automata, Languages and Programming: 114–128, doi:10.1007/3-540-10843-2_10
  2. ^ 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
  3. ^ Flemming Nielson, Hanne Riis Nielson & Chris Hankin (1999). Principles of Program Analysis. Springer.

External links