Могу ли я сделать универсальное математическое (AST) сопоставление с образцом и манипулирование с Boost.Spirit?

Я смотрел на сопоставление с образцом в C ++, и среди таких вещей, как Mach7, который кажется функциональным подходом к проблеме, и более общий Шаблон посетителя, который кажется наименьшим общим знаменателем: он может делать все, но превосходит только в конкретных случаях.

Я хотел бы манипулировать математическими выражениями (упростить, оценить, а также выполнить вычисления, такие как решение дифференциальных уравнений и интеграция, символически). Да, я хочу закончить с Системой компьютерной алгебры.
Что касается ввода, я смотрю на использование Boost.Spirit (X3) для анализа какой-либо формы ввода (в настоящее время играю с получением базовой поддержки LaTeX, хотя индекс vs sub / superscript — проблема для этого …).

Затем я пришел к сумасшедшей идее использования Boost.Spirit чтобы не только анализировать входной «текст», но также использовать не-парсерные компоненты библиотеки для фактического выполнения математических манипуляций с результирующим AST.
Достаточно ли это универсально для того, чтобы шаблон соответствовал моей цели, или я должен искать другие решения? Я пытался найти документацию о том, как другие CAS работают внутри, но не смог пройти через несомненно блестящий код таких вещей, как максима, Кажется, я не могу найти информацию ни о чем, кроме очень простых реализаций математических AST. Поэтому у меня мало информации для ввода, чтобы определить, может ли Boost.Spirit сделать то, что мне в конечном итоге потребуется.

2

Решение

Я не обладаю достаточной квалификацией, чтобы давать советы по теме символической алгебры и предъявляемым к ней требованиям.

я делать однако знать кое-что о Boost Spirit.

Все, что я могу сказать: не делай этого!

Вы не хотите обременять синтаксический анализатор такими сложными обязанностями, которые просто будет сложнее спроектировать прямо в «искривленной» реальности — актерах EDSL и Phoenix.

На самом деле, я часто повторял этот совет (см., Например, Boost Spirit: "Семантические действия злые"?, это наиболее связано с этим, но я углубил его в нескольких чатах, а иногда и в ответах, где проблема, по-видимому, возникала из-за смешения парсинга с обработкой).

4

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

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

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