📄 abstractasttransformer.cs
字号:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.42
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace ICSharpCode.NRefactory.Visitors {
using System;
using System.Collections.Generic;
using System.Diagnostics;
using ICSharpCode.NRefactory.Ast;
/// <summary>
/// The AbstractAstTransformer will iterate through the whole AST, /// just like the AbstractAstVisitor. However, the AbstractAstTransformer allows /// you to modify the AST at the same time: It does not use 'foreach' internally, /// so you can add members to collections of parents of the current node (but /// you cannot insert or delete items as that will make the index used invalid). /// You can use the methods ReplaceCurrentNode and RemoveCurrentNode to replace /// or remove the current node, totally independent from the type of the parent node.
/// </summary>
public abstract class AbstractAstTransformer : IAstVisitor {
private Stack<INode> nodeStack = new Stack<INode>();
public void ReplaceCurrentNode(INode newNode) {
nodeStack.Pop();
nodeStack.Push(newNode);
}
public void RemoveCurrentNode() {
nodeStack.Pop();
nodeStack.Push(null);
}
public virtual object VisitAddHandlerStatement(AddHandlerStatement addHandlerStatement, object data) {
Debug.Assert((addHandlerStatement != null));
Debug.Assert((addHandlerStatement.EventExpression != null));
Debug.Assert((addHandlerStatement.HandlerExpression != null));
nodeStack.Push(addHandlerStatement.EventExpression);
addHandlerStatement.EventExpression.AcceptVisitor(this, data);
addHandlerStatement.EventExpression = ((Expression)(nodeStack.Pop()));
nodeStack.Push(addHandlerStatement.HandlerExpression);
addHandlerStatement.HandlerExpression.AcceptVisitor(this, data);
addHandlerStatement.HandlerExpression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitAddressOfExpression(AddressOfExpression addressOfExpression, object data) {
Debug.Assert((addressOfExpression != null));
Debug.Assert((addressOfExpression.Expression != null));
nodeStack.Push(addressOfExpression.Expression);
addressOfExpression.Expression.AcceptVisitor(this, data);
addressOfExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, object data) {
Debug.Assert((anonymousMethodExpression != null));
Debug.Assert((anonymousMethodExpression.Parameters != null));
Debug.Assert((anonymousMethodExpression.Body != null));
for (int i = 0; i < anonymousMethodExpression.Parameters.Count; i++) { ParameterDeclarationExpression o = anonymousMethodExpression.Parameters[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (ParameterDeclarationExpression)nodeStack.Pop(); if (o == null) anonymousMethodExpression.Parameters.RemoveAt(i--); else anonymousMethodExpression.Parameters[i] = o; }
nodeStack.Push(anonymousMethodExpression.Body);
anonymousMethodExpression.Body.AcceptVisitor(this, data);
anonymousMethodExpression.Body = ((BlockStatement)(nodeStack.Pop()));
return null;
}
public virtual object VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, object data) {
Debug.Assert((arrayCreateExpression != null));
Debug.Assert((arrayCreateExpression.CreateType != null));
Debug.Assert((arrayCreateExpression.Arguments != null));
Debug.Assert((arrayCreateExpression.ArrayInitializer != null));
nodeStack.Push(arrayCreateExpression.CreateType);
arrayCreateExpression.CreateType.AcceptVisitor(this, data);
arrayCreateExpression.CreateType = ((TypeReference)(nodeStack.Pop()));
for (int i = 0; i < arrayCreateExpression.Arguments.Count; i++) { Expression o = arrayCreateExpression.Arguments[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (Expression)nodeStack.Pop(); if (o == null) arrayCreateExpression.Arguments.RemoveAt(i--); else arrayCreateExpression.Arguments[i] = o; }
nodeStack.Push(arrayCreateExpression.ArrayInitializer);
arrayCreateExpression.ArrayInitializer.AcceptVisitor(this, data);
arrayCreateExpression.ArrayInitializer = ((ArrayInitializerExpression)(nodeStack.Pop()));
return null;
}
public virtual object VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, object data) {
Debug.Assert((arrayInitializerExpression != null));
Debug.Assert((arrayInitializerExpression.CreateExpressions != null));
for (int i = 0; i < arrayInitializerExpression.CreateExpressions.Count; i++) { Expression o = arrayInitializerExpression.CreateExpressions[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (Expression)nodeStack.Pop(); if (o == null) arrayInitializerExpression.CreateExpressions.RemoveAt(i--); else arrayInitializerExpression.CreateExpressions[i] = o; }
return null;
}
public virtual object VisitAssignmentExpression(AssignmentExpression assignmentExpression, object data) {
Debug.Assert((assignmentExpression != null));
Debug.Assert((assignmentExpression.Left != null));
Debug.Assert((assignmentExpression.Right != null));
nodeStack.Push(assignmentExpression.Left);
assignmentExpression.Left.AcceptVisitor(this, data);
assignmentExpression.Left = ((Expression)(nodeStack.Pop()));
nodeStack.Push(assignmentExpression.Right);
assignmentExpression.Right.AcceptVisitor(this, data);
assignmentExpression.Right = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitAttribute(ICSharpCode.NRefactory.Ast.Attribute attribute, object data) {
Debug.Assert((attribute != null));
Debug.Assert((attribute.PositionalArguments != null));
Debug.Assert((attribute.NamedArguments != null));
for (int i = 0; i < attribute.PositionalArguments.Count; i++) { Expression o = attribute.PositionalArguments[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (Expression)nodeStack.Pop(); if (o == null) attribute.PositionalArguments.RemoveAt(i--); else attribute.PositionalArguments[i] = o; }
for (int i = 0; i < attribute.NamedArguments.Count; i++) { NamedArgumentExpression o = attribute.NamedArguments[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (NamedArgumentExpression)nodeStack.Pop(); if (o == null) attribute.NamedArguments.RemoveAt(i--); else attribute.NamedArguments[i] = o; }
return null;
}
public virtual object VisitAttributeSection(AttributeSection attributeSection, object data) {
Debug.Assert((attributeSection != null));
Debug.Assert((attributeSection.Attributes != null));
for (int i = 0; i < attributeSection.Attributes.Count; i++) { ICSharpCode.NRefactory.Ast.Attribute o = attributeSection.Attributes[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = (ICSharpCode.NRefactory.Ast.Attribute)nodeStack.Pop(); if (o == null) attributeSection.Attributes.RemoveAt(i--); else attributeSection.Attributes[i] = o; }
return null;
}
public virtual object VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, object data) {
Debug.Assert((baseReferenceExpression != null));
return null;
}
public virtual object VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, object data) {
Debug.Assert((binaryOperatorExpression != null));
Debug.Assert((binaryOperatorExpression.Left != null));
Debug.Assert((binaryOperatorExpression.Right != null));
nodeStack.Push(binaryOperatorExpression.Left);
binaryOperatorExpression.Left.AcceptVisitor(this, data);
binaryOperatorExpression.Left = ((Expression)(nodeStack.Pop()));
nodeStack.Push(binaryOperatorExpression.Right);
binaryOperatorExpression.Right.AcceptVisitor(this, data);
binaryOperatorExpression.Right = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitBlockStatement(BlockStatement blockStatement, object data) {
Debug.Assert((blockStatement != null));
for (int i = 0; i < blockStatement.Children.Count; i++) { INode o = blockStatement.Children[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = nodeStack.Pop(); if (o == null) blockStatement.Children.RemoveAt(i--); else blockStatement.Children[i] = o; }
return null;
}
public virtual object VisitBreakStatement(BreakStatement breakStatement, object data) {
Debug.Assert((breakStatement != null));
return null;
}
public virtual object VisitCaseLabel(CaseLabel caseLabel, object data) {
Debug.Assert((caseLabel != null));
Debug.Assert((caseLabel.Label != null));
Debug.Assert((caseLabel.ToExpression != null));
nodeStack.Push(caseLabel.Label);
caseLabel.Label.AcceptVisitor(this, data);
caseLabel.Label = ((Expression)(nodeStack.Pop()));
nodeStack.Push(caseLabel.ToExpression);
caseLabel.ToExpression.AcceptVisitor(this, data);
caseLabel.ToExpression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitCastExpression(CastExpression castExpression, object data) {
Debug.Assert((castExpression != null));
Debug.Assert((castExpression.CastTo != null));
Debug.Assert((castExpression.Expression != null));
nodeStack.Push(castExpression.CastTo);
castExpression.CastTo.AcceptVisitor(this, data);
castExpression.CastTo = ((TypeReference)(nodeStack.Pop()));
nodeStack.Push(castExpression.Expression);
castExpression.Expression.AcceptVisitor(this, data);
castExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitCatchClause(CatchClause catchClause, object data) {
Debug.Assert((catchClause != null));
Debug.Assert((catchClause.TypeReference != null));
Debug.Assert((catchClause.StatementBlock != null));
Debug.Assert((catchClause.Condition != null));
nodeStack.Push(catchClause.TypeReference);
catchClause.TypeReference.AcceptVisitor(this, data);
catchClause.TypeReference = ((TypeReference)(nodeStack.Pop()));
nodeStack.Push(catchClause.StatementBlock);
catchClause.StatementBlock.AcceptVisitor(this, data);
catchClause.StatementBlock = ((Statement)(nodeStack.Pop()));
nodeStack.Push(catchClause.Condition);
catchClause.Condition.AcceptVisitor(this, data);
catchClause.Condition = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitCheckedExpression(CheckedExpression checkedExpression, object data) {
Debug.Assert((checkedExpression != null));
Debug.Assert((checkedExpression.Expression != null));
nodeStack.Push(checkedExpression.Expression);
checkedExpression.Expression.AcceptVisitor(this, data);
checkedExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitCheckedStatement(CheckedStatement checkedStatement, object data) {
Debug.Assert((checkedStatement != null));
Debug.Assert((checkedStatement.Block != null));
nodeStack.Push(checkedStatement.Block);
checkedStatement.Block.AcceptVisitor(this, data);
checkedStatement.Block = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
Debug.Assert((classReferenceExpression != null));
return null;
}
public virtual object VisitCompilationUnit(CompilationUnit compilationUnit, object data) {
Debug.Assert((compilationUnit != null));
for (int i = 0; i < compilationUnit.Children.Count; i++) { INode o = compilationUnit.Children[i]; Debug.Assert(o != null); nodeStack.Push(o); o.AcceptVisitor(this, data); o = nodeStack.Pop(); if (o == null) compilationUnit.Children.RemoveAt(i--); else compilationUnit.Children[i] = o; }
return null;
}
public virtual object VisitConditionalExpression(ConditionalExpression conditionalExpression, object data) {
Debug.Assert((conditionalExpression != null));
Debug.Assert((conditionalExpression.Condition != null));
Debug.Assert((conditionalExpression.TrueExpression != null));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -