TKTProcDesc searchNewProc(ClassContext classContext, TKTProcDesc expProcDesc) { var procArray = ClassContextHelper.SearchProc(classContext, expProcDesc); if (procArray.Length == 1) { return(procArray[0]); } else if (procArray.Length > 1) { error("找到多个过程,不能确定是属于哪一个简略使用的类型的过程"); } else if (procArray.Length == 0) { //error("没有找到对应的过程'" + this.ToCode() + "'"); } return(null); }
Exp analyAsDirectMember(AnalyExpContext context) { object[] objs = ClassContextHelper.SearchDirectIdent(classContext, IdentName); if (objs.Length == 0) { //error("属性或者规定的值'" + IdentName + "'不存在"); return(null); } else if (objs.Length > 1) { error("属性或者规定的值'" + IdentName + "'不明确"); return(null); } else { var obj = objs[0]; SymbolInfo directSymbol; if (obj is ExPropertyInfo) { var pvar = obj as ExPropertyInfo; directSymbol = new SymbolPropertyDirect(IdentName, pvar); RetType = pvar.Property.PropertyType; } else if (obj is ExFieldInfo) { var pvar = obj as ExFieldInfo; directSymbol = new SymbolFieldDirect(IdentName, pvar); RetType = pvar.Field.FieldType; } else { var enumSymbol = new SymbolEnumItem(IdentName, obj); directSymbol = enumSymbol; RetType = enumSymbol.DimType; } if (directSymbol != null) { DirectMemberExp exp = new DirectMemberExp(this, IdentToken, directSymbol, this.IsAssignedBy, this.IsAssignedValue); return(exp); } } return(null); }
Tuple <Exp, int> analyCall(AnalyExpContext context) { TKTProcDesc procdesc = new TKTProcDesc(); procdesc.Add(IdentName); var procArray = ClassContextHelper.SearchProc(classContext, procdesc); if (procArray.Length == 1) { InvokeSimplestExp exp = new InvokeSimplestExp(this, IdentToken, procArray[0]); return(new Tuple <Exp, int> (exp, 1)); } else if (procArray.Length == 0) { return(new Tuple <Exp, int>(null, 0)); } else { errorf("有多个相同名称'{0}'过程,不能确定是哪个过程", IdentName); return(new Tuple <Exp, int>(null, procArray.Length)); } }
TKTProcDesc searchProc(ClassContext classContext) { var procArray = ClassContextHelper.SearchProc(classContext, ExpProcDesc); if (procArray.Length == 1) { //procArray[0].AdjustBracket(procDesc); return(procArray[0]); } else if (procArray.Length > 1) { error("找到多个过程,不能确定是属于哪一个简略使用的类型的过程"); } else if (procArray.Length == 0) { if (Elements[0] is BracketExp) { SubjectExp = Elements[0]; subjType = SubjectExp.RetType; ExpProcDesc = ExpProcDesc.CreateTail(); procArray = ClassContextHelper.SearchProc(classContext, subjType, ExpProcDesc); if (procArray.Length == 1) { return(procArray[0]); } else if (procArray.Length == 0) { error("没有找到对应的过程'" + this.ToCode() + "'"); } else if (procArray.Length > 1) { error("找到多个过程,不能确定是属于哪一个简略使用的类型的过程:'" + this.ToCode() + "'"); } } } return(null); }