anchor.diff:          (Console.WriteLine("Insert string:"); 
           Console.ReadLine())
          else
  -        test_str2 
  +        test_str1 
      in     
      let r = res(str) in
      printfn "Result : %A" r;
      Console.WriteLine();
  -   printfn "End time: %A Total: %A" System.DateTime.UtcNow (System.DateTime.UtcNow - (!start_time));   
  +   printfn "End time: %A Total: %A" System.DateTime.Now (System.DateTime.Now - (!start_time));   
      Console.ReadLine()|>ignore
positive.code: type item = Item of char*(ISymb list)
  
  let lex_list = ['E';'a';'+';'*';' ';'S';')';'(']
  
  let items = 
      [Set.of_list[Item('S',[Dot('E',0)])]
  
negative.code:     List.iter (fun x-> (Set.iter (fun y-> t.Add((y,x),(make_goto (add y empty)) x)))Q) lex_list;
      t  
  //это предпросчёт goto. сам анализатор тогда работает быстрее. (closure - очень дорогая операция)           
  let goto (q,x) = try union_all (Set.map (fun y -> goto_set.[(y,x)])q ) with _ -> empty
                         
  let ItNext (Item(a,lst)) = Item(a,next lst)
  let ItPrev (Item(a,lst)) = Item(a,prev lst)
     
  let union_from_Some set = set |> List.filter Option.is_some |> List.map Option.get |> Set.of_list                              
     
  do printfn "End time: %A Total: %A" System.DateTime.Now (System.DateTime.Now - (!start_time))
  
  let rec climb =
      memoize (fun (q,x,i) -> 
      if debug then print_climb_1 (_print()) x q;
      if q = empty
      then empty
      else
  