public ExpCallSubject(ContextExp context, Exp SubjectExp, ZCallDesc expProcDesc, ExpCall srcExp) { this.ExpContext = context; this.SubjectExp = SubjectExp; this.ExpProcDesc = expProcDesc; this.SrcExp = srcExp; }
private ZCallDesc ToZCallDesc(ZMethodDesc methodDesc) { ZCallDesc callDesc = new ZCallDesc(); foreach (var part in methodDesc.Parts) { if (part is string) { callDesc.Add(part); } else if (part is ZMethodNormalArg) { ZMethodNormalArg mna = part as ZMethodNormalArg; ZCallValueArg callArg = new ZCallValueArg(mna.ArgZType); callDesc.Add(callArg); } else if (part is ZMethodGenericArg) { ZMethodGenericArg mna = part as ZMethodGenericArg; ZCallValueArg callArg = new ZCallValueArg(mna.ArgBaseZType); callDesc.Add(callArg); } else { throw new CompileException(); } } return(callDesc); }
public ExpCallThis(ContextExp context, ZCallDesc expProcDesc, ZMethodDesc searchedMethod, ExpCall srcExp) { this.ExpContext = context; this.ExpProcDesc = expProcDesc; this.SearchedProcDesc = searchedMethod; this.SrcExp = srcExp; }
public ExpCallUse(ContextExp context, ZCallDesc expProcDesc, ZMethodInfo zmethod, ExpCall srcExp) { this.ExpContext = context; this.ExpProcDesc = expProcDesc; this.SearchedMethod = zmethod; this.SrcExp = srcExp; }
private void AnalyProcDesc() { ExpProcDesc = new ZCallDesc(); for (int i = 0; i < this.Elements.Count; i++) { Exp exp = this.Elements[i]; exp.SetContext(this.ExpContext); Exp subExp = exp.Analy(); Elements[i] = subExp; if (subExp != null) { if (subExp is ExpProcNamePart) { ExpProcDesc.Add((subExp as ExpProcNamePart).PartName); } else if (subExp is ExpBracket) { ExpProcDesc.Add((subExp as ExpBracket).GetDimArgs().ToArray()); } else { ExpBracket bracket = new ExpBracket(); bracket.AddInnerExp(subExp); ExpProcDesc.Add(bracket.GetDimArgs().ToArray()); } } } }
public ZMethodDesc[] SearchProc(ZCallDesc procDesc) { List <ZMethodDesc> data = new List <ZMethodDesc>(); foreach (var context in ProcContextList) { if (!context.IsConstructor && procDesc.Compare(context.ProcDesc)) { data.Add(context.ProcDesc); } } return(data.ToArray()); }
protected void EmitArgs(ZCallDesc expProcDesc, ZMethodDesc searchedProcDesc) { var size = expProcDesc.Args.Count;; for (int i = 0; i < size; i++) { var arg = expProcDesc.Args[i]; var exp = (arg.Data as Exp); ZMethodArg procArg = searchedProcDesc.Args[i]; exp.RequireType = (procArg as ZMethodNormalArg).ArgZType;// ZRealType.CreateZType(procArg.ArgType); exp.Emit(); } }
public ZMethodInfo[] SearchProc(ZCallDesc procDesc) { List <ZMethodInfo> data = new List <ZMethodInfo>(); foreach (var zclass in UseZClassList) { var zmethod = zclass.SearchZMethod(procDesc); if (zmethod != null) { data.Add(zmethod); } } return(data.ToArray()); }
private Exp SearchSubject() { var SubjectExp = Elements[0]; if (SubjectExp is ExpProcNamePart) { return(null); } else { ZCallDesc tailDesc = ExpProcDesc.CreateTail(); ExpCallSubject expCallSubject = new ExpCallSubject(this.ExpContext, SubjectExp, tailDesc, this); return(expCallSubject); } }
public string GetMethodName() { ContextClass context = this.ProcContext.ClassContext; ZClassType baseZType = context.BaseZType; if (baseZType != null) { ZCallDesc callDesc = ToZCallDesc(ProcDesc); var zmethod = baseZType.SearchZMethod(callDesc); if (zmethod != null) { return(zmethod.SharpMethod.Name); } } return(this.ProcDesc.ToMethodName()); }
public ExpCallNone(ContextExp context, ZCallDesc expProcDesc, ExpCall srcExp) { this.ExpContext = context; this.ExpProcDesc = expProcDesc; this.SrcExp = srcExp; }
public ZMethodDesc[] SearchThisProc(ZCallDesc procDesc) { return(ProcManagerContext.SearchProc(procDesc)); }
public ZMethodInfo[] SearchUseProc(ZCallDesc procDesc) { return(UseContext.SearchProc(procDesc)); }