anchor.diff:  
   let toCNF (ruleList: Rule.t<_, _> list) = 
   
  -    let cnf (rules: Rule.t<_, _> list) =    
  +    let cnf rules =    
           let i = ref 0
           let list2 = ref []
           let rec newRule (rule: Rule.t<_, _>) =  
               let elements = match rule.body with PSeq(e, a, l) -> e | x -> [] 
  -            let addRule (elem1: elem<_, _>) (elem2: elem<_, _>) =
  +            let addRule elem1 elem2 =
                   incr i
                   list2 :=
                       [{
  
positive.code: 
  //--Переименование терминалов в нетерминалы в неподходящих правилах---------------------------
  
  let renameTerm (ruleList: Rule.t<_, _> list) = 
      
      let isToken (elem: elem<_, _>) = match elem.rule with PToken(_, _) -> true | x -> false
      let isRef (elem: elem<_, _>) = match elem.rule with PRef(_, _) -> true | x -> false
  
negative.code:                 
  let deleteChainRule (ruleList: Rule.t<_, _> list) = 
      
      let rec newRule (mainRule: Rule.t<_, _>) name = 
          ruleList |> List.collect
              (fun rule ->
  
  