private Exp AnalyGeneric_1() { LexToken genericArgTypeToken = TypeTokens[0]; ZType genericArgZType = SearchZType(genericArgTypeToken); if (genericArgZType != null) { //Type newType = MakeGenericType(mainZType, genericArgZType); //ZType newZtype = ZTypeManager.RegNewGenericType(newType); ZLClassInfo newZClass = ZTypeManager.MakeGenericType((ZLClassInfo)mainZType, genericArgZType); ExpTypeTwo twoExp = new ExpTypeTwo(this.ExpContext, TypeTokens[0], TypeTokens[1], genericArgZType, mainZType, newZClass); return(twoExp.Analy()); } return(noneType); }
private Exp AnalyGeneric_2() { LexToken genericArgTypeToken1 = TypeTokens[0]; LexToken genericArgTypeToken2 = TypeTokens[1]; ZType genericArgZType1 = SearchZType(genericArgTypeToken1); ZType genericArgZType2 = SearchZType(genericArgTypeToken2); if (genericArgZType1 != null && genericArgZType2 != null) { //Type newType = MakeGenericType(mainZType, genericArgZType1, genericArgZType2); //ZType newZtype = ZTypeManager.RegNewGenericType(newType); //RetType = newZtype; ZLClassInfo newZClass = ZTypeManager.MakeGenericType((ZLClassInfo)mainZType, genericArgZType1, genericArgZType2); ExpTypeThree twoExp = new ExpTypeThree(this.ExpContext, TypeTokens[0], TypeTokens[1], TypeTokens[2], genericArgZType1, genericArgZType2, mainZType, newZClass); return(twoExp.Analy()); } return(noneType); }
public override Exp Analy() { if (this.IsAnalyed) { return(this); } SubjectExp = SubjectExp.Analy(); if (SubjectExp.RetType == null) { //Type newType =typeof(列表<>).MakeGenericType(typeof(object)); //ZType newZtype = ZTypeManager.RegNewGenericType(newType); ZLClassInfo newZClass = ZTypeManager.MakeGenericType(ZLangBasicTypes.ZLIST, ZLangBasicTypes.ZOBJECT); SubjectExp.RetType = newZClass; } CreateEachSymbols(); AnalyCountMethod(); ItemExp = new ExpEachItem(this.ExpContext, this.ListSymbol, this.IndexSymbol); this.RetType = ZLangBasicTypes.ZVOID; IsAnalyed = true; return(this); }