/// <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; }