当前位置: 首页>>代码示例>>C#>>正文


C# TokenStream.MoveToNextToken方法代码示例

本文整理汇总了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;
        }
开发者ID:AlexanderSher,项目名称:RTVS-Old,代码行数:40,代码来源:RdFunctionSignature.cs


注:本文中的TokenStream.MoveToNextToken方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。