c ++ 11 — Устранить циклическую зависимость std :: functions в переполнении стека

Я пытаюсь реализовать парсер комбинаторы в образовательных целях. Парсер просто определяется как std::function<T(input&)>, Я пришел к выводу, что смогу определить простую грамматику выражений, используя что-то вроде этого кода:

auto expression;  // the type does not matter for the context
auto factor =   number
| (token('(') >= expression >= token(')'))
;
auto term = factor >= *( (token('*') | token('/')) >= factor );
expression = term >= *( (token('+') | token('-')) >= term );

Как видно, проблема в циклических зависимостях. Я не могу найти способ разрешить круговую зависимость, которую вызывает сгруппированный фактор. Операторы, создающие анализатор факторов, нуждаются в синтаксическом анализаторе выражений, но он создается только в самом конце. Как я мог решить это?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector