コード例 #1
0
        /// <inheritdoc />
        public Node Visit(ImplicitReceiverRequestParseNode irrpn)
        {
            ImplicitReceiverRequestNode ret = null;

            if (irrpn.Name == "if then")
            {
                ret = new IfThenRequestNode(irrpn.Token, irrpn);
            }
            else if (irrpn.Name == "for do")
            {
                ret = new ForDoRequestNode(irrpn.Token, irrpn);
            }
            else
            {
                ret = new ImplicitReceiverRequestNode(irrpn.Token, irrpn);
            }
            for (int i = 0; i < irrpn.Arguments.Count; i++)
            {
                var rpn = new RequestPartNode(
                    ((IdentifierParseNode)irrpn.NameParts[i]).Name,
                    map(irrpn.GenericArguments[i]),
                    map(irrpn.Arguments[i]));
                ret.AddPart(rpn);
            }
            return(ret);
        }
コード例 #2
0
        /// <inheritdoc/>
        public override ParseNode Visit(
            ImplicitReceiverRequestParseNode irrpn
            )
        {
            if (irrpn.NameParts.Count != 1)
            {
                return(base.Visit(irrpn));
            }
            // A single-part name could be a banned identifier.
            var n = (IdentifierParseNode)irrpn.NameParts[0];

            Visit(n);
            // The arguments require checking either way.
            foreach (var args in irrpn.Arguments)
            {
                foreach (var a in args)
                {
                    a.Visit(this);
                }
            }
            foreach (var args in irrpn.GenericArguments)
            {
                foreach (var a in args)
                {
                    a.Visit(this);
                }
            }
            return(irrpn);
        }
コード例 #3
0
 /// <inheritdoc/>
 public virtual ParseNode Visit(ImplicitReceiverRequestParseNode irrpn)
 {
     foreach (var args in irrpn.Arguments)
     {
         foreach (var a in args)
         {
             a.Visit(this);
         }
     }
     foreach (var args in irrpn.GenericArguments)
     {
         foreach (var a in args)
         {
             a.Visit(this);
         }
     }
     return(irrpn);
 }
コード例 #4
0
        public XmlElement Visit(ImplicitReceiverRequestParseNode irrpn)
        {
            var el = makeNode(irrpn, "implicit-receiver-request");

            addProperty(el, "name", irrpn.Name);
            var parts = document.CreateElement("parts");

            parts.SetAttribute("type", "array");
            for (int i = 0; i < irrpn.NameParts.Count; i++)
            {
                var item = document.CreateElement("item");
                item.SetAttribute("type", "object");
                addProperty(item, "name", irrpn.NameParts[i]);
                addProperty(item, "arguments", irrpn.Arguments[i]);
                addProperty(item, "genericarguments", irrpn.GenericArguments[i]);
                parts.AppendChild(item);
            }
            el.AppendChild(parts);
            return(el);
        }