Exemplo n.º 1
0
 /// <summary>
 /// 启动解析
 /// </summary>
 public void Parse()
 {
     if (_recognizerList == null || _molecule == null)
     {
         return;
     }
     // 1.进行解析
     foreach (var recognizer in _recognizerList)
     {
         recognizer.Molecule = _molecule;
         recognizer.Parse();
     }
     // 2.结算结果
     DefinedFragment  = new Dictionary <string, int>();
     UndefineFragment = new Dictionary <string, int>();
     foreach (var paserItem in _recognizerList)
     {
         if (paserItem.DefinedFragment != null && paserItem.DefinedFragment.Count != 0)
         {
             foreach (var item in paserItem.DefinedFragment)
             {
                 if (!DefinedFragment.ContainsKey(item.Key))
                 {
                     DefinedFragment.Add(item.Key, item.Value);
                 }
                 else
                 {
                     DefinedFragment[item.Key] += item.Value;
                 }
             }
         }
         if (paserItem.UndefinedFragment != null && paserItem.UndefinedFragment.Count != 0)
         {
             foreach (var item in paserItem.UndefinedFragment)
             {
                 if (!UndefineFragment.ContainsKey(item.Key))
                 {
                     UndefineFragment.Add(item.Key, item.Value);
                 }
                 else
                 {
                     UndefineFragment[item.Key] += item.Value;
                 }
             }
         }
     }
     SplitEnd?.Invoke(this, new SplitEndEventArgs {
         Molecule = _molecule, DefinedFragment = DefinedFragment, UndefinedFragment = UndefineFragment
     });
 }
Exemplo n.º 2
0
 public TimeSpan getDuration()
 {
     return(SplitEnd.Subtract(SplitStart));
 }