Add backward moves in the syntax of the automaton.
[SXSI/xpathcomp.git] / src / formula.ml
index 16db6d5..3b344e7 100644 (file)
@@ -6,7 +6,7 @@ type 'hcons expr =
   | False | True
   | Or of 'hcons * 'hcons
   | And of 'hcons * 'hcons
-  | Atom of ([ `Left | `Right ] * bool * State.t)
+  | Atom of ([ `Left | `Right | `Epsilon ] * bool * State.t)
   | Pred of Tree.Predicate.t
 
 type 'hcons node = {
@@ -78,6 +78,7 @@ let rec print ?(parent=false) ppf f =
          match  dir with
            | `Left ->  Pretty.down_arrow, Pretty.subscript 1
            | `Right -> Pretty.down_arrow, Pretty.subscript 2
+           | `Epsilon -> Pretty.epsilon, ""
        in
          fprintf fmt "%s%s" a_str d_str;
          State.print fmt s;
@@ -109,6 +110,7 @@ let atom_ d p s =
   let ss = match d with
     | `Left -> (si,StateSet.empty,si),empty_triple
     | `Right -> empty_triple,(si,StateSet.empty,si)
+    | `Epsilon -> empty_triple, empty_triple
   in fst (cons (Atom(d,p,s)) (Atom(d,not p,s)) ss ss 1 1)
 
 let pred_ p =