Я хочу использовать PEG.js распознавать номера в нескольких различных форматах:Тестовые все альтернативные модели в PEG.js
number = integer
/real
/(integer/real) '^' (integer/real)
/(integer/real) '^^' (integer/real)
real = [0-9]+ '.' [0-9]*
/[0-9]* '.' [0-9]+
integer = [0-9]+
PEG.js не ищет альтернативы, если существует частичное совпадение в начале последовательность альтернатив. Большинство чисел начинаются с целого числа, и если они этого не делают, они начинаются с реального числа. Как я могу переписать это так, чтобы он тестировал каждую альтернативу индивидуально? (Я не заинтересован в рецептуре правил в меньшем количестве правил.)
Извините, я не нашел проблему достаточно хорошо с моим примером, поэтому мне пришлось ее обновить. Может ли этот подход работать и с расширенным примером? –
@ Pickett см. Мое редактирование. – robertklep
Спасибо. Я думал, что целое или реальное будет частичным совпадением для первого правила в этом случае, теперь я понимаю, что это лишь частичное совпадение, если шаблон частично соответствует входу, а не наоборот. +1 –