anchor.diff:              if(s.natom = 0) then
                   failwith "unmatched!"
               else
  -                c::(re2post' paren s t)
  -        | c' ->
  +                c::(re2post' paren s tail)
  +        | _ ->
               let mutable natom = s.natom
               let op' =
                   if(natom > 1) then
  
positive.code:                 else
                      []
              natom<-natom+1
              op' @ [c'] @ (re2post' paren {s with natom=natom} t)
  
  let re2post(re:string)=
      let result = re2post' [] {natom=0;nalt=0} ( re.ToCharArray() |> Array.toList )
      new String(result |> List.toArray)
  
negative.code:                 let ops = (List.replicate (s.natom-1) '.') @ (List.replicate s.nalt '|' )
                  match paren with
                  | p::paren_rest ->
                      ops @ (re2post' paren_rest {nalt=p.nalt; natom=p.natom+1} tail)
                  | _ -> failwith "unmatched!"
          | '*'
          | '+'
  