Beispiel #1
0
        // ArrayIndexAssignment
        private Expression Rewrite(ArrayIndexAssignment node)
        {
            Expression value = RewriteExpression(node.Value);
            Expression array = RewriteExpression(node.Array);
            Expression index = RewriteExpression(node.Index);

            // Did any of them change?
            if (((object)value != (object)node.Value) ||
                ((object)array != (object)node.Array) ||
                ((object)index != (object)node.Index))
            {
                Expression saveValue, saveArray, saveIndex;

                value = ToTemp(value, out saveValue);
                array = ToTemp(array, out saveArray);
                index = ToTemp(index, out saveIndex);

                return(Ast.Comma(
                           saveValue,
                           saveArray,
                           saveIndex,
                           Ast.AssignArrayIndex(array, index, value)
                           ));
            }
            else
            {
                return(node);
            }
        }
Beispiel #2
0
 // ArrayIndexAssignment
 private void Dump(ArrayIndexAssignment node)
 {
     WalkNode(node.Array);
     Out("[");
     WalkNode(node.Index);
     Out("] = ");
     WalkNode(node.Value);
 }
Beispiel #3
0
 // ArrayIndexAssignment
 private void DefaultWalk(ArrayIndexAssignment node)
 {
     if (Walk(node))
     {
         WalkNode(node.Array);
         WalkNode(node.Index);
         WalkNode(node.Value);
     }
     PostWalk(node);
 }
Beispiel #4
0
 // ArrayIndexAssignment
 private void DefaultWalk(ArrayIndexAssignment node)
 {
     if (Walk(node)) {
         WalkNode(node.Array);
         WalkNode(node.Index);
         WalkNode(node.Value);
     }
     PostWalk(node);
 }