Я пытаюсь разобрать список, разделенный запятыми. Для упрощения я просто использую цифры. Эти выражения будут действительными:
(1, 4, 3)
()
(4)
Я могу придумать два способа сделать это, и мне интересно, почему неудачный пример не работает. Я считаю, что это правильный BNF, но я не могу заставить его работать как PEG. Кто-нибудь может объяснить, почему именно? Я пытаюсь лучше понять логику разбора PEG.
Я тестирую с помощью онлайн-генератора анализатора браузера здесь: https://pegjs.org/online
Это не работает:
list = '(' some_digits? ')'
some_digits = digit / ', ' some_digits
digit = [0-9]
(на самом деле он анализирует нормально и любит () или (1), но не распознает (1, 2)
Но это работает:
list = '(' some_digits? ')'
some_digits = digit another_digit*
another_digit = ', ' digit
digit = [0-9]
Это почему? (новичок в грамматике здесь)