Оценка булевых выражений - PullRequest
0 голосов
/ 10 июня 2010

У меня есть строка (R (46 - 9900)) И (НЕ (R (48 - 9900))), где R обозначает Range.Если вы оцениваете выражение, оно приводит к R (46-47), учитывая логические операторы (И, НЕ).

У меня есть требование, где мне нужно проанализировать такую ​​строку и оценить ее до правильного результата,Я должен использовать C ++ как инструмент программирования для достижения этого результата.

Может кто-нибудь предложить несколько руководящих принципов относительно того, как мне поступить в этом направлении?

1 Ответ

0 голосов
/ 10 июня 2010

Я репостирую ответ Aftershock на ваш вопрос, когда вы в первый раз отправили его, так как это был хороший ответ, и его не стоит удалять:


У вас естьнаписать небольшой переводчик.Есть много способов сделать это.Вот один.Вот пример для этого: http://en.wikipedia.org/wiki/Interpreter_pattern

Это тоже может помочь: http://ryanfarley.com/blog/archive/2004/08/19/966.aspx Это касается пересечения диапазонов данных, но проблема похожа.

Вы также можете использоватьсинтаксический анализатор оператора: http://en.wikipedia.org/wiki/Operator-precedence_parser


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