Chế độ hoảng loạn (panic-mode recovery) là kỹ thuật phục hồi lỗi cú pháp phổ biến nhất: khi gặp lỗi, trình phân tích loại bỏ các token liên tiếp cho đến khi gặp một token đồng bộ (synchronizing token) thuộc một tập cho trước (thường là dấu ;, }, các từ khóa bắt đầu câu lệnh, ...), rồi tiếp tục phân tích bình thường từ token đồng bộ đó.
Cho một dãy n token, một tập các vị trí lỗi (các chỉ số 1-based mà tại đó trình phân tích phát hiện một lỗi cú pháp), và một tập token đồng bộ. Mô phỏng quá trình quét từ token 1 đến token n:
Lưu ý quan trọng: nếu một vị trí lỗi khác rơi vào lúc đang ở trạng thái phục hồi, nó không được báo cáo thêm (bị ức chế) — vì trình phân tích lúc đó đang bỏ qua token, không "nhìn thấy" lỗi mới.
Ví dụ: 8 token a b + ) c ; d e, lỗi tại vị trí 4 (token )), tập đồng bộ {;}. Token 1,2,3 (a b +) được giữ. Vị trí 4 là lỗi → báo cáo, loại bỏ, chuyển sang phục hồi. Token 5 (c) không phải đồng bộ → loại bỏ. Token 6 (;) là đồng bộ → giữ lại, hết phục hồi. Token 7,8 (d e) được giữ bình thường. Kết quả: 1 lỗi báo cáo, 2 token bị loại bỏ, dãy còn lại a b + ; d e.
In ra 3 dòng:
Ví dụ:
Đầu vào:
8
a b + ) c ; d e
1
4
1
;
Đầu ra:
1
2
a b + ; d e
Đầu vào:
5
x y z w q
0
1
;
Đầu ra:
0
0
x y z w q
Đang tải editor...