Stmt.finder
A visitor with a shortcut. Finder is a specialization of a visitor, that uses return
as its folding argument. At any time you can stop the traversing by calling return
function of the provided argument (which is by itself is a record with one field - a function accepting argument of type 'a option
).
For example, the following function will check whether x
variable is assigned (i.e., occurs on the left of the assignment operator) in the provided scope.
let is_assigned x = find (object(self)
inherit [unit] finder
method! enter_move y _rhs cc =
if Var.(x = y) then cc.return (Some ()); cc
end)
There're three find
functions in the library, that accepts an object of type finder
:
Bil.finder
searches in the stmt list
aka bil
Stmt.finder
searches in stmt
Exp.finder
searches in exp
.In addition, you can use this object directly, using one of the two provided entry points.