Ejemplo n.º 1
0
        public ZLEnumInfo CreateZType()
        {
            var        EmitedType = EnumTypeBuilder.CreateType();
            ZLEnumInfo ztype      = ZTypeManager.GetByMarkType(EmitedType) as ZLEnumInfo;

            return(ztype);
        }
Ejemplo n.º 2
0
        public void Import(ZLEnumInfo zlenum)
        {
            string zname = zlenum.ZTypeName;

            ZLEnumDict.Add(zname, zlenum);
            FileSegementer.AddWord(zname);
            ArgSegementer.AddWord(zname);

            foreach (ZLEnumItemInfo enumItem in zlenum.EnumElements)
            {
                string[] itemNames = enumItem.GetZNames();
                foreach (var name in itemNames)
                {
                    FileSegementer.AddWord(name);
                    ZLEnumItemDict.Add(name, enumItem);
                }
            }
        }
Ejemplo n.º 3
0
        private List <IZObj> EmitTypes()
        {
            if (FileContext.HasError())
            {
                return(new List <IZObj>());
            }
            List <IZObj> list = new List <IZObj>();

            foreach (EnumAST item in EnumASTList)
            {
                item.EmitPropertiesBody();
                ZLEnumInfo ze = item.CreateZType();
                if (ze != null)
                {
                    list.Add(ze);
                    this.FileContext.ProjectContext.CompiledTypes.Add(ze);
                }
            }

            foreach (DimAST item in DimASTList)
            {
                item.EmitPropertiesBody();
                ZLDimInfo zd = item.CreateZType();
                if (zd != null)
                {
                    list.Add(zd);
                    this.FileContext.ProjectContext.CompiledTypes.Add(zd);
                }
            }

            foreach (ClassAST item in ClassASTList)
            {
                item.EmitMemberBody();
                ZLClassInfo zc = item.CreateZType();
                if (zc != null)
                {
                    list.Add(zc);
                    this.FileContext.ProjectContext.CompiledTypes.Add(zc);
                    //this.FileContext.ImportUseContext.ContextFileManager.Import(zc);
                }
            }

            return(list);
        }
Ejemplo n.º 4
0
        public void AnalyNameItemType(LexTokenText nameToken)
        {
            ContextImportUse importUseContext = this.ASTFile.FileContext.ImportUseContext;
            string           typeName         = nameToken.Text;
            var ztypes = importUseContext.SearchByTypeName(typeName);

            if (ztypes.Length == 0)
            {
                this.ASTFile.FileContext.Errorf(nameToken.Position, "没有搜索到'{0}'", typeName);
                return;
            }
            var descType = ztypes[0];

            if (descType is ZLClassInfo)
            {
                ZLClassInfo zclass = descType as ZLClassInfo;
                if (zclass.IsStatic)
                {
                    importUseContext.AddUseType(zclass);
                }
                else
                {
                    this.ASTFile.FileContext.Errorf(nameToken.Position, "'{0}'不是唯一类型,不能被导入类", typeName);
                }
            }
            else if (descType is ZLEnumInfo)
            {
                ZLEnumInfo zenum = descType as ZLEnumInfo;
                importUseContext.AddUseType(zenum);
            }
            else if (descType is ZLDimInfo)
            {
                ZLDimInfo zdim = descType as ZLDimInfo;
                importUseContext.AddDimType(zdim);
            }
            else
            {
                throw new CCException();
            }
        }
Ejemplo n.º 5
0
        private static ZLType CreateZTypeImp(Type type)
        {
            if (AttributeUtil.HasAttribute <ZInstanceAttribute>(type))
            {
                ZInstanceAttribute zAttr = AttributeUtil.GetAttribute <ZInstanceAttribute>(type);
                Type        sharpType    = (zAttr.SharpType == null ? type : zAttr.SharpType);
                ZLClassInfo zclass       = new ZLClassInfo(type, sharpType, false);
                return(zclass);
            }
            else if (AttributeUtil.HasAttribute <ZEnumAttribute>(type))
            {
                ZLEnumInfo zenum = new ZLEnumInfo(type);
                return(zenum);
            }
            else if (AttributeUtil.HasAttribute <ZStaticAttribute>(type))
            {
                ZStaticAttribute zAttr     = AttributeUtil.GetAttribute <ZStaticAttribute>(type);
                Type             sharpType = (zAttr.SharpType == null ? type : zAttr.SharpType);
                ZLClassInfo      zclass    = new ZLClassInfo(type, sharpType, true);
                return(zclass);
            }

            return(null);
        }