Есть дерево.
Оно описано следующим языком:
Каждая вершина это или набор символов (например aaa
) или набор символов, после
которого в скобках через запятую перечислены его дочерние вершины
Примеры:
aaa
aaa(bbb,ccc)
aaa(bbb(sdf(1,2),ooo(4,5,fgh(6))),456)
В названиях вершин разрешены все символы, кроме скобок и запятых.
Требуется написать код, который получает на вход файл, где в каждой строке находится
верное или неверное выражение на описанном языке.
На выходе должен получиться файл с таким же числом строк, где, в случае, если
выражение было неверным должно быть написано слово ERROR
, а если оно было
верным, должно стоять выражение, в котором у каждой вершины дерева дочерние
вершины стоят в порядке обратном исходному дереву.
Например, для aaa(bbb(sdf(1,2),ooo(4,5,fgh(6))),456)
Результатом будет aaa(456,bbb(ooo(fgh(6),5,4),sdf(2,1)))