public override bool CurrentContains(string symbolName) { if (classType == null) { return(false); } ZMemberInfo zmember = SearchMember(symbolName); return(zmember != null); }
public SymbolRefStaticMember(string name, ZMemberInfo memberInfo) { this.SymbolName = name; SymbolZType = memberInfo.MemberZType; ZMember = memberInfo; //IsAssigned = true; //IsStatic = true; CanRead = memberInfo.CanRead; CanWrite = memberInfo.CanWrite; }
public override SymbolBase CurrentGet(string symbolName) { if (classType == null) { return(null); } ZMemberInfo zmember = SearchMember(symbolName); if (zmember != null) { SymbolDefMember symbol = SymbolDefMember.Create(symbolName, zmember); return(symbol); } return(null); }
public override Exp Analy( ) { LeftExp = AnalySubExp(LeftExp); //bool rightOK = false; if (RightExp is ExpEachWord) { var eachItemExp = AnalyEach(); Exp newExp = eachItemExp.Analy(); return(newExp); } else { ParseRightPropertyName(); } if (!this.AnalyCorrect) { return(this); } //if (!rightOK) return this; //if (!LeftExp.AnalyResult) return this; if (LeftExp.RetType is ZEnumType) { ErrorE(RightExp.Postion, "约定没有属性"); } else if (LeftExp.RetType is ZClassType) { ZClassType zclass = LeftExp.RetType as ZClassType; ZMember = zclass.SearchZMember(propertyName); if (ZMember == null) { ErrorE(LeftExp.Postion, "不存在'{0}'属性", propertyName); } else { RetType = ZMember.MemberZType; } } else { throw new CompileException(); } return(this); }
public override SymbolBase CurrentGet(string symbolName) { ZMemberInfo[] zmembers = SearchMember(symbolName); if (zmembers.Length == 0) { return(null); } else if (zmembers.Length == 1) { ZMemberInfo zmember = zmembers[0]; SymbolRefStaticMember symbol = new SymbolRefStaticMember(symbolName, zmember);// SymbolStaticMember.Create(symbolName, zmembers[0]); return(symbol); } else { SymbolRefMutil symbolm = new SymbolRefMutil(symbolName, zmembers); return(symbolm); } }
public ZMemberInfo SearchMember(string zname) { if (classType == null) { return(null); } ZMemberInfo zmember = classType.SearchZMember(zname); if (zmember == null) { return(null); } if (zmember.AccessAttribute != AccessAttributeEnum.Private) { return(zmember); } return(null); }
public SymbolDefMember FindMember(string name) { if (MemberDictionary.ContainsKey(name)) { SymbolDefMember member = MemberDictionary.Get(name); return(member); } if (IsStaticClass) { return(null); } ZMemberInfo zmember = BaseZType.SearchZMember(name); if (zmember == null) { return(null); } SymbolDefMember symbol = SymbolDefMember.Create(name, zmember); return(symbol); }
public ZMemberInfo[] SearchMember(string zname) { List <ZMemberInfo> list = new List <ZMemberInfo>(); foreach (ZEnumType zenum in UseZEnumList) { ZEnumElementInfo zenumElement = zenum.SearchValue(zname); if (zenumElement != null) { list.Add(zenumElement); } } foreach (ZClassType zclass in UseZClassList) { ZMemberInfo zmember = zclass.SearchZMember(zname); if (zmember != null && zmember.AccessAttribute == AccessAttributeEnum.Public) { list.Add(zmember); } } return(list.ToArray()); }
public static SymbolDefMember Create(string name, ZMemberInfo zmember) { if (zmember is ZPropertyInfo) { ZPropertyInfo zp = zmember as ZPropertyInfo; SymbolDefProperty symbol = new SymbolDefProperty(name, zp.MemberZType, zp.IsStatic); symbol.Property = zp.SharpProperty; return(symbol); } //if (zmember is ZEnumElementInfo) //{ // ZEnumElementInfo zp = zmember as ZEnumElementInfo; // SymbolDefEnumElement symbol = new SymbolDefEnumElement(name, zp); // return symbol; //} else { ZFieldInfo zf = zmember as ZFieldInfo; SymbolDefField symbol = new SymbolDefField(name, zf.MemberZType, zf.IsStatic); symbol.Field = zf.SharpField; return(symbol); } }