tr_aux : (Ata.state,int*(Ata.transition list)) Hashtbl.t;
mutable entry_points : (Tag.t*Ptset.t) list;
mutable contains : string option;
tr_aux : (Ata.state,int*(Ata.transition list)) Hashtbl.t;
mutable entry_points : (Tag.t*Ptset.t) list;
mutable contains : string option;
(if mark then replace old_dst f else f)
*& pred *&
(if mark then Ata.true_ else (_l dir) ** q_dst),
(if mark then replace old_dst f else f)
*& pred *&
(if mark then Ata.true_ else (_l dir) ** q_dst),
let _ = if axis=Descendant then
add_trans num conf.tr_aux (
?< q_src><@ ((if ex||nrec then TagSet.diff TagSet.star test
let _ = if axis=Descendant then
add_trans num conf.tr_aux (
?< q_src><@ ((if ex||nrec then TagSet.diff TagSet.star test
- else TagSet.star),false,
- `True )>=> `LLeft ** q_src )
+ else TagSet.star),false)>=> `LLeft ** q_src )
- else TagSet.any), false, `True )>=>
- if ex then ( Ata.atom_ `Left false q_src) *& right ** q_src
+ else TagSet.any), false)>=>
+ if ex then right ** q_src
let _ = match annot_path with
| (((Parent|Ancestor|AncestorOrSelf),_,_),_)::_ -> conf.final_state <- Ptset.add qdst conf.final_state
| _ -> ()
let _ = match annot_path with
| (((Parent|Ancestor|AncestorOrSelf),_,_),_)::_ -> conf.final_state <- Ptset.add qdst conf.final_state
| _ -> ()
(a_st,anc_st,par_st,pre_st,idx, ((ret_dir) ** q))
| True -> states,Ptset.empty,Ptset.empty,Ptset.empty,idx,Ata.true_
| False -> states,Ptset.empty,Ptset.empty,Ptset.empty,idx,Ata.false_
(a_st,anc_st,par_st,pre_st,idx, ((ret_dir) ** q))
| True -> states,Ptset.empty,Ptset.empty,Ptset.empty,idx,Ata.true_
| False -> states,Ptset.empty,Ptset.empty,Ptset.empty,idx,Ata.false_
Ata.states = if has_backward then Ptset.add config.st_from_root a_st else a_st;
Ata.init = Ptset.singleton config.st_root;
Ata.final = Ptset.union anc_st config.final_state;
Ata.states = if has_backward then Ptset.add config.st_from_root a_st else a_st;
Ata.init = Ptset.singleton config.st_root;
Ata.final = Ptset.union anc_st config.final_state;