Разбор расчетного дерева из строки - PullRequest
4 голосов
/ 31 мая 2011

У меня есть встроенная библиотека в c # или автоматический генератор кода, который получает файл конфигурации и создает синтаксический анализатор дерева вычислений из строки, если его нет. Не могли бы вы помочь мне советом Пример: "-2 + 5> 3" Я быКак построить дерево вычислений, где <- корень, «+» - его правый сын. 3 - левый сын. «-2» - левый сын +, а 5 - его правый сын.И дерево может сделать оценку в этом случае истинным или ложным. </p>

Спасибо.

Ответы [ 4 ]

6 голосов
/ 31 мая 2011

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

4 голосов
/ 31 мая 2011

Вы смотрели на System.Linq.Expressions?например Как преобразовать строку в System.Linq.Expressions.Expression в C #?

3 голосов
/ 31 мая 2011

Библиотека Irony очень проста в использовании и в примерах поставляется с анализатором выражений.

2 голосов
/ 31 мая 2011

Если ваша цель - оценить выражение, а не само дерево - вы можете посмотреть на это: http://www.codeproject.com/KB/recipes/sota_expression_evaluator.aspx

Вероятно, стоит отметить, что реализация большинства оценщиков выражений использует RPN. http://en.wikipedia.org/wiki/Reverse_Polish_notation

...