Пример #1
0
 public void Visit(ClassDef node)
 {
     currentType = Context.GetType(node.Type);
     if (node.typeInherited != null)
     {
         IType t;
         if ((t = Context.GetType(node.typeInherited)) != null)
         {
             currentType.TypeInherited = t;
             t.ChildTypes.Add(currentType);
         }
         else
         {
             errorLog.LogError(string.Format(TYPEINHERITEDDOESNEXIST, node.Line, currentType.Name, node.typeInherited));
         }
     }
     else
     {
         var obj = currentType.TypeInherited = Context.GetType("Object");
         obj.ChildTypes.Add(currentType);
     }
     foreach (var item in node.Attributes)
     {
         Visit(item);
     }
     foreach (var item in node.Methods)
     {
         Visit(item);
     }
     currentType.DefineAttribute("self", currentType);
 }
Пример #2
0
        public void Visit(AST1.Attribute node)
        {
            var attrType = Context.GetType(node.Type);

            if (attrType == default(Type))
            {
                errorLog.LogError(string.Format(TypeNotExist, node.Line, node.Type));
                return;
            }
            if (currentType.GetAttributeInherited(node.Name) != null)
            {
                errorLog.LogError(string.Format(AttrRedefined, node.Line, node.Name, currentType.Name));
                return;
            }
            currentType.DefineAttribute(node.Name, attrType);
        }