Объект ParseKit не может быть нулевой ошибкой - PullRequest
0 голосов
/ 14 октября 2011

Я пытаюсь использовать ParseKit в проекте.Я думаю, что правильно определил грамматику, и каждый раз, когда я пытаюсь использовать эту грамматику с тестовой строкой, я получаю журнал в консоли и вылет:

p: (null) *- [__ NSArrayM insertObject: atIndex:]: объект не может быть nil

Что это значит?Что я делаю не так?

1 Ответ

0 голосов
/ 14 октября 2011

Разработчик ParseKit здесь. Мне удалось найти проблему с вашей грамматикой, которую вы мне отправили (вне сайта).

Проблема в этой строке:

optionalWhere = empty | 'WHERE' comparisons;

Здесь у вас есть «пустой», который должен быть Empty.

Все встроенные парсеры ParseKit имеют прописные буквы, например: Empty.

Если вы исправите это, у вас все хорошо.

Чтобы найти / исправить подобные проблемы в будущем: выполните глобальный поиск в проекте ParseKit для: "doTestGrammar".

В этом методе замените существующую грамматику своей грамматикой. Затем запустите цель «DebugApp» в режиме отладки с включенными точками останова. Это приведет вас к катастрофе. Оттуда выполните резервное копирование в трассировке стека до последнего вызванного обратного вызова синтаксического анализатора и напечатайте PKAssembly, отправленный этому методу обратного вызова синтаксического анализатора, в качестве аргумента. Вывод на консоль печати PKAssembly укажет на строку в вашей грамматике, в которой есть ошибка. В данном случае это было:

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

Надеюсь, что это поможет вам отладить будущие проблемы.

...