Ejemplo n.º 1
0
 /// <summary>
 /// 取得节点的处理函数
 /// </summary>
 /// <param name="left">语法类型</param>
 /// <param name="leave">Token类型</param>
 /// <param name="nilserver">空节点展开式处理函数</param>
 /// <returns>候选式实例</returns>
 public CandidateFunction GetCFunction(SyntaxType left, TokenType leave, iHandle nilserver)
 {
     try
     {
         if (left == SyntaxType.epsilonLeave)
         {
             return(new CandidateFunction(nilserver, CFunctionType.umi_epsilon));
         }
         CandidateFunction candidator = this.GetCFunction(this.leftNodesDict[left], this.nextLeavesDict[leave]);
         return(candidator ?? new CandidateFunction(null, CFunctionType.umi_errorEnd));
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.ToString());
         Console.WriteLine(String.Format("{0} --> {1}", left.ToString(), leave.ToString()));
         throw;
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 设置候选式处理器
 /// </summary>
 /// <param name="proc">处理函数委托</param>
 /// <param name="type">候选式类型</param>
 public void SetProc(iHandle proc, CFunctionType type)
 {
     this.candidateProcessor = proc;
     this.candidateType      = type;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="proc">处理函数委托</param>
 /// <param name="type">候选式类型</param>
 public CandidateFunction(iHandle proc, CFunctionType type)
 {
     this.SetProc(proc, type);
 }