Функция конвертации AST арифметического выражения в строку кода
Условие задачи
Дано: арифметическое выражение заданное в форме AST (Abstract Syntax Tree) в префиксной нотации.
AST может быть вещественным числом либо массивом, в котором первый элемент это всегда строка обозначающая арифметическую операцию, а все последующие элементы - аргументы этой операции (тоже в формате AST): AST = float | ['operation', arg1, arg2, ..., argN], где arg1, arg2, ..., argN — AST
Поддерживаются следующие арифметические операции: унарный (-) унарный (+) сложение (+) вычитание (-) умножение (*) деление (/).
Допустимо считать, что входные данные всегда корректны.
Требуется написать функцию "astToCode", которая принимает на вход AST и конвертирует его в строку кода.
phpfunction astToCode(array|float $ast): string
{
}
function test(array|float $ast, string $expectedCode): void
{
$actualCode = astToCode($ast);
echo $actualCode === $expectedCode ? 'OK' : "FAIL ";
echo ": $expectedCode" . PHP_EOL;
}
test(5, '5');
test(, , 3]]], '-(+3)');
test(, 1]], '+(-1)');
test(, ], '(1 * 2) * (3 - 1)');
test(]], '2 * 5 * 7 / (8 - (5 + 6))');
test(, , ], '1 + 2 - (3 - 4) - (5 + 6)');