anchor.diff:              | '.' -> Some Catenate
               | '|' -> Some Alternate
               | '?' -> Some ZeroOrOne
  -            | '*' -> Some Many
  +            | '*' -> Some ZeroOrMore
               | '+' -> Some OneOrMore
               | _ -> None
   
  
positive.code:     | Catenate
      | Alternate
      | ZeroOrOne
      | Many
      | OneOrMore
      with
          static member fromChar c=
  
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)
  