Java Reference
In-Depth Information
procedure
(DoWhileLooping
dwn
)
dwn
.
loopBody
.
isReachable
←
true
visit
dwn
.
terminatesNormally
←
false
25
call
dwn
.
loopBody
.
accept(
this
)
constExprVisitor
←
26
new
ConstExprVisitor()
call
dwn
.
condition
.
accept(
constExprVisitor
)
conditionValue
←
dwn
.
condition
.
exprValue
if
conditionValue
true
then
bodyNormal
←
dwn
.
loopBody
.
terminatesNormally
dwn
.
terminatesNormally
←
dwn
.
terminatesNormally
or
bodyNormal
27
end
Figure 9.7: Reachability Analysis for a Do-While Statement
procedure
(ForLooping
fn
)
fn
.
terminatesNormally
←
true
fn
.
loopBody
.
isReachable
←
true
if
visit
fn
.
condition
null
then
constExprVisitor
←
new
ConstExprVisitor()
call
fn
.
condition
.
accept(
constExprVisitor
)
conditionValue
←
fn
.
condition
.
exprValue
if
conditionValue
=
true
then
fn
.
terminatesNormally
←
false
else
if
conditionValue
=
false
then
fn
.
loopBody
.
isReachable
←
false
else
fn
.
terminatesNormally
←
false
call
fn
.
loopBody
.
accept(
this
)
end
Figure 9.8: Reachability Analysis for a For Loop