Объект ParseKit не может быть нулевой ошибкой

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

p: (null) * -[__NSArrayM insertObject:atIndex:]: объект не может быть нулевым

Что это значит? Что я делаю неправильно?


person Marco    schedule 13.10.2011    source источник
comment
Пожалуйста, опубликуйте свой код и отметьте, где это происходит   -  person Dani    schedule 14.10.2011


Ответы (1)


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

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

optionalWhere = empty | 'WHERE' comparisons;

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

Все встроенные парсеры ParseKit пишутся с большой буквы, например: Empty.

Если ты исправишь это, ты в порядке.

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

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

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

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

person Todd Ditchendorf    schedule 14.10.2011