Как разобрать логику как текст в структуру данных

Учитывая строку

{A} AND ({B} OR {C} OR ({D} AND {E}))

Как это может быть проанализировано, чтобы быть в пригодной для использования структуре данных?

У меня сейчас

$tokens = preg_split(
'/( AND | OR |\)|\()/',
$rules[0]['option_rule'],
-1,
PREG_SPLIT_DELIM_CAPTURE
);

foreach ($tokens as $token) {
if (empty($token)) {
continue;
}

$token = trim($token);

$special = ['(', ')', 'AND', 'OR'];

// do something with the token?

}

Но понятия не имею, как работать с несколькими уровнями.

1

Решение

Универсальным решением было бы указать ваши правила грамматики и создать лексер, который может обрабатывать / анализировать текст с использованием грамматики. Например: http://nitschinger.at/Writing-a-simple-lexer-in-PHP

0

Другие решения

что-то подобное может сработать, 1 = И, 0 = ИЛИ

array(
'{A}' => 1,
array(
'{B}' => 0,
'{C}' => 0,
array(
'{D}' => 1,
'{E}' =>
)
)
);
0

По вопросам рекламы [email protected]