Trong giai đoạn sinh mã của trình biên dịch, thuật toán đánh số Sethi-Ullman trên AST của biểu thức số học cho biết số thanh ghi tối thiểu cần dùng để tính biểu thức mà không cần lưu tạm ra bộ nhớ (không tràn thanh ghi), giả sử có đủ thanh ghi và mỗi toán tử là nhị phân.
Nhãn Sethi-Ullman L(n) của một nút n được định nghĩa đệ quy như sau:
Cho AST dưới dạng biểu thức tiền tố (toán tử hai ngôi thuộc + - * /, toán hạng là số nguyên không âm hoặc biến - nội dung toán hạng không ảnh hưởng tới kết quả, chỉ hình dạng cây mới quan trọng). Hãy tính L(goˆˊc).
Ví dụ: + + a b + c d có hai cây con của gốc đều là + x y (mỗi bên có nhãn 1+1=2 vì hai lá bằng nhau); hai nhãn con bằng nhau nên nhãn gốc là 2+1=3.
Một dòng duy nhất gồm các token cách nhau bởi một dấu cách: toán tử + - * / hoặc toán hạng (số nguyên không âm hoặc một chữ cái thường). Dãy token tạo thành đúng một AST nhị phân hợp lệ.
In ra một số nguyên duy nhất - nhãn Sethi-Ullman của gốc AST (số thanh ghi tối thiểu cần thiết).
Ví dụ:
Đầu vào:
x
Đầu ra:
1
Đầu vào:
+ a b
Đầu ra:
2
Đang tải editor...