ShellSyntaxRewriter Class
Builds a new tree by visiting an old one and returning replacements.
public class ShellSyntaxRewriter : ShellSyntaxVisitor<SyntaxNode?>Remarks
A node whose parts all come back unchanged is returned as it was, so rewriting a tree and changing nothing in it costs nothing and keeps every node.
Example
private sealed class RenameCommand : ShellSyntaxRewriter
{
public override SyntaxNode? VisitCommand(ShellCommandSyntax node)
{
if (node.Name is { } name && node.NameValue == "ls")
return node.ReplaceNode(name, name.WithText("dir"));
return base.VisitCommand(node);
}
}- Inheritance
ShellSyntaxVisitor<SyntaxNode?>ShellSyntaxRewriter
Constructors
| Name | Description |
|---|---|
| ShellSyntaxRewriter() |
ShellSyntaxRewriter()
public ShellSyntaxRewriter()No documentation is available.
Methods
VisitArithmeticExpansion(PosixArithmeticExpansionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitArithmeticExpansion(PosixArithmeticExpansionSyntax node)No documentation is available.
VisitArrayAssignment(PosixArrayAssignmentSyntax)
Syntax.g.cspublic override SyntaxNode? VisitArrayAssignment(PosixArrayAssignmentSyntax node)No documentation is available.
VisitArrayLiteral(PowerShellArrayLiteralSyntax)
Syntax.g.cspublic override SyntaxNode? VisitArrayLiteral(PowerShellArrayLiteralSyntax node)No documentation is available.
VisitAssignment(ShellAssignmentSyntax)
Syntax.g.cspublic override SyntaxNode? VisitAssignment(ShellAssignmentSyntax node)No documentation is available.
VisitAssignmentExpression(PowerShellAssignmentExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitAssignmentExpression(PowerShellAssignmentExpressionSyntax node)No documentation is available.
VisitAttribute(PowerShellAttributeSyntax)
Syntax.g.cspublic override SyntaxNode? VisitAttribute(PowerShellAttributeSyntax node)No documentation is available.
VisitBinaryExpression overloads
VisitBinaryExpression(PowerShellBinaryExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitBinaryExpression(PowerShellBinaryExpressionSyntax node)No documentation is available.
VisitBinaryExpression(ShellBinaryExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitBinaryExpression(ShellBinaryExpressionSyntax node)No documentation is available.
VisitCaseClause(PosixCaseClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCaseClause(PosixCaseClauseSyntax node)No documentation is available.
VisitCaseStatement(PosixCaseStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCaseStatement(PosixCaseStatementSyntax node)No documentation is available.
VisitCastExpression(PowerShellCastExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCastExpression(PowerShellCastExpressionSyntax node)No documentation is available.
VisitCatchClause(PowerShellCatchClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCatchClause(PowerShellCatchClauseSyntax node)No documentation is available.
VisitCmdBlock(CmdParenthesizedBlockSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdBlock(CmdParenthesizedBlockSyntax node)No documentation is available.
VisitCmdCall(CmdCallStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdCall(CmdCallStatementSyntax node)No documentation is available.
VisitCmdElseClause(CmdElseClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdElseClause(CmdElseClauseSyntax node)No documentation is available.
VisitCmdFor(CmdForStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdFor(CmdForStatementSyntax node)No documentation is available.
VisitCmdGoto(CmdGotoStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdGoto(CmdGotoStatementSyntax node)No documentation is available.
VisitCmdIf(CmdIfStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdIf(CmdIfStatementSyntax node)No documentation is available.
VisitCmdLabel(CmdLabelStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdLabel(CmdLabelStatementSyntax node)No documentation is available.
VisitCmdSet(CmdSetStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdSet(CmdSetStatementSyntax node)No documentation is available.
VisitCmdVariableReference(CmdVariableReferenceSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCmdVariableReference(CmdVariableReferenceSyntax node)No documentation is available.
VisitCommand(ShellCommandSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCommand(ShellCommandSyntax node)No documentation is available.
VisitCommandList(ShellCommandListSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCommandList(ShellCommandListSyntax node)No documentation is available.
VisitCommandSubstitution(ShellCommandSubstitutionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCommandSubstitution(ShellCommandSubstitutionSyntax node)No documentation is available.
VisitCompoundStatement(PosixCompoundStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitCompoundStatement(PosixCompoundStatementSyntax node)No documentation is available.
VisitDataStatement(PowerShellDataStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitDataStatement(PowerShellDataStatementSyntax node)No documentation is available.
VisitDelimitedExpressionStatement(PosixDelimitedExpressionStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitDelimitedExpressionStatement(PosixDelimitedExpressionStatementSyntax node)No documentation is available.
VisitDoStatement(PowerShellDoStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitDoStatement(PowerShellDoStatementSyntax node)No documentation is available.
VisitElifClause(PosixElifClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitElifClause(PosixElifClauseSyntax node)No documentation is available.
VisitElseClause(PosixElseClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitElseClause(PosixElseClauseSyntax node)No documentation is available.
VisitElseIfClause(PowerShellElseIfClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitElseIfClause(PowerShellElseIfClauseSyntax node)No documentation is available.
VisitEmbeddedExpression(ShellEmbeddedExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitEmbeddedExpression(ShellEmbeddedExpressionSyntax node)No documentation is available.
VisitEscapeSequence(ShellEscapeSequenceSyntax)
Syntax.g.cspublic override SyntaxNode? VisitEscapeSequence(ShellEscapeSequenceSyntax node)No documentation is available.
VisitExpandableString(PowerShellExpandableStringSyntax)
Syntax.g.cspublic override SyntaxNode? VisitExpandableString(PowerShellExpandableStringSyntax node)No documentation is available.
VisitExpressionStatement(PowerShellExpressionStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitExpressionStatement(PowerShellExpressionStatementSyntax node)No documentation is available.
VisitFinallyClause(PowerShellFinallyClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitFinallyClause(PowerShellFinallyClauseSyntax node)No documentation is available.
VisitFlowStatement(PowerShellFlowStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitFlowStatement(PowerShellFlowStatementSyntax node)No documentation is available.
VisitForEachStatement(PowerShellForEachStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitForEachStatement(PowerShellForEachStatementSyntax node)No documentation is available.
VisitForStatement(PosixForStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitForStatement(PosixForStatementSyntax node)No documentation is available.
VisitFunctionDefinition(PosixFunctionDefinitionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitFunctionDefinition(PosixFunctionDefinitionSyntax node)No documentation is available.
VisitGlob(ShellGlobSyntax)
Syntax.g.cspublic override SyntaxNode? VisitGlob(ShellGlobSyntax node)No documentation is available.
VisitGroupedExpression(ShellGroupedExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitGroupedExpression(ShellGroupedExpressionSyntax node)No documentation is available.
VisitHashEntry(PowerShellHashEntrySyntax)
Syntax.g.cspublic override SyntaxNode? VisitHashEntry(PowerShellHashEntrySyntax node)No documentation is available.
VisitHashLiteral(PowerShellHashLiteralSyntax)
Syntax.g.cspublic override SyntaxNode? VisitHashLiteral(PowerShellHashLiteralSyntax node)No documentation is available.
VisitHereDocument(PosixHereDocumentSyntax)
Syntax.g.cspublic override SyntaxNode? VisitHereDocument(PosixHereDocumentSyntax node)No documentation is available.
VisitIfStatement(PosixIfStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitIfStatement(PosixIfStatementSyntax node)No documentation is available.
VisitIndexExpression(PowerShellIndexExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitIndexExpression(PowerShellIndexExpressionSyntax node)No documentation is available.
VisitInvocation(PowerShellInvocationExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitInvocation(PowerShellInvocationExpressionSyntax node)No documentation is available.
VisitLabeledStatement(PowerShellLabeledStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitLabeledStatement(PowerShellLabeledStatementSyntax node)No documentation is available.
VisitList overloads
VisitList(SyntaxTokenList)
ShellSyntaxRewriter.cspublic virtual SyntaxTokenList VisitList(SyntaxTokenList list)No documentation is available.
VisitList(SyntaxTriviaList)
ShellSyntaxRewriter.csRewrites each trivium of a list, dropping the ones a rewrite turned into the default trivium.
public virtual SyntaxTriviaList VisitList(SyntaxTriviaList list)VisitList<TNode>(SeparatedSyntaxList<TNode>)
ShellSyntaxRewriter.csRewrites the elements of a separated list, keeping its separators in place.
public virtual SeparatedSyntaxList<TNode> VisitList<TNode>(SeparatedSyntaxList<TNode> list) where TNode : ShellSyntaxNodeVisitList<TNode>(SyntaxList<TNode>)
ShellSyntaxRewriter.cspublic virtual SyntaxList<TNode> VisitList<TNode>(SyntaxList<TNode> list) where TNode : ShellSyntaxNodeNo documentation is available.
VisitLiteralWordPart(ShellLiteralWordPartSyntax)
Syntax.g.cspublic override SyntaxNode? VisitLiteralWordPart(ShellLiteralWordPartSyntax node)No documentation is available.
VisitMemberAccess(PowerShellMemberAccessExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitMemberAccess(PowerShellMemberAccessExpressionSyntax node)No documentation is available.
VisitNamedBlock(PowerShellNamedBlockSyntax)
Syntax.g.cspublic override SyntaxNode? VisitNamedBlock(PowerShellNamedBlockSyntax node)No documentation is available.
VisitOperandExpression(ShellOperandExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitOperandExpression(ShellOperandExpressionSyntax node)No documentation is available.
VisitParamBlock(PowerShellParamBlockSyntax)
Syntax.g.cspublic override SyntaxNode? VisitParamBlock(PowerShellParamBlockSyntax node)No documentation is available.
VisitParameter(PowerShellParameterSyntax)
Syntax.g.cspublic override SyntaxNode? VisitParameter(PowerShellParameterSyntax node)No documentation is available.
VisitParenthesizedExpression(PowerShellParenthesizedExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitParenthesizedExpression(PowerShellParenthesizedExpressionSyntax node)No documentation is available.
VisitPipeline(ShellPipelineSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPipeline(ShellPipelineSyntax node)No documentation is available.
VisitPowerShellElseClause(PowerShellElseClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellElseClause(PowerShellElseClauseSyntax node)No documentation is available.
VisitPowerShellForStatement(PowerShellForStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellForStatement(PowerShellForStatementSyntax node)No documentation is available.
VisitPowerShellFunctionDefinition(PowerShellFunctionDefinitionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellFunctionDefinition(PowerShellFunctionDefinitionSyntax node)No documentation is available.
VisitPowerShellIfStatement(PowerShellIfStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellIfStatement(PowerShellIfStatementSyntax node)No documentation is available.
VisitPowerShellLiteral(PowerShellLiteralExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellLiteral(PowerShellLiteralExpressionSyntax node)No documentation is available.
VisitPowerShellVariable(PowerShellVariableExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellVariable(PowerShellVariableExpressionSyntax node)No documentation is available.
VisitPowerShellWhileStatement(PowerShellWhileStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPowerShellWhileStatement(PowerShellWhileStatementSyntax node)No documentation is available.
VisitPrefixedStatement(PosixPrefixedStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitPrefixedStatement(PosixPrefixedStatementSyntax node)No documentation is available.
VisitProcessSubstitution(PosixProcessSubstitutionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitProcessSubstitution(PosixProcessSubstitutionSyntax node)No documentation is available.
VisitQuotedString(ShellQuotedStringSyntax)
Syntax.g.cspublic override SyntaxNode? VisitQuotedString(ShellQuotedStringSyntax node)No documentation is available.
VisitRawExpression(ShellRawExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitRawExpression(ShellRawExpressionSyntax node)No documentation is available.
VisitRedirectedStatement(PosixRedirectedStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitRedirectedStatement(PosixRedirectedStatementSyntax node)No documentation is available.
VisitRedirection(ShellRedirectionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitRedirection(ShellRedirectionSyntax node)No documentation is available.
VisitScript(ShellScriptSyntax)
Syntax.g.cspublic override SyntaxNode? VisitScript(ShellScriptSyntax node)No documentation is available.
VisitScriptBlock(PowerShellScriptBlockSyntax)
Syntax.g.cspublic override SyntaxNode? VisitScriptBlock(PowerShellScriptBlockSyntax node)No documentation is available.
VisitShellConditionalExpression(ShellConditionalExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitShellConditionalExpression(ShellConditionalExpressionSyntax node)No documentation is available.
VisitShellUnaryExpression(ShellUnaryExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitShellUnaryExpression(ShellUnaryExpressionSyntax node)No documentation is available.
VisitSkippedText(ShellSkippedTextSyntax)
Syntax.g.cspublic override SyntaxNode? VisitSkippedText(ShellSkippedTextSyntax node)No documentation is available.
VisitStatementList(ShellStatementListSyntax)
Syntax.g.cspublic override SyntaxNode? VisitStatementList(ShellStatementListSyntax node)No documentation is available.
VisitSubExpression(PowerShellSubExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitSubExpression(PowerShellSubExpressionSyntax node)No documentation is available.
VisitSwitchClause(PowerShellSwitchClauseSyntax)
Syntax.g.cspublic override SyntaxNode? VisitSwitchClause(PowerShellSwitchClauseSyntax node)No documentation is available.
VisitSwitchStatement(PowerShellSwitchStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitSwitchStatement(PowerShellSwitchStatementSyntax node)No documentation is available.
VisitTernaryExpression(PowerShellTernaryExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitTernaryExpression(PowerShellTernaryExpressionSyntax node)No documentation is available.
VisitToken(SyntaxToken)
ShellSyntaxRewriter.csRewrites a token, putting the trivia around it through ShellSyntaxRewriter.VisitTrivia.
public virtual SyntaxToken VisitToken(SyntaxToken token)Parameters
tokenSyntaxToken
Returns
Remarks
Nothing else reaches a token's trivia, so an override of ShellSyntaxRewriter.VisitTrivia would never be called if this returned the token untouched. A rewrite that returns the default trivium removes it.
VisitTrapStatement(PowerShellTrapStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitTrapStatement(PowerShellTrapStatementSyntax node)No documentation is available.
VisitTrivia(SyntaxTrivia)
ShellSyntaxRewriter.cspublic virtual SyntaxTrivia VisitTrivia(SyntaxTrivia trivia)No documentation is available.
VisitTryStatement(PowerShellTryStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitTryStatement(PowerShellTryStatementSyntax node)No documentation is available.
VisitTypeDefinition(PowerShellTypeDefinitionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitTypeDefinition(PowerShellTypeDefinitionSyntax node)No documentation is available.
VisitTypeLiteral(PowerShellTypeLiteralSyntax)
Syntax.g.cspublic override SyntaxNode? VisitTypeLiteral(PowerShellTypeLiteralSyntax node)No documentation is available.
VisitUnaryExpression(PowerShellUnaryExpressionSyntax)
Syntax.g.cspublic override SyntaxNode? VisitUnaryExpression(PowerShellUnaryExpressionSyntax node)No documentation is available.
VisitUsingStatement(PowerShellUsingStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitUsingStatement(PowerShellUsingStatementSyntax node)No documentation is available.
VisitVariableReference(ShellVariableReferenceSyntax)
Syntax.g.cspublic override SyntaxNode? VisitVariableReference(ShellVariableReferenceSyntax node)No documentation is available.
VisitWhileStatement(PosixWhileStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitWhileStatement(PosixWhileStatementSyntax node)No documentation is available.
VisitWord(ShellWordSyntax)
Syntax.g.cspublic override SyntaxNode? VisitWord(ShellWordSyntax node)No documentation is available.
VisitZshAlwaysStatement(ZshAlwaysStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitZshAlwaysStatement(ZshAlwaysStatementSyntax node)No documentation is available.
VisitZshForeachStatement(ZshForeachStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitZshForeachStatement(ZshForeachStatementSyntax node)No documentation is available.
VisitZshRepeatStatement(ZshRepeatStatementSyntax)
Syntax.g.cspublic override SyntaxNode? VisitZshRepeatStatement(ZshRepeatStatementSyntax node)No documentation is available.