本文整理汇总了C#中ProtoCore.AST.AssociativeAST.IdentifierNode.Accept方法的典型用法代码示例。如果您正苦于以下问题:C# IdentifierNode.Accept方法的具体用法?C# IdentifierNode.Accept怎么用?C# IdentifierNode.Accept使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProtoCore.AST.AssociativeAST.IdentifierNode
的用法示例。
在下文中一共展示了IdentifierNode.Accept方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetPreviewVariable
private void SetPreviewVariable(IEnumerable<Node> parsedNodes)
{
previewVariable = null;
if (parsedNodes == null || (!parsedNodes.Any()))
return;
IdentifierNode identifierNode = null;
foreach (var statement in parsedNodes.Reverse().OfType<BinaryExpressionNode>())
{
identifierNode = statement.LeftNode as IdentifierNode;
if (identifierNode != null) // Found the identifier...
{
// ... that is not a temporary variable, take it!
if (!tempVariables.Contains(identifierNode.Value))
break;
}
}
if (identifierNode == null)
return;
var duplicatedNode = new IdentifierNode(identifierNode);
var identMapper = new IdentifierInPlaceMapper(libraryServices.LibraryManagementCore, ShouldBeRenamed, LocalizeIdentifier);
duplicatedNode.Accept(identMapper);
// Of course, if we just needed "duplicatedNode.Value" we would not
// have to clone the original "IdentifierNode". In addition to
// renaming the variable, we also need to keep the array indexer
// (e.g. the "previewVariable" should be "arr[2][3]" instead of just
// "arr") to obtain the correct value for that particular array
// element. The best way to keep these array indexers, naturally, is
// to use "IdentifierNode.ToString" method, as in:
//
// previewVariable = duplicatedNode.ToString();
//
// But the problem now is, "ILiveRunner.InspectNodeValue" method can
// only return a valid RuntimeMirror if "previewVariable" contains
// variable name (i.e. "arr") and nothing else (e.g. "arr[2][3]").
// For now, simply set the "previewVariable" to just the array name,
// instead of the full expression with array indexers.
//
previewVariable = duplicatedNode.Value;
}