anchor.diff:                                  match x with //замена l в соответствии с правилом x
                                   |ToBranch(a,b,c) -> b::c::ls
                                   |ToLeaf(a,b)     -> b.ToString()::ls
  -                             else
  -                                l::(newForm ls)
  +                             else l::(newForm ls)
                      |_     -> []
                   System.Console.Write(String.concat "" ("->"::(newForm current)))                   
                   sentForm (newForm current) xs
  
positive.code:                             let nonTerminals2,_,_,_ = recTable.[k+i+1,l-k-1]
                              let nonTerminals,_,_,rules = recTable.[i,l]
                              if (List.exists ((=)b) nonTerminals1) && (List.exists ((=)c) nonTerminals2)
                              then recTable.[i,l] <- ((a::nonTerminals),(i,k),(k+i+1,l-k-1),(rule::rules))
          |_               -> ()   
  
     let elem i l = rules |>  Array.iter (fun rule -> for k in 0..(l-1) do processRule rule i k l)
  
negative.code:                                                                        
  let recognitionTable (rules,_) (s:string) = 
             
     let recTable = Microsoft.FSharp.Collections.Array2D.create s.Length s.Length ([],(0,0),(0,0),[])
     //recTable(i,l), для l > 0
  
     let inline processRule rule i k l =
  