gpt4 book ai didi

objective-c - 如何循环遍历 NSString 中的各个 NSString? (语法突出显示/着色)

转载 作者:行者123 更新时间:2023-12-03 16:38:50 25 4
gpt4 key购买 nike

我正在制作一个 Brainfuck(编程语言)IDE,但我被语法着色困扰了。

我想用子字符串预定义一个 NSDictionary ,然后循环它们并返回一个数组,其中包含(或循环遍历)给定字符串中子字符串的范围。

示例:

NSMutableDictionary* keywords = [[NSMutableDictionary alloc] init];

[keywords setObject:[self colorForSymbol:0] forKey:@"<"];

[keywords setObject:[self colorForSymbol:0] forKey:@">"];

[keywords setObject:[self colorForSymbol:1] forKey:@"+"];

[keywords setObject:[self colorForSymbol:1] forKey:@"-"];

然后,对于每个符号,我将使用 NSTextViewNSTextStorage 为所有匹配的 NSRanges 着色。

我需要知道的是如何使用 NSScanner 或类似的东西来达到此目的。

最佳答案

我对this question的回答可能有助于将语法着色 Hook 到 NSTextView 中。

要进行实际的标记化,您应该查看 NSScanner 。您可能需要为每个标记分多次解析文本。您还可以使用正则表达式,例如 RegexKitLite .

这是 NSScanner 的简单演示:

NSScanner* scanner = [NSScanner scannerWithString:@"A string <with> <tokens>"];

NSString* token = @"<";

NSMutableArray* ranges = [NSMutableArray array];

while(![scanner isAtEnd])
{
[scanner scanUpToString:token intoString:nil];
if(![scanner isAtEnd])
{
NSRange tokenRange = NSMakeRange([scanner scanLocation], 1);
[ranges addObject:[NSValue valueWithRange:tokenRange]];
[scanner scanString:token intoString:nil];
}
}

关于objective-c - 如何循环遍历 NSString 中的各个 NSString? (语法突出显示/着色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com