Есть ли простой способ превратить строку "5 <6" в истину в C ++, Linux? - PullRequest
3 голосов
/ 29 декабря 2010

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

Ответы [ 7 ]

4 голосов
/ 29 декабря 2010

Написание простого синтаксического анализатора арифметических выражений было упражнением в школе.Это действительно не так сложно.Попробуйте!

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

Также на ум приходят инструменты "Flex" и "Bison", хотя я сам ими не пользовался.

1 голос
/ 29 декабря 2010

Нет простого способа сделать это на C или C ++

Вам нужно будет создать свой собственный парсер.

0 голосов
/ 29 декабря 2010

Эта реализация C ++ может быть тем, что вы хотите.

0 голосов
/ 29 декабря 2010

Вставить Perl http://perldoc.perl.org/perlembed.html это быстро и делает то, что вам нужно.

0 голосов
/ 29 декабря 2010

Вот танк, чтобы убить муху.:)

повышение :: дух .

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

0 голосов
/ 29 декабря 2010

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

0 голосов
/ 29 декабря 2010

Мне неизвестна библиотека, которая сделает это за вас, но я бы сделал это сам, учитывая, насколько это просто (по крайней мере, так кажется на первый взгляд).
И проверка его будет очень простой и идеальной для регулярного выражения - вы просто пропустите пробелы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...