Example #1
0
        public XmlElement Visit(ExplicitReceiverRequestNode n)
        {
            var el = makeNode(n, "explicit-receiver-request");

            addProperty(el, "receiver", n.Receiver);
            addProperty(el, "name", n.Name);
            addPropertyEnumRPN(el, "parts", n);
            return(el);
        }
Example #2
0
        /// <inheritdoc />
        public Node Visit(ExplicitBracketRequestParseNode ebrpn)
        {
            ExplicitReceiverRequestNode ret = new ExplicitReceiverRequestNode(ebrpn.Token, ebrpn,
                                                                              ebrpn.Receiver.Visit(this));
            RequestPartNode rpn = new RequestPartNode(ebrpn.Name,
                                                      new List <Node>(),
                                                      map(ebrpn.Arguments));

            ret.AddPart(rpn);
            return(ret);
        }
Example #3
0
        /// <inheritdoc />
        public Node Visit(OperatorParseNode opn)
        {
            var ret  = new ExplicitReceiverRequestNode(opn.Token, opn, opn.Left.Visit(this));
            var args = new List <Node>();

            args.Add(opn.Right.Visit(this));
            var rpn = new RequestPartNode(opn.name, new List <Node>(), args);

            ret.AddPart(rpn);
            return(ret);
        }
Example #4
0
        /// <inheritdoc />
        public Node Visit(PrefixOperatorParseNode popn)
        {
            var ret = new ExplicitReceiverRequestNode(popn.Token, popn,
                                                      popn.Receiver.Visit(this));
            var rpn = new RequestPartNode("prefix" + popn.Name,
                                          new List <Node>(),
                                          new List <Node>());

            ret.AddPart(rpn);
            return(ret);
        }
Example #5
0
        /// <inheritdoc />
        public Node Visit(ExplicitReceiverRequestParseNode irrpn)
        {
            var ret = new ExplicitReceiverRequestNode(irrpn.Token, irrpn,
                                                      irrpn.Receiver.Visit(this));

            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);
        }
Example #6
0
        /// <inheritdoc />
        public Node Visit(InterpolatedStringParseNode n)
        {
            Node ret = null;

            foreach (ParseNode part in n.Parts)
            {
                if (ret == null)
                {
                    ret = part.Visit(this);
                }
                else
                {
                    var errn = new ExplicitReceiverRequestNode(n.Token, n,
                                                               ret);
                    var args = new List <Node>();
                    if (!(part is StringLiteralParseNode))
                    {
                        var rpnAS = new RequestPartNode("asString",
                                                        new List <Node>(), new List <Node>());
                        var errnAS = new ExplicitReceiverRequestNode(n.Token,
                                                                     n, part.Visit(this));
                        errnAS.AddPart(rpnAS);
                        args.Add(errnAS);
                    }
                    else
                    {
                        args.Add(part.Visit(this));
                    }
                    var rpn = new RequestPartNode("++",
                                                  new List <Node>(), args);
                    errn.AddPart(rpn);
                    ret = errn;
                }
            }
            return(ret);
        }