Разработчик ParseKit здесь.
Во-первых, спасибо за сообщение об ошибке в файле date.grammar
. Я исправил это.
Что касается вашего основного вопроса, я почти уверен, что то, что вы пытаетесь, было невозможно с ParseKit до сих пор.
То есть токенизатор ParseKit (PKTokenizer
) не смог выдать только целое число Number
токенов. Числа всегда маркировались как числа с плавающей запятой, что означает, что невозможно проанализировать ввод, например 3.14
, как три отдельных токена 3
(Число) .
(Символ) 14
(Число) Скорее, он всегда будет маркирован как 3.14
.
Хорошие новости: я добавил эту возможность новым методом:
-[PKNumberState allowsFloatingPoint]
по умолчанию YES
.
И я добавил соответствующую Директиву токенизатора , которую вы можете использовать в своих грамматиках ParseKit, например:
@allowsFloatingPoint = NO;
ПРИМЕЧАНИЕ вам понадобится проверить последнюю HEAD транка на Google Code , чтобы увидеть эту функцию.
Итак, вот примерная грамматика даты, которая примерно соответствует тому, что вы просили с новой функцией:
@symbolState = '.';
@allowsFloatingPoint = NO;
@start = date;
date = year dot month dot day;
year = /\d{4}/;
month = /\d{2}/;
day = /\d{2}/;
dot = '.';