Beispiel #1
0
 public override TexlNode Clone(ref int idNext, Span ts)
 {
     if (Value == null)
     {
         return(new NumLitNode(ref idNext, Token.Clone(ts), SourceList.Clone(ts, null), NumValue));
     }
     return(new NumLitNode(ref idNext, Value.Clone(ts).As <NumLitToken>()));
 }
Beispiel #2
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var child    = Child.Clone(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>
            {
                { Child, child }
            };

            return(new UnaryOpNode(ref idNext, Token.Clone(ts), SourceList.Clone(ts, newNodes), Op, child));
        }
Beispiel #3
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var children = CloneChildren(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>();

            for (int i = 0; i < Children.Length; ++i)
            {
                newNodes.Add(Children[i], children[i]);
            }

            return(new TableNode(ref idNext, Token.Clone(ts), SourceList.Clone(ts, newNodes), children, Clone(Commas, ts), BracketClose.Clone(ts)));
        }
Beispiel #4
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var children = CloneChildren(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>();

            for (int i = 0; i < Children.Length; ++i)
            {
                newNodes.Add(Children[i], children[i]);
            }

            return(new VariadicOpNode(ref idNext, Op, children, Clone(OpTokens, ts), SourceList.Clone(ts, newNodes)));
        }
Beispiel #5
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var left     = Left.Clone(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>
            {
                { Left, left },
            };

            return(new AsNode(
                       ref idNext,
                       Token.Clone(ts),
                       SourceList.Clone(ts, newNodes),
                       left,
                       Right));
        }
Beispiel #6
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var children = CloneChildren(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>();

            for (int i = 0; i < Children.Length; ++i)
            {
                newNodes.Add(Children[i], children[i]);
            }

            Identifier[] newIdentifiers = new Identifier[Ids.Length];
            for (int x = 0; x < Ids.Length; x++)
            {
                newIdentifiers[x] = Ids[x].Clone(ts);
            }
            return(new RecordNode(ref idNext, Token.Clone(ts), SourceList.Clone(ts, newNodes), newIdentifiers, children, Clone(Commas, ts), Clone(Colons, ts), CurlyClose.Clone(ts), SourceRestriction?.Clone(ref idNext, ts)));
        }
Beispiel #7
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var args     = Args.Clone(ref idNext, ts).AsList();
            var newNodes = new Dictionary <TexlNode, TexlNode>
            {
                { Args, args }
            };

            TexlNode headNode = null;

            if (HeadNode != null)
            {
                headNode = HeadNode.Clone(ref idNext, ts);
                newNodes.Add(HeadNode, headNode);
            }

            return(new CallNode(ref idNext, Token.Clone(ts), SourceList.Clone(ts, newNodes), Head.Clone(ts), headNode, args, ParenClose));
        }
Beispiel #8
0
        public override TexlNode Clone(ref int idNext, Span ts)
        {
            var left     = Left.Clone(ref idNext, ts);
            var newNodes = new Dictionary <TexlNode, TexlNode>
            {
                { Left, left },
            };
            var rightNode = RightNode?.Clone(ref idNext, ts);

            if (rightNode != null)
            {
                newNodes.Add(RightNode, rightNode);
            }

            DottedNameNode clonedNode = new DottedNameNode(
                ref idNext,
                Token.Clone(ts),
                SourceList.Clone(ts, newNodes),
                left,
                Right.Clone(ts),
                rightNode);

            return(clonedNode);
        }