/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }