Разработчик ParseKit здесь.Пример выше не будет работать.По умолчанию токенизатор токенизирует это:
FOO:BAR
как три токена:
Word (FOO)
Symbol (:)
Word (BAR)
Проблема в том, что ваша грамматика ожидает слово типа 'FOO:', но двоеточия являются символьными символамипо умолчанию не символы Word.Если вы хотите, чтобы двоеточия (:) принимались в качестве допустимых внутренних символов Word, вам нужно настроить токенизатор, чтобы он принимал это.Я сомневаюсь, что ты действительно этого хочешь.Если вы это сделаете, прочитайте документы здесь, чтобы узнать, как настроить токенизатор: http://parsekit.com/tokenization.html
Я думаю, что лучшая «игрушечная» грамматика для начала может выглядеть примерно так:
@start = pair;
pair = foo colon bar;
foo = 'FOO';
colon = ':';
bar = 'BAR';
У вас есть большая гибкость в том, как вы делаете свои заявления в своей грамматике.Эквивалентная грамматика будет:
@start = foo ':' bar;
foo = 'FOO';
bar = 'BAR';