本文整理汇总了C#中TokenStream.MoveToNextToken方法的典型用法代码示例。如果您正苦于以下问题:C# TokenStream.MoveToNextToken方法的具体用法?C# TokenStream.MoveToNextToken怎么用?C# TokenStream.MoveToNextToken使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TokenStream
的用法示例。
在下文中一共展示了TokenStream.MoveToNextToken方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ParseSignatures
public static IReadOnlyList<ISignatureInfo> ParseSignatures(string usageContent, IReadOnlyDictionary<string, string> argumentsDescriptions = null) {
// RD signature text may contain \dots sequence which denotes ellipsis.
// R parser does not know about it and hence we will replace \dots by ...
// Also, signatures may contain S3 method info like
// '\method{as.matrix}{data.frame}(x, rownames.force = NA, \dots)'
// which we need to filter out since they are irrelevant to intellisense.
List<ISignatureInfo> signatures = new List<ISignatureInfo>();
usageContent = usageContent.Replace(@"\dots", "...");
RTokenizer tokenizer = new RTokenizer(separateComments: true);
IReadOnlyTextRangeCollection<RToken> collection = tokenizer.Tokenize(usageContent);
ITextProvider textProvider = new TextStream(usageContent);
TokenStream<RToken> tokens = new TokenStream<RToken>(collection, RToken.EndOfStreamToken);
var parseContext = new ParseContext(textProvider,
TextRange.FromBounds(tokens.CurrentToken.Start, textProvider.Length),
tokens, tokenizer.CommentTokens);
while (!tokens.IsEndOfStream()) {
// Filter out '\method{...}{}(signature)
if (tokens.CurrentToken.TokenType == RTokenType.OpenCurlyBrace) {
// Check if { is preceded by \method
}
if (tokens.CurrentToken.TokenType != RTokenType.Identifier) {
break;
}
string functionName = textProvider.GetText(tokens.CurrentToken);
tokens.MoveToNextToken();
ISignatureInfo info = ParseSignature(functionName, parseContext, argumentsDescriptions);
if (info != null) {
signatures.Add(info);
}
}
return signatures;
}