- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 PK 尝试标记化 .gift 文件格式。我正在尝试执行以下操作:
给定一个类似这样的字符串:@"= 2 + 2"
我试图返回“2 + 2”,而无需确定经过该字符串的标记是否等于一个符号,然后再定义输出字符串的形式。我想做的是说如果 [PKToken.stringValue isEqualToString: @"="] 从 PKTokenizer 中弹出该值,然后返回字符串的其余部分,格式仍然完好无损。
让我知道这是否足够清楚...
--斯凯拉。
最佳答案
ParseKit 的开发者|这里。这是我的 ParseKit 语法答案。
同样,我必须说,与 ParseKit 相比,使用正则表达式可能更好地完成对单个字符的简单过滤。
就是说,如果你想用 ParseKit 语法做这种事情,这里有一种方法:
我的语法:
@reportsWhitespaceTokens = YES;
@start = (reject! | passThru)+;
reject = '=';
passThru = ~reject;
!
表示丢弃此 token 。 ~
是逻辑非。
定义这个汇编器回调:
- (void)parser:(PKParser *)p didMatchPassThru:(PKAssembly *)a {
NSLog(@"%s %@", __PRETTY_FUNCTION__, a);
PKToken *tok = [a pop];
if (!a.target) {
a.target = [NSMutableArray array];
}
[a.target addObject:tok];
}
您可以看到,我们只是将 passThru 标记累积在一个存储为程序集目标的数组中。
我的司机代码:
NSString *g = // fetch grammar above
PKParser *p = [[PKParserFactory factory] parserFromGrammar:g assembler:self];
NSString *s = @"= 2 + 2";
NSArray *toks = [p parse:s];
NSString *result = [toks componentsJoinedByString:@""];
NSLog(@"res '%@'", result);
NSAssert([result isEqualToString:@"2 + 2"], @"");
最后,我们只获取累积的标记(程序集的目标)并将它们组合成一个字符串。
关于objective-c - 如何使用 ParseKit 过滤掉不需要的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082156/
问题: 不知道如何翻译 Antlr4“.g4”语法文件的内容以匹配 ParseKit 的语法. 具体来说: 如何翻译-> Channel(HIDDEN);从 Antlr4 语法到 ParseKit 语
当使用 iPhone 的解析器 Parsekit 时。是否可以包含双引号?哪些东西是特殊 BNF 的一部分?(是否可以在定义的语法中转义序列?) @start = doublequote+; doub
我正在使用与 ParseKit 捆绑在一起的 DemoApp,我遇到了一个奇怪的问题。我创建了这个语法: @start = tag; tag = '{' Word ';' Word '}'; 它会解
给定一个简单的 Parsekit 语法。 @start = sentence+; sentence = 'beer' container; container = 'bottle' | 'cup';
我正在尝试为 Parsekit 编写语法以用于我的 iphone 应用程序。我这样做正确吗? @start = wff; wff = disjunction ('IMPLIES' | disjunct
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我为 ParseKit 编写了一个 C 语法,它工作得很好,但让我发疯的是预处理器语句。预处理器语句的正确符号定义是什么? 这是我尝试过的简短示例...... @reportsCommentToken
我正在编写一个需要解析 Wine 菜单的应用程序。据我目前所见,它们都遵循某种结构,关键在于定义所有这些结构。 我现在正在探索使用 Parsekit 和创建语法,但学习曲线非常陡峭。与其花接下来的几周
我正在尝试为 ParseKit 编写语法,以便它与 iphone 应用程序中的基本命题逻辑句子相匹配。有人可以告诉我我哪里出错了。 @start = wff; wff = disjunction (i
对于我的应用程序,我正在尝试构建一个 SQLite解析器。由于我的应用程序使用的是 Objective-C,ParseKit似乎是一个不错的选择。我读过 SQLite 的 syntax diagram
我正在尝试让 ParseKit 的 Tokenizer 识别换行符并且不识别其他空白字符。 此外,示例还展示了如何使其识别以哈希开头的注释,但创建的函数似乎仅适用于单个字符。我想让 PK 识别以两个破
我刚刚发现了 ParseKit,但似乎无法让它在一个简单的例子中工作。 NSString *test = @"FOO:BAR"; NSString *grammar = ...//get gr
我正在使用 PK 尝试标记化 .gift 文件格式。我正在尝试执行以下操作: 给定一个类似这样的字符串:@"= 2 + 2" 我试图返回“2 + 2”,而无需确定经过该字符串的标记是否等于一个符号,然
在掌握了一些 ParseKit 语法语法(在演示应用程序中试玩)之后,我现在正在尝试让我自己的迷你演示正常运行,但到目前为止还没有取得太大的成功。汇编程序回调未被调用。 以下是相关代码的精简版。当 t
我想知道是否有一种方法可以返回 PKParser 在遇到语法错误之前已解析到程序集中的程度。 引用:http://parsekit.com/ 我使用的语法基本上描述了前缀表示法表达式语言。 例如: 给
我应该如何在 parekit 中使用回调函数?假设我有以下规则: expr_s = expr_p '+' expr_s | expr_p ; 我应该从生成的 PKAssembly 中弹出 3 个符号并
我正在尝试使用 ParseKit's Tokenization使用 SQL Server 语法。如果您看一下以下示例: CREATE PROCEDURE [dbo].[test] @MyId UN
我正在尝试归档使用 ParseKit 的 iPad 应用程序。对于使用调试配置的任何构建(即在设备/模拟器上运行并进行分析),我能够利用 ParseKit 正常运行该应用程序。但是,当我使用发布配置时
对于 iOS 应用程序,我想解析一个 HTML 文件,该文件可能包含用于替换的 UNIX 样式变量。例如,HTML 可能如下所示: ${title} ${paragrap
我正在为我正在从事的项目构建一个语法来使用 ParseKit 解析 Newick 树,我已经走到这一步了。它基于此处的语法:http://en.wikipedia.org/wiki/Newick_fo
我是一名优秀的程序员,十分优秀!