Пример #1
0
 private void AddEnumWord(ZEnumType zenum, WordDictionary wordDictionary)
 {
     //ZEnumType zenum = descType as ZEnumType;
     //UseManageContext.UseZEnumList.Add(zenum);
     ZEnumElementInfo[] values = zenum.EnumElements;
     foreach (var field in values)
     {
         foreach (var zname in field.ZNames)
         {
             WordInfo info = new WordInfo(zname, WordKind.EnumElement);
             wordDictionary.Add(info);
         }
     }
 }
Пример #2
0
        public void AnalyNameItem(Token nameToken)
        {
            ContextUse useContext = this.FileContext.UseContext;
            string     typeName   = nameToken.GetText();

            if (useContext.ContainsType(typeName))
            {
                this.FileContext.Errorf(nameToken.Position, "'{0}'已经被使用", typeName);
            }
            else
            {
                IZDescType[] ztypes   = this.FileContext.ImportContext.ImportPackageDescList.SearchZDescType(typeName);
                IZDescType   descType = ztypes[0];
                if (descType is ZClassType)
                {
                    ZClassType zclass = descType as ZClassType;
                    if (zclass.IsStatic)
                    {
                        useContext.UseZClassList.Add(zclass);
                    }
                    else
                    {
                        this.FileContext.Errorf(nameToken.Position, "'{0}'不是唯一类型,不能被简略使用", typeName);
                    }
                }
                else if (descType is ZEnumType)
                {
                    ZEnumType zenum = descType as ZEnumType;
                    useContext.UseZEnumList.Add(zenum);
                }
                else if (descType is ZDimType)
                {
                    ZDimType zdim = descType as ZDimType;
                    useContext.UseZDimList.Add(zdim);
                }
                else
                {
                    throw new CompileException();
                }
            }
        }