anchor.diff:  let t = new System.Collections.Generic.Dictionary<'a,'b>() 
   in
   fun a ->    
  +    let l = List.length (_print())
  +    in
       if t.ContainsKey(a)
  -    then t.[a]
  +    then t.[(a)]
       else 
       let res = f a 
       in
  -    t.Add(a,res);
  +    t.Add((a),res);
       res    
          
  -do start_time := System.DateTime.UtcNow;
  -   printfn "Closure and goto calculation.\nStart time: %A" System.DateTime.UtcNow
  +do start_time := System.DateTime.Now;
  +   printfn "Closure and goto calculation.\nStart time: %A" System.DateTime.Now
       
   let closure = 
       memoize(fun q -> 
  
positive.code:     ]
  
  let Q = Set.union_all (Set.of_list[Item('S',[NTerm('E');Dot(' ',1)])]::items)
  
  let getText a (x,y,z)= 
      match a 
      with 
  
negative.code: open Log
  
  // debug = true - печатается трасса. Иначе нет.
  let debug = true
  
  //interacive = true - ввод строки с консоли. иначе - явная подстановка тестовой строки
  let interacive = false
  
  let start_time = ref System.DateTime.Now                                   
  
  type Symb = 
       |STerm of char
       |SNTerm of char
       
  type ISymb  = 
       |Term of char
  