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); }
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()); } } } }