Java Reference
In-Depth Information
class
ReflectiveVisitor
/
Generic visit
/
35
procedure
visit
(AbstractNode
n
)
this
.
dispatch(
n
)
end
procedure
36
dispatch
(Object
o
)
/
Find and invoke the
visit
(
n
) method
/
/
whose declared parameter
n
is the closest match
/
/
for the actual type of
o
.
/
end
(AbstractNode
n
)
foreach
AbstractNode
c
∈
Children
(
n
)
do
this
.
visit(
c
)
end
end
procedure
default
V
isit
37
class
IfNode
extends
AbstractNode
implements
38
{
NeedsBooleanPredicate
}
end
class
WhileNode
extends
AbstractNode
implements
39
{
NeedsBooleanPredicate
}
end
class
PlusNode
extends
AbstractNode
implements
{
NeedsCompatibleTypes
}
end
class
TypeChecking
extends
ReflectiveVisitor
40
procedure
visit
(NeedsBooleanPredicate
nbp
)
41
Check the type of
nbp
.
getPredicate()
/
/
end
procedure
visit
(NeedCompatibleTypes
nct
)
42
end
procedure
visit
(NeedsLeftChildType
nlct
)
43
end
end
Figure 7.24: Reflective Visitor