public virtual ExpressionAst VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return(new UnaryExpressionAst( unaryExpressionAst.Extent, unaryExpressionAst.TokenKind, unaryExpressionAst.Child.Rewrite(this, SyntaxKind.Expression))); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { var childVariableExpressionAst = unaryExpressionAst.Child as VariableExpressionAst; var childVariable = childVariableExpressionAst == null ? null : GetVariable(childVariableExpressionAst); var childVariableValue = childVariable == null ? null : childVariable.Value; switch (unaryExpressionAst.TokenKind) { case TokenKind.PostfixPlusPlus: if (childVariable == null) { throw new NotImplementedException(unaryExpressionAst.ToString()); } if (childVariableValue is PSObject) { if (this._writeSideEffectsToPipeline) { this._pipelineCommandRuntime.WriteObject(childVariable.Value); } childVariable.Value = PSObject.AsPSObject(((int)((PSObject)childVariableValue).BaseObject) + 1); } else { throw new NotImplementedException(childVariableValue.ToString()); } break; case TokenKind.PlusPlus: if (childVariable == null) { throw new NotImplementedException(unaryExpressionAst.ToString()); } if (childVariableValue is PSObject) { childVariable.Value = PSObject.AsPSObject(((int)((PSObject)childVariableValue).BaseObject) + 1); if (this._writeSideEffectsToPipeline) { this._pipelineCommandRuntime.WriteObject(childVariable.Value); } } else { throw new NotImplementedException(childVariableValue.ToString()); } break; default: throw new NotImplementedException(unaryExpressionAst.ToString()); } return(AstVisitAction.SkipChildren); }
public static UnaryExpressionAst Update( this UnaryExpressionAst ast, TokenKind?tokenKind = null, ExpressionAst child = null) { return(new UnaryExpressionAst( ast.Extent, tokenKind ?? ast.TokenKind, child?.Clone() ?? ast.Child?.Clone())); }
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { if (s_context != null) { return(Compiler.GetExpressionValue(unaryExpressionAst, true, s_context, null)); } else { throw PSTraceSource.NewArgumentException("ast"); } }
public void PostIncrementExpression() { UnaryExpressionAst unaryExpressionAst = ParseStatement("$x++") .PipelineElements[0] .Expression; Assert.AreEqual(TokenKind.PostfixPlusPlus, unaryExpressionAst.TokenKind); VariableExpressionAst variableExpressionAst = (VariableExpressionAst)unaryExpressionAst.Child; Assert.AreEqual("x", variableExpressionAst.VariablePath.UserPath); }
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { bool unaryExpressionIsSafe = unaryExpressionAst.TokenKind.HasTrait(TokenFlags.CanConstantFold) && !unaryExpressionAst.TokenKind.HasTrait(TokenFlags.DisallowedInRestrictedMode) && (bool)unaryExpressionAst.Child.Accept(this); if (unaryExpressionIsSafe) { _visitCount++; } return(unaryExpressionIsSafe); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { var(description, helpQuery) = Helpers.TokenExplainer(unaryExpressionAst.TokenKind); helpQuery ??= "about_operators"; explanations.Add(new Explanation() { Description = description, CommandName = "Unary operator", HelpResult = HelpTableQuery(helpQuery), TextToHighlight = unaryExpressionAst.TokenKind.Text() }.AddDefaults(unaryExpressionAst, explanations)); return(AstVisitAction.Continue); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { var child = VisitSyntaxNode(unaryExpressionAst.Child); if (unaryExpressionAst.TokenKind == TokenKind.PostfixPlusPlus) { _currentNode = new PostfixUnaryExpression(child, "++"); } else if (unaryExpressionAst.TokenKind == TokenKind.PlusPlus) { _currentNode = new PrefixUnaryExpression(child, "++"); } else if (unaryExpressionAst.TokenKind == TokenKind.PostfixMinusMinus) { _currentNode = new PostfixUnaryExpression(child, "--"); } else if (unaryExpressionAst.TokenKind == TokenKind.MinusMinus) { _currentNode = new PrefixUnaryExpression(child, "--"); } return(AstVisitAction.SkipChildren); }
public virtual TResult VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => default(TResult);
object ICustomAstVisitor.VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => VisitUnaryExpression(unaryExpressionAst);
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst ast) { return(DoNextAction(ast)); }
public override ExpressionAst VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => VisitExpression(base.VisitUnaryExpression(unaryExpressionAst));
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { var newChild = VisitElement(unaryExpressionAst.Child); return(new UnaryExpressionAst(unaryExpressionAst.Extent, unaryExpressionAst.TokenKind, newChild)); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return(Visit(unaryExpressionAst)); }
public override object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { // from https://en.wikipedia.org/wiki/Unary_operation#Windows_PowerShell // ++x, --x, +x, -x, .x, -not x, &x switch (unaryExpressionAst.TokenKind) { case TokenKind.PlusPlus: script_.Write("++"); break; case TokenKind.Plus: script_.Write("+"); break; case TokenKind.MinusMinus: script_.Write("--"); break; case TokenKind.Minus: script_.Write("-"); break; case TokenKind.Exclaim: script_.Write("!"); break; case TokenKind.Dot: script_.Write("."); break; case TokenKind.Not: script_.Write("-not "); break; case TokenKind.Ampersand: script_.Write("&"); break; case TokenKind.PostfixPlusPlus: case TokenKind.PostfixMinusMinus: break; default: throw new Exception("Unary token not supported"); } VisitElement(unaryExpressionAst.Child); // x++, x-- switch (unaryExpressionAst.TokenKind) { case TokenKind.PostfixPlusPlus: script_.Write("++"); break; case TokenKind.PostfixMinusMinus: script_.Write("--"); break; } return(unaryExpressionAst); }
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { Console.WriteLine("Visited an UnaryExpressionAst."); return(unaryExpressionAst); }
/// <summary/> public virtual AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => DefaultVisit(unaryExpressionAst);
object ICustomAstVisitor.VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => ProcessRewriter(VisitUnaryExpression, unaryExpressionAst);
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { throw new UnexpectedElementException(); }
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => null;
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { throw new NotImplementedException(); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { Console.WriteLine("Visited an UnaryExpressionAst."); Console.WriteLine(" " + unaryExpressionAst.ToString().Replace(Environment.NewLine, Environment.NewLine + " ")); return(AstVisitAction.Continue); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst ast) { return(AstVisitAction.Continue); }
public virtual object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { VisitElement(unaryExpressionAst.Child); return(unaryExpressionAst); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { throw new NotImplementedException(); //VisitUnaryExpression(unaryExpressionAst); }
public object VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) { return((bool)unaryExpressionAst.Child.Accept(this)); }
public override AstVisitAction VisitUnaryExpression(UnaryExpressionAst unaryExpressionAst) => VisitAst(unaryExpressionAst);