Разработчик ParseKit здесь. Мне удалось найти проблему с вашей грамматикой, которую вы мне прислали (за пределами сайта).
Проблема именно в этой строке:
optionalWhere = empty | 'WHERE' comparisons;
Здесь у вас есть «пустой», который должен быть Empty
.
Все встроенные парсеры ParseKit пишутся с большой буквы, например: Empty
.
Если ты исправишь это, ты в порядке.
Чтобы найти/исправить подобные проблемы в будущем: выполните глобальный поиск в проекте ParseKit для: "doTestGrammar".
В этом методе замените существующую грамматику вашей грамматикой. Затем запустите цель «DebugApp» в режиме отладки с включенными точками останова. Это приведет вас к краху. Оттуда выполните резервное копирование в трассировке стека до последнего вызванного обратного вызова синтаксического анализатора и напечатайте PKAssembly
, отправленное этому методу обратного вызова синтаксического анализатора, в качестве аргумента. Вывод консоли при печати PKAssembly
укажет вам на строку в вашей грамматике, в которой есть ошибка. В данном случае это было:
[] /empty/ /|/ /'WHERE'/ /comparisons^
Надеюсь, это поможет вам отладить будущие проблемы.
person
Todd Ditchendorf
schedule
14.10.2011