Question

I am trying to use ParseKit in a project. I think to have correctly defined a grammar and each time I try to use that grammar with a test string I obtain a log inside the console and a crash:

p: (null) * -[__NSArrayM insertObject:atIndex:]: object cannot be nil

What's does it means? What I am doing wrong?

Was it helpful?

Solution

Developer of ParseKit here. I was able to find the problem with your grammar you sent me (off site).

The problem is in this line:

optionalWhere = empty | 'WHERE' comparisons;

Here you have an 'empty' which should be Empty.

All built-in ParseKit parsers are capital case like: Empty.

If you fix that, you're good.

To find/fix problems like this in the future: do a global search in the ParseKit project for: "doTestGrammar".

In that method, replace the existing grammar with your grammar. Then run the "DebugApp" target in Debug mode with breakpoints on. This will lead you to the crash. From there, back up in the stack trace to the last parser callback that was called, and print the PKAssembly sent to that parser callback method as an arg. The console output of printing the PKAssembly will point you to the line in your grammar that has a bug. In this case it was:

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

Hope that helps you debug future issues.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top