Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
 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);
 }