anchor.diff:  let toCNF (ruleList: Rule.t<_, _> list) = 
       let cnf (rules: Rule.t<_, _> list) = rules
       ruleList
  -    |> newRuleForRuleInRule
  +    |> reductionRule
       |> deleteEpsRule
       |> deleteChainRule
       |> cnf
  
positive.code: //  Copyright 2011, 2012 Avdyukhin Dmitry
  //
  //  This file is part of YaccConctructor.
  //
  //  YaccConstructor is free software:you can redistribute it and/or modify
  //  it under the terms of the GNU General Public License as published by
  
negative.code:     
      //--Список эпсилон-правил входящих в данное правило--------------------------------------------     
  
      let rec epsInRule (elements: elem<_, _> list) = 
          elements |> List.collect
                      (fun elem ->
                          match elem.rule with
                          |PSeq(e, a, l) -> epsInRule e
                          |PRef(t, _) -> isEps (fst t)
                          |x -> []
                      )
                          
      //--Функция для добавления нового правила------------------------------------------------------
  
      let newRule (rule: Rule.t<_, _>) (epsRef: string list) = 
          incr index
          [{
              Rule.t.name="newEpsRule" + (!index).ToString()
              Rule.t.args=[]
              Rule.t._public=false
              Rule.t.metaArgs=[] 
              Rule.t.body=PSeq([], None, None)
          }]
  
      //--Добавляем новые правила--------------------------------------------------------------------
      
      reductionRule ruleList |> List.collect
          (fun rule -> 
              match rule.body with
              |PSeq(elements, actionCode, lbl) when not elements.IsEmpty -> 
                  newRule rule (epsInRule elements) @ [rule]
              |x -> []
          )
  