anchor.diff:                         match oldForm with
                          |l::ls -> if l = leftNonTerminal then //ищем первый нетерминал
                                       match x with //замена l в соответствии с правилом x
  -                                    |ToBranch(a,b,c,l) -> b::c::ls
  +                                    |ToBranch(a,b,c,l,_) -> b::c::ls
                                       |ToLeaf(a,b,l)     -> b.ToString()::ls                                
                                    else l::(newForm ls)
                          |_     -> []
  
positive.code:     //Вывод правил
      let printRules =
         (function
         | ToBranch(a,b,c,_),l -> [a; "->"; b; c; "  "; (match l with | Some t -> t | None -> "")]
         | ToLeaf(a,b,_),l     -> [a;"->";b.ToString();"  "; (match l with | Some t -> t | None -> "") ]
         >> String.concat "")
         |> List.map
  
negative.code:           for k in 0..(s.Length-1) do
               match rule with
               |ToLeaf(a,b,l) -> if b = s.[k] then
                                  let nonTerminals,_,_,lbl,weights,rules = recTable.[k,0]
                                  recTable.[k,0] <- ((a::nonTerminals),(-1,-1),(-1,-1),(l::lbl),weights,(rule::rules))
               |_           -> ()
         //последующие столбцы
         fillTable 0 1
  