示例#1
0
文件: TagParse.cs 项目: vbyte/fmq
        /// <summary>
        /// 获取最高运算优先级的索引/索引列表(同级左结合式)
        /// </summary>
        public static List<int> GetMaxPriorityExpIndexes(List<InnerExpression> exps)
        {
            List<int> oResList = new List<int>();
            int iPriority = 20, iCurPriority = 0;
            InnerOperate op = null;
            for (int i = 0, j = exps.Count; i < j; i++)
            {
                //Util.Debug(false, string.Concat(i, " : [",  exps[i].GetValue(), "] OP:" , exps[i].IsOperator()));
                if (exps[i].IsOperator())
                {
                    op = new InnerOperate(exps[i].GetValue().ToString());
                    iCurPriority = op.GetPriority();

                    //输出当前优先级
                    //Util.Debug(false, string.Concat( "[" , exps[i].GetValue().ToString().Trim(), "] = ", iCurPriority));

                    if (iCurPriority <= iPriority)
                    {
                        if (iCurPriority < iPriority)
                        {
                            iPriority = iCurPriority;
                            oResList.Clear();
                            oResList.Add(i);
                        }
                        else
                        {
                            oResList.Add(i);
                        }
                    }

                }
            }

            return oResList;
        }