В документации описана грамматика такого рода:
grammar
=
| ['()'] ['$'] {'#' &'#'} '#'
| ['()'] {'#' &'#'} '#%'
| ['()'] ['$'] {'0' &'0'} '0'
| ['()'] {'0' &'0%'} '0%'
| ['()'] ['$'] {'#' &'0'} {'0' &'0'} '0'
;
Как правильно описать грамматику, чтобы при попытке разобрать строку вы получили следующий результат:
Для строки '######'
мы получаем результат (['#', '#', '#', '#', '#'], '#')
это True (сработало первое правило)
Для строки '#####%'
мы получаем результат (['#', '#', '#', '#'], '#')
это False должно быть (['#', '#', '#', '#'], '#%')
(сработало сначала но должно было быть второе правило)
Для строки '000000'
получаем результат (['0', '0', '0', '0', '0'], '0')
True (сработало третье правило)
Для строки '###000'
получаем результат (['#', '#'], '#')
это False (сначала сработало, но должно было быть пятое правило)
Являются ли правила, приведенные в документации, абсурдными или я что-то делаю не так?