Khi in lại một AST (ví dụ để hiển thị lỗi hoặc debug mã nguồn), trình biên dịch thường cần chuyển cây từ dạng bên trong (tiền tố / hậu tố) sang dạng trung tố (infix) dễ đọc cho con người, kèm ngoặc đơn để thể hiện đúng cấu trúc cây mà không phụ thuộc độ ưu tiên toán tử.
Cho một biểu thức tiền tố (prefix) với các toán tử hai ngôi +,−,×,÷ và toán hạng là biến (một chữ cái thường) hoặc hằng số nguyên không âm, hãy chuyển AST tương ứng sang dạng trung tố, có ngoặc đơn bao quanh MỌI phép toán hai ngôi (kể cả phép toán ở gốc cây), không thêm bất kỳ khoảng trắng nào.
Một dòng duy nhất chứa các token của biểu thức tiền tố, cách nhau bởi khoảng trắng. Biểu thức luôn hợp lệ và không rỗng.
In ra một dòng duy nhất là biểu thức trung tố, mỗi phép toán hai ngôi được bao trong một cặp ngoặc đơn (...), không chứa khoảng trắng.
Ví dụ: với input + a * b c, output là (a+(b*c)). Với input chỉ có một toán hạng, ví dụ a, output là a (không có ngoặc).
Ví dụ:
Đầu vào:
a
Đầu ra:
a
Đầu vào:
+ a * b c
Đầu ra:
(a+(b*c))
Đang tải editor...