Пример #1
0
 public virtual void Visit(ClassDefinition theClass)
 {
     foreach (var xMember in theClass.Members)
     {
         xMember.Dispatch(this);
     }
 }
Пример #2
0
 public override void Visit(ClassDefinition theClass)
 {
     mOutput.WriteLine("class {0}", theClass.Name);
     mOutput.WriteLine("{{");
     mOutput.Indent();
     {
         base.Visit(theClass);
     }
     mOutput.Unindent();
     mOutput.WriteLine("}}");
 }
Пример #3
0
 private void ParseClass(IClassContainer container)
 {
     Move();
     if (mToken.TagValue != Tag.Identifier)
     {
         Error("Identifier expected!");
     }
     var xId = (Word)mToken;
     var xClass = new ClassDefinition(mResult);
     xClass.Container = container;
     xClass.Name = xId.Value;
     container.Classes.Add(xClass);
     Move();
     Match('{');
     while (!IsMatch('}'))
     {
         ParseClassMember(xClass);
     }
     Move(); // } char was found
 }
Пример #4
0
 public override void Visit(ClassDefinition theClass)
 {
     var xCurNamespace = mNamespaces.Peek();
     MCM.TypeDefinition xClass;
     if (mTypeStack.Count > 0)
     {
         var xNestedClass = new MCM.NestedTypeDefinition
         {
             ContainingTypeDefinition = mTypeStack.Peek(),
             InternFactory = mHostEnvironment.InternFactory,
             IsClass = true,
             Name = mHostEnvironment.NameTable.GetNameFor(theClass.Name)
         };
         xClass = xNestedClass;
         mTypeStack.Peek().NestedTypes.Add(xNestedClass);
     }
     else
     {
         var xNamespaceClass = new MCM.NamespaceTypeDefinition()
         {
             ContainingUnitNamespace = xCurNamespace,
             InternFactory = mHostEnvironment.InternFactory,
             IsClass = true,
             Name = mHostEnvironment.NameTable.GetNameFor(theClass.Name)
         };
         xCurNamespace.Members.Add(xNamespaceClass);
         xClass = xNamespaceClass;
     }
     Types.Add(theClass, xClass);
     mAssembly.AllTypes.Add(xClass);
     mTypeStack.Push(xClass);
     try
     {
         base.Visit(theClass);
     }
     finally
     {
         mTypeStack.Pop();
     }
 }