Как реализовать грамматику EBNF такого вида?

Пытаюсь распарсить строку "###" использую правила EBNF грамматики в библиотеке TatSu (grako):
grammar = """mask =
                  | ['()'] ['$'] {'#'} '#'
                  | ['()'] {'#'} '#%'
                  | ['()'] ['$'] {'#'} {'0'} '0' '.#' {'#'}
"""

Получаю ошибку:
tatsu.exceptions.FailedToken: (1:1) expecting '#' :
#
^
mask
start

Я догадываюсь что выполняется сначала {'#'} (находит '#' ноль или больше раз) и уже после этого пытается найти '#' (обязательный символ '#').
Поэтому как реализовать чтобы сначала находился обязательный символ '#' и уже после этого искал дополнительные символы '#' ?
  • Вопрос задан
  • 60 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 09:23
5000 руб./за проект
01 мая 2024, в 02:11
5000 руб./за проект
01 мая 2024, в 00:29
2000 руб./за проект