public virtual ExpressionAst VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     return(new IndexExpressionAst(
                indexExpressionAst.Extent,
                indexExpressionAst.Target.Rewrite(this),
                indexExpressionAst.Index.Rewrite(this)));
 }
        public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
        {
            var newTargetExpression = VisitElement(indexExpressionAst.Target);
            var newIndexExpression  = VisitElement(indexExpressionAst.Index);

            return(new IndexExpressionAst(indexExpressionAst.Extent, newTargetExpression, newIndexExpression));
        }
Пример #3
0
        public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst)
        {
            var targetValue = EvaluateAst(indexExpressionAst.Target);

            int index = (int)EvaluateAst(indexExpressionAst.Index);

            var stringTargetValue = targetValue as string;

            if (stringTargetValue != null)
            {
                var result = stringTargetValue[index];
                this._pipelineCommandRuntime.WriteObject(result);
            }

            else if (targetValue is IList)
            {
                var result = (targetValue as IList)[index];
                this._pipelineCommandRuntime.WriteObject(result);
            }

            else
            {
                throw new NotImplementedException(indexExpressionAst.ToString() + " " + targetValue.GetType());
            }

            return(AstVisitAction.SkipChildren);
        }
Пример #4
0
        private ExpressionAst CreateClosureAccess(IScriptExtent extent, string name)
        {
            MaybeProcessMember(name, out int index, out string groupName);
            var closureExpr = new IndexExpressionAst(
                extent,
                new VariableExpressionAst(extent, "args", false),
                new ConstantExpressionAst(extent, 0));

            var groupExpr = new MemberExpressionAst(
                extent,
                closureExpr,
                new StringConstantExpressionAst(extent, groupName, StringConstantType.BareWord),
                @static: false);

            var elementAccess = new IndexExpressionAst(
                extent,
                groupExpr,
                new ConstantExpressionAst(extent, index));

            if (groupName != nameof(Closure.Inherits))
            {
                return(elementAccess);
            }

            return(new MemberExpressionAst(
                       extent,
                       elementAccess,
                       new StringConstantExpressionAst(extent, nameof(PSVariable.Value), StringConstantType.BareWord),
                       @static: false));
        }
Пример #5
0
        public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
        {
            var target = VisitAst(indexExpressionAst.Target);
            var index  = VisitAst(indexExpressionAst.Index);

            return(new IndexExpressionAst(indexExpressionAst.Extent, target, index));
        }
Пример #6
0
 public override object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     VisitElement(indexExpressionAst.Target);
     script_.Write("[");
     VisitElement(indexExpressionAst.Index);
     script_.Write("]");
     return(indexExpressionAst);
 }
        public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst)
        {
            var target = VisitSyntaxNode(indexExpressionAst.Target);
            var index  = VisitSyntaxNode(indexExpressionAst.Index);

            _currentNode = new ElementAccess(target, new BracketedArgumentList(new ArgumentList(index)));

            return(AstVisitAction.SkipChildren);
        }
 public static IndexExpressionAst Update(
     this IndexExpressionAst ast,
     ExpressionAst target = null,
     ExpressionAst index  = null)
 {
     return(new IndexExpressionAst(
                ast.Extent,
                target?.Clone() ?? ast.Target.Clone(),
                index?.Clone() ?? ast.Index.Clone()));
 }
        public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
        {
            // Get the value of the index and value and call the compiler
            var index  = indexExpressionAst.Index.Accept(this);
            var target = indexExpressionAst.Target.Accept(this);

            if (index == null || target == null)
            {
                throw new ArgumentNullException("indexExpressionAst");
            }

            return(GetIndexedValueFromTarget(target, index));
        }
Пример #10
0
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     throw new NotImplementedException();
 }
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst) => null;
Пример #12
0
 /// <summary/>
 public virtual AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst) => DefaultVisit(indexExpressionAst);
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst functionDefinitionAst)
 {
     // We don't want to discover any variables in index expressions (`$something[0]`)
     return(AstVisitAction.SkipChildren);
 }
Пример #14
0
 internal SettableIndexExpression(IndexExpressionAst expressionAst, ExecutionVisitor currentExecution)
     : base(currentExecution)
 {
     _expressionAst = expressionAst;
 }
Пример #15
0
 public override ExpressionAst VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 => VisitExpression(base.VisitIndexExpression(indexExpressionAst));
Пример #16
0
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst ast)
 {
     return(DoNextAction(ast));
 }
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     return(Visit(indexExpressionAst));
 }
 object ICustomAstVisitor.VisitIndexExpression(IndexExpressionAst indexExpressionAst) => VisitIndexExpression(indexExpressionAst);
 public virtual TResult VisitIndexExpression(IndexExpressionAst indexExpressionAst) => default(TResult);
Пример #20
0
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     Console.WriteLine("Visited an IndexExpressionAst.");
     return(indexExpressionAst);
 }
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     return((bool)indexExpressionAst.Index.Accept(this) && (bool)indexExpressionAst.Target.Accept(this));
 }
Пример #22
0
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     throw new UnexpectedElementException();
 }
 object ICustomAstVisitor.VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 => ProcessRewriter(VisitIndexExpression, indexExpressionAst);
Пример #24
0
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     Console.WriteLine("Visited an IndexExpressionAst.");
     Console.WriteLine("    " + indexExpressionAst.ToString().Replace(Environment.NewLine, Environment.NewLine + "    "));
     return(AstVisitAction.Continue);
 }
Пример #25
0
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst ast)
 {
     return(AstVisitAction.Continue);
 }
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     AstExplainer(indexExpressionAst);
     return(base.VisitIndexExpression(indexExpressionAst));
 }
Пример #27
0
 public virtual object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     VisitElement(indexExpressionAst.Target);
     VisitElement(indexExpressionAst.Index);
     return(indexExpressionAst);
 }
Пример #28
0
 public object VisitIndexExpression(IndexExpressionAst indexExpressionAst)
 {
     return(!((bool)indexExpressionAst.Target.Accept(this)) ? ((object)0) : ((object)((bool)indexExpressionAst.Index.Accept(this))));
 }
Пример #29
0
 public override AstVisitAction VisitIndexExpression(IndexExpressionAst indexExpressionAst) => VisitAst(indexExpressionAst);