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


C# Scanner.Peek方法代码示例

本文整理汇总了C#中Scanner.Peek方法的典型用法代码示例。如果您正苦于以下问题:C# Scanner.Peek方法的具体用法?C# Scanner.Peek怎么用?C# Scanner.Peek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Scanner的用法示例。


在下文中一共展示了Scanner.Peek方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetClassificationSpans

		/// <summary>
		/// This method scans the given SnapshotSpan for potential matches for this classification.
		/// In this instance, it classifies everything and returns each span as a new ClassificationSpan.
		/// </summary>
		/// <param name="trackingSpan">The span currently being classified</param>
		/// <returns>A list of ClassificationSpans that represent spans identified to be of this classification</returns>
		public IList<ClassificationSpan> GetClassificationSpans(SnapshotSpan span)
		{
			var scanner = new Scanner(new MemoryStream(Encoding.UTF8.GetBytes(span.GetText())));

			var classifications = new List<ClassificationSpan>();
			Token token;
			bool isNamespace = false;
			int previousTokenKind = 0;
			while ((token = scanner.Scan()).kind != 0)
			{
				var kind = token.kind;
				if(kind == _tokenTypes.Identifier.Id)
				{
					if (scanner.Peek().kind == _tokenTypes.Identifier.Id)
					{
						kind = _tokenTypes.Type.Id;
					}
					else if (previousTokenKind == _tokenTypes.Type.Id)
					{
						kind = _tokenTypes.Parameter.Id;
					}
					else if (previousTokenKind == _tokenTypes.Syntax.Id)
					{
						kind = _tokenTypes.SyntaxName.Id;
					}
					else if (previousTokenKind == _tokenTypes.Using.Id || isNamespace)
					{
						kind = _tokenTypes.Namespace.Id;
						isNamespace = true;
					}
				}

				classifications.Add(
					new ClassificationSpan(
						new SnapshotSpan(
							span.Snapshot,
							new Span(span.Start + token.charPos, token.val.Length)
						),
						_tokenTypes[kind].ClassificationType
					)
				);

				previousTokenKind = kind;
			}

			return classifications;
		}
开发者ID:aaubry,项目名称:FluentOMatic,代码行数:53,代码来源:Editor.cs


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