*)
let compile_axis_test axis (test,kind) phi trans states =
- let q = State.make () in
+ let q = State.next () in
let phi = match kind with
Tree.NodeKind.Node -> phi
| _ -> phi %% F.is kind
]) :: trans,
states)
| Descendant true ->
- let q' = State.make () in
+ let q' = State.next () in
(F.stay q ++ F.first_child q',
(q', [ QNameSet.any => F.stay q ++ F.first_child q' ++ F.next_sibling q';
])::
states)
| Parent ->
- let q' = State.make () in
+ let q' = State.next () in
let move = F.parent q ++ F.previous_sibling q' in
(move,
(q, [ test => phi ])
(q' @: states))
| Ancestor self ->
- let q' = State.make () in
+ let q' = State.next () in
let move = F.parent q' ++ F.previous_sibling q' in
(if self then F.stay q ++ F.stay q' else F.stay q'),
(q', [ QNameSet.any => move ++ F.parent q])
in
loop ll trans2 states2 phi2
in
- let starting = State.make () in
+ let starting = State.next () in
let phi0, trans0, states0 =
compile_axis_test
Self
let builder = Ata.Builder.make () in
(** ensure that we have a single selecting state at the end *)
let phi_sel = StateSet.fold (fun q acc -> F.or_ (F.stay q) acc) mstates F.false_ in
- let q_sel = State.make () in
+ let q_sel = State.next () in
let states = StateSet.add q_sel states in
let mstates = StateSet.singleton q_sel in
let trans = (q_sel, [QNameSet.any, phi_sel]) :: trans in