2011-01-11 3 views
1

У меня есть строка/выражение вроде этого:Строка Синтаксического - Рекурсивный

(((p1 == 1) && (p2 != 2)) || p3 > 3) || (p4 < 5) 

Я хочу, чтобы разобрать это выражение рекурсивно, чтобы построить бинарное дерево выражения.

Итак, для этого выражения корень будет || оператор.

Как я могу построить этот алгоритм? Заранее спасибо,

ответ

3

Посмотрите на Shunting-Yard Algorithm.

В информатике, алгоритм шунтирования двора является методом разбора математических выражений, указанных в инфиксной нотации. Он может использовать для вывода выходного сигнала в реверсивном польском обозначении (RPN) или в виде абстрактного синтаксического дерева (AST) . Алгоритм был изобретен Edsger Dijkstra и назван алгоритмом «шунтирующий двор», так как его работа напоминает модель железнодорожного трамвая.