/// <summary>
        /// 判断是否为入栈边界, 如果是则返回弹栈字符.
        /// </summary>
        /// <param name="elem"></param>
        /// <returns>返回</returns>
        public static List<SyntaxStock> GetStockChar(ErlangElement elem)
        {
            List<SyntaxStock> ret = null;
            string str = elem.Context;

            if (FsmCheck.StockChar.ContainsKey(str))
            {
                ret = FsmCheck.StockChar[str];
            }
            return ret;
        }
 /// <summary>
 /// 语法树
 /// </summary>
 private void ShowDom(ErlangElement root, TreeNode rnode)
 {
     TreeNode c = null;
     if (FsmCheck.RegexGroups.ContainsKey(root.GroupName))
     {
         c = new TreeNode(
             "[" + root.GroupName + ":" + root.Line + ", " + root.Index + "]:" + root.Context
         );
         c.Tag = root;
         c.ForeColor = FsmCheck.RegexGroups[root.GroupName];
         rnode.Nodes.Add(c);
     }
     if (root.Elements != null)
     {
         foreach (ErlangElement ch in root.Elements)
         {
             ShowDom(ch, c);
         }
     }
 }
        /// <summary>
        /// 根据匹配内容, 得到erlang元素
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        private ErlangElement GetElemByMatch(Match m)
        {
            ErlangElement elem = null;

            foreach (string gs in FsmCheck.RegexGroups.Keys)
            {
                //判断所在分组
                if (m.Groups[gs].Success)
                {
                    elem = new ErlangElement();
                    elem.Index = m.Groups[gs].Index;
                    elem.GroupName = gs;
                    elem.Context = m.Value.Replace(FsmCheck.repalce_char, FsmCheck.remean_char);
                    elem.Line = GetLineNo(elem.Index);
                    break;
                }
            }

            return elem;
        }