генератор от boost :: spirit :: x3 AST? - PullRequest
0 голосов
/ 11 января 2019

уважаемые коллеги,

У меня есть синтаксический анализатор boost :: spirit :: x3 (из AST), который прекрасно работает с целью ввода входных файлов в наше приложение.

Я хотел бы перевернуть вещи и попросить их генерировать выходные потоки, основанные на том же дереве.

Это то, чего я никогда не делал. Должен ли я использовать boost :: karma или просто написать посетитель / ходок для дерева? Какие возможности предоставляет буст, которые могут помочь мне начать использовать любой из этих подходов?

Я полагаю, что определение глубины рекурсии глобально и на каждом уровне может быть полезным, так как в противном случае выходные данные могут быть ОГРОМНЫМИ.

Другие вопросы для кого-то нового для рассмотрения?

Спасибо!

1 Ответ

0 голосов
/ 11 января 2019

Нет ничего похожего на карму для X3.

За пределами библиотеки Proto нет средств для обхода дерева выражений.

Тем не менее. Вы столкнетесь с предсказуемыми проблемами, когда сопоставление ввода-вывода не является биекцией. Вам всегда нужно будет выбрать предпочтительное выходное представление для таких данных, а это значит, что ваши данные могут не быть в обе стороны, у вас может быть преобразование с потерями. Вы должны принять это во внимание.

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


¹ как X3, который также является экспериментальным, поэтому все может измениться без уведомления

...