本文整理匯總了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;
}