(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-03-09 19:17:26 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-10 12:28:07 CET by Kim Nguyen>
*)
open Ast
QNameSet.any => F.next_sibling q ]) :: trans,
states)
- | Descendant self ->
- ((if self then F.stay q else F.first_child q),
+ | Descendant false ->
+ (F.first_child q,
(q, [ test => phi %% phi_attr;
QNameSet.any => F.first_child q ++ F.next_sibling q;
]) :: trans,
states)
+ | Descendant true ->
+ let q' = State.make () in
+ (F.or_ (F.stay q) (F.first_child q'),
+ (q', [ test => phi %% phi_attr;
+ QNameSet.any => F.first_child q' ++ F.next_sibling q';
+ ])::
+ (q, [ test => phi %% phi_attr]):: trans,
+ states)
| Parent ->
let q' = State.make () in