예제 #1
0
 /// <summary>
 /// 设置节点分析函数
 /// </summary>
 /// <param name="row">行号</param>
 /// <param name="col">列号</param>
 /// <param name="proc">产生式</param>
 public void SetCellular(int row, int col, CandidateFunction proc)
 {
     if (0 <= row && row < this.rowCount && 0 <= col && col < this.colCount)
     {
         this.parserMap[row, col] = proc;
     }
 }
예제 #2
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;
     }
 }
예제 #3
0
 /// <summary>
 /// 设置节点分析函数
 /// </summary>
 /// <param name="left">语法类型</param>
 /// <param name="leave">Token类型</param>
 /// <param name="proc">产生式</param>
 public void SetCellular(SyntaxType left, TokenType leave, CandidateFunction proc)
 {
     this.SetCellular(this.leftNodesDict[left], this.nextLeavesDict[leave], proc);
 }
예제 #4
0
 /// <summary>
 /// 设置节点分析函数
 /// </summary>
 /// <param name="left">语法类型</param>
 /// <param name="leave">Token类型</param>
 /// <param name="proc">产生式</param>
 public void SetCellular(SyntaxType left, TokenType leave, CandidateFunction proc)
 {
     this.SetCellular(this.leftNodesDict[left], this.nextLeavesDict[leave], proc);
 }
예제 #5
0
 /// <summary>
 /// 设置节点分析函数
 /// </summary>
 /// <param name="row">行号</param>
 /// <param name="col">列号</param>
 /// <param name="proc">产生式</param>
 public void SetCellular(int row, int col, CandidateFunction proc)
 {
     if (0 <= row && row < this.rowCount &&
       0 <= col && col < this.colCount)
     {
         this.parserMap[row, col] = proc;
     }
 }