anchor.diff:                  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} t)
  +                    ops @ (re2post' paren_rest {nalt=p.nalt; natom=p.natom+1} tail)
                   | _ -> failwith "unmatched!"
           | '*'
           | '+'
  
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:             if(s.natom = 0) then
                  failwith "unmatched!"
              else
                  c::(re2post' paren s tail)
          | _ ->
              let mutable natom = s.natom
              let op' =
                  if(natom > 1) then
  