2016-07-31 3 views
0

Какова правильная грамматика для синтаксического анализа движения в формате SAN с использованием PEG?Грамматика для разбора шахматного хода с использованием PEG

Решение, которое я придумал это

MOVE <- [NBRQK]? [a-h]? [1-8]? [-x]? [a-h] [1-8] [NBRQ]? 

Однако это кажется неправильным, поскольку он не разобрать NH4, поскольку ч соответствует первому необязательный файл [а-ч]? и парсер не отступает.

Другие шаги, которые должны быть правильно разобранные являются: а4, a3a4, xa4, a8Q, xa8Q, NH4, Nxh4, Ngxh4, Ng3h4, Ngh4, N3h4, Ng3h4, Ng3xh4, но (необязательно) не -a4, N-h4.

ответ

-1

Я уже создал алгебраические синтаксические анализаторы.

Честно говоря, грамматика довольно проста (как вы показываете, не проверяли детали).

Что еще более важно, я не помню необходимости возврата, что является точкой использования PEG. Таким образом, вам не нужен механизм этого комплекса.

Фактически, «синтаксический анализ» настолько прост, что создание реального парсера кажется излишним; вы можете построить FSA, чтобы распознать его без особых проблем.

+0

У меня есть парсер EPD. Перемещение парсинга - это всего лишь небольшая часть. – Alexandru

+0

У вас могут быть другие проблемы, но ваш вопрос связан только с синтаксическими движениями. –

+0

@Alexandru: это то, что ваш downvote? Если да, то почему? –