gpt4 book ai didi

objective-c - Parsekit 自动补全

转载 作者:可可西里 更新时间:2023-11-01 03:56:22 27 4
gpt4 key购买 nike

给定一个简单的 Parsekit 语法。

@start = sentence+;
sentence = 'beer' container;
container = 'bottle' | 'cup';

如果我有部分解析 beer 是否有可能让 Parsekit 返回句子的可能补全?

最佳答案

这里是 ParseKit 的开发者。

不幸的是,ParseKit 中没有“免费”机制可以自行返回这些数据。

然而,这正是 ParseKit 设计/非常适合的任务类型。但是你必须自己写一些代码。这样的事情会起作用:

首先,稍微更改语法以包含 'beer' 的命名产生式。这将使实现回调更容易:

@start = sentence+;
sentence = beer container;
beer = 'beer';
container = 'bottle' | 'cup';

然后为 beer 生产实现汇编器回调。

- (void)parser:(PKParser *)p didMatchBeer:(PKAssembly *)a {

// here you could find some clever way to look up the completions for 'beer' prefix
// or you can hardcode the completions yourself
NSArray *completions = [NSArray arrayWithObjects:@"bottle", @"cup", nil];

// store the completions as the current assembly's target
a.target = completions;
}

您的“客户端”或“驱动程序”代码应如下所示:

PKParser *p = [PKParserFactory parserFromGrammar:g assembler:a];

PKAssembly *input = [PKAssembly assemblyWithString:@"beer"]; // get this string from the user in reality
PKAssembly *result = [p bestMatchFor:input];
NSArray *completions = result.target;

这应该让您了解如何使用 ParseKit 实现这些类型的东西。对于这样一个小例子,这个解决方案可能看起来有点矫枉过正(而且可能确实如此)。但对于大型真实示例,这将是一个非常强大且优雅的自动完成解决方案。

关于objective-c - Parsekit 自动补全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8931938/

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