public override void EnterElement(BabyScriptParser.ElementContext ctx)
            {
                BabyElement element  = (BabyElement)ctx.treeNode;
                string      realName = element.Name;
                string      fullName = Owner.nameConfig.ToFull(realName);

                if (fullName != null)
                {
                    realName = fullName;
                }

                if (Error)
                {
                    return;
                }

                Writer.WriteStartElement(realName);
                SetCurrentElement(ctx, realName);

                if (element.IsAssignment)
                {
                    foreach (BabyAttribute a in element.Attributes)
                    {
                        Writer.WriteAttributeString(a.Name, a.Value);
                    }
                }
            }
 public override void ExitElement(BabyScriptParser.ElementContext ctx)
 {
     if (Error)
     {
         return;
     }
     Writer.WriteEndElement();
 }
            private void SetCurrentElement(BabyScriptParser.ElementContext ctx, string realName)
            {
                string[] anonAttributes = Owner.attrConfig.GetAnonAttributes(realName);
                HasImpliedAttributes = anonAttributes != null;

                AvailableNames.Clear();
                if (HasImpliedAttributes)
                {
                    foreach (string name in anonAttributes)
                    {
                        AvailableNames.Enqueue(name);
                    }
                }

                CurrentElement = ctx;
            }