Разбор строк - рекурсивно - PullRequest
1 голос
/ 11 января 2011

У меня есть строка / выражение вроде этого:

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

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

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

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

1 Ответ

3 голосов
/ 11 января 2011

Взгляните на алгоритм Маневрового двора .

В информатике алгоритм маневрового двора - это метод для Разбор математических выражений, указанных в инфиксной записи. Оно может использоваться для получения выходных данных в обратной польской записи (RPN) или в качестве абстрактное синтаксическое дерево (AST). Алгоритм был изобретен Эдсгером Дейкстра и назвал алгоритм "маневрового двора", потому что его работа напоминает железнодорожный маневровый двор.

...