anchor.diff:      | Catenate
       | Alternate
       | ZeroOrOne
  -    | Many
  +    | ZeroOrMore
       | OneOrMore
       with
           static member fromChar c=
  
positive.code:             | '.' -> Some Catenate
              | '|' -> Some Alternate
              | '?' -> Some ZeroOrOne
              | '*' -> Some Many
              | '+' -> Some OneOrMore
              | _ -> None
  
  
negative.code:             let e =pop()
              let s = state Split (!idgen()) (Some(e.start)) None
              push(frag(s, e.out @ [State_out1(s)]))
          | Operation ZeroOrMore ->
              let e = pop()
              let s = state Split (!idgen()) (Some(e.start)) None
              patch(e.out, s)
  