Разбор математических функций пользовательских типов - PullRequest
2 голосов
/ 22 февраля 2010

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

Я весьма заинтересован в использовании flex и bison для этого, рассматривая разбор уравнений и тому подобное, как здесь, так и дальше. В чем я не уверен, так это в том, подходит ли flex / bison, когда вы пытаетесь анализировать пользовательские типы C ++? Очевидно, что обычный синтаксический анализ выполняется с текстом, и это довольно далеко от того, чего так хотелось, чтобы тоже посмотреть, что думают люди, и посмотреть, пытаюсь ли я поставить квадратный колышек в круглое отверстие.

Что ты думаешь?

Редактировать

В ссылках, предоставленных людьми ниже, есть несколько очень хороших источников информации. Тот, который выглядит многообещающим, но еще не упомянут, Boost.Spirit. Я просматривал примеры ранее сегодня, и есть некоторые информативные примеры на основе калькулятора в каталоге boost / libs / spirit / examples, если вы скачали boost и проявите интерес. Их домашняя страница здесь .

Ответы [ 3 ]

2 голосов
/ 23 февраля 2010

Пожалуйста, проверьте muparser

1 голос
/ 23 февраля 2010

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

Вот несколько примеров:

0 голосов
/ 22 февраля 2010

Для меня это звучит как квадратный колышек в круглой дыре (если только я не неправильно понял вопрос):

Flex создаст конечный автомат для токенизации потока, в вашем случае - содержимое уже токенизировано

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

...