本文整理汇总了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;
}