mutable entry_points : (Tag.t*Ptset.t) list;
mutable contains : string option;
mutable univ_states : Ata.state list;
+ mutable starstate : Ptset.t option;
}
let dummy_conf = { st_root = -1;
st_univ = -1;
entry_points = [];
contains = None;
univ_states = [];
+ starstate = None;
}
if nrec then `LLeft,`RRight
else `Left,`Right
in
-
+ let _ = if is_last && axis=Descendant && TagSet.equal test TagSet.star
+ then conf.starstate <- Some(Ptset.singleton q_src)
+ in
let t1 = ?< q_src><(test, is_last && not(ex))>=>
- p_f *& ( if false (*is_last*) then Ata.true_ else (_l left) ** q_dst) in
+ p_f *& ( if is_last then Ata.true_ else (_l left) ** q_dst) in
let _ = add_trans num conf.tr t1 in
entry_points = [];
contains = None;
univ_states = [];
+ starstate = None;
}
in
let q0 = Ata.mk_state() in
Ata.universal = Ptset.add a_dst (Ptset.from_list config.univ_states);
Ata.phi = phi;
Ata.sigma = Ata.HTagSet.create 17;
+ Ata.starstate = config.starstate;
},config.entry_points,!contains