0

我正在尝试在项目中使用 ParseKit。我认为已经正确定义了一个语法,每次我尝试将该语法与测试字符串一起使用时,我都会在控制台中获得一个日志并崩溃:

p: (null) * -[__NSArrayM insertObject:atIndex:]: 对象不能为 nil

这是什么意思?我做错了什么?

4

1 回答 1

0

ParseKit 的开发者在这里。我能够找到您发送给我的语法问题(场外)。

问题出在这一行:

optionalWhere = empty | 'WHERE' comparisons;

在这里,您有一个“空”,应该是Empty.

所有内置的 ParseKit 解析器都是大写的,例如:Empty.

如果你能解决这个问题,你就很好。

将来要查找/修复此类问题:在 ParseKit 项目中进行全局搜索:“doTestGrammar”。

在该方法中,将现有语法替换为您的语法。然后在打开断点的调试模式下运行“DebugApp”目标。这将导致您崩溃。从那里,在堆栈跟踪中备份到最后一个调用的解析器回调,并将PKAssembly发送到该解析器回调方法的内容作为 arg 打印出来。打印的控制台输出PKAssembly会将您指向语法中存在错误的行。在这种情况下,它是:

[] /empty/ /|/ /'WHERE'/ /comparisons^

希望能帮助您调试未来的问题。

于 2011-10-14T05:22:37.320 回答