Как реализовать приоритет выражений Бакус-Наур Форма - PullRequest
0 голосов
/ 25 мая 2020

В документации описана грамматика такого рода:

grammar
    =
    | ['()'] ['$'] {'#' &'#'} '#'
    | ['()'] {'#' &'#'} '#%'
    | ['()'] ['$'] {'0' &'0'} '0'
    | ['()'] {'0' &'0%'} '0%'
    | ['()'] ['$'] {'#' &'0'} {'0' &'0'} '0'
    ;

Как правильно описать грамматику, чтобы при попытке разобрать строку вы получили следующий результат:

Для строки '######' мы получаем результат (['#', '#', '#', '#', '#'], '#') это True (сработало первое правило)

Для строки '#####%' мы получаем результат (['#', '#', '#', '#'], '#') это False должно быть (['#', '#', '#', '#'], '#%') (сработало сначала но должно было быть второе правило)

Для строки '000000' получаем результат (['0', '0', '0', '0', '0'], '0') True (сработало третье правило)

Для строки '###000' получаем результат (['#', '#'], '#') это False (сначала сработало, но должно было быть пятое правило)

Являются ли правила, приведенные в документации, абсурдными или я что-то делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...