Передача парсера правилу во время выполнения в X3

В spirit::qi можно передать парсер правилу как унаследованный атрибут, а затем использовать его напрямую:

... >> lazy(_r1) >> ...

Есть ли обходной путь для этого в X3?

Я могу "внедрить" парсер в нужный контекст правила, используя with<state_tag>(std::ref(my_parser))[destination_rule]и позже я могу получить его в рамках некоторого семантического действия - но я не понимаю, как его потом "вызвать".

1 ответ

Решение

Я не думаю, что это там.

Я должен признать, что я просто взламываю большинство вещей с помощью некоторых лямбда-выражений, возвращающих парсеры, но если вам действительно нужно сделать что-то, что реагирует на поток ввода, соответственно изменив состояние, вы, вероятно, захотите написать собственный тип парсера X3.

Обратите внимание, что создание пользовательских типов анализатора на удивление просто в X3. Баптист с Агустином "K-balloon" Берге имеет несколько примеров, и я думаю, что они должны быть и здесь. Позвольте мне найти некоторые ссылки

Другие вопросы по тегам