本文整理汇总了C#中CSharpSyntaxNode.Accept方法的典型用法代码示例。如果您正苦于以下问题:C# CSharpSyntaxNode.Accept方法的具体用法?C# CSharpSyntaxNode.Accept怎么用?C# CSharpSyntaxNode.Accept使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSharpSyntaxNode
的用法示例。
在下文中一共展示了CSharpSyntaxNode.Accept方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: VisitNode
void VisitNode(CSharpSyntaxNode node)
{
if (node == null)
return;
node.Accept(Visitor);
var children = node.ChildNodes();
if (children != null)
{
foreach (var child in children)
VisitNode(child as CSharpSyntaxNode);
}
}
示例2: FirstValidSymbolOccuranceOfVariable
public static ILocalSymbol FirstValidSymbolOccuranceOfVariable(SemanticModel model, CSharpSyntaxNode context, string identifier)
{
var outerForLoop = context.FirstAncestorOrSelf<ForStatementSyntax>();
var outerCatchClause = context.FirstAncestorOrSelf<CatchClauseSyntax>();
var foreachLoop = context.FirstAncestorOrSelf<ForEachStatementSyntax>();
var usings = context.FirstAncestorOrSelf<UsingStatementSyntax>();
if (outerForLoop != null && outerForLoop.Declaration.Variables.Any(x => x.Identifier.ToString() == identifier))
context = outerForLoop;
else if (outerCatchClause != null && outerCatchClause.Declaration.Identifier.ToString() == identifier)
context = outerCatchClause;
else if (foreachLoop != null && foreachLoop.Identifier.ToString() == identifier)
context = foreachLoop;
else if (usings.Declaration.Variables.Any(x => x.Identifier.ToString() == identifier))
context = usings;
else
context = context.FirstAncestorOrSelf<BlockSyntax>();
var walker = new VariableUsageFinder(model, context, identifier);
context.Accept(walker);
return (ILocalSymbol)walker.symbols.FirstOrDefault();
}
示例3: CaptureState
protected StatementSyntax[] CaptureState(CSharpSyntaxNode node, State nextState, State breakState)
{
var catchBatch = new State(this, true) { NextState = nextState };
var oldState = currentState;
currentState = catchBatch;
node.Accept(this);
// If after walking the node, it might leave the current state in an unclosed state. We want to make sure it's closed.
if (currentState != breakState && currentState != catchBatch && currentState != nextState && currentState != oldState)
{
Close(currentState);
}
return catchBatch.Statements.ToArray();
}
示例4: RenameIdentifier
public static CSharpSyntaxNode RenameIdentifier(CSharpSyntaxNode node, SyntaxToken renameFrom, SyntaxToken renameTo)
{
return (CSharpSyntaxNode)node.Accept(new IdentifierRenamer(renameFrom, renameTo));
}
示例5: StripStatements
public static SyntaxNode StripStatements(CSharpSyntaxNode root)
{
return root.Accept(new BreakStatementStripper());
}