Sàng lọc / "in đẹp" theo câu trả lời của DC: tất cả các CFL ở dạng Chomsky Bình thường có thể được phân tích cú pháp hiệu quả bằng thuật toán CYK và tất cả các CFL có thể được chuyển đổi thành CNF. Tuy nhiên, việc chuyển đổi CFL tùy ý sang CNF có thể mất không gian theo cấp số nhân trong trường hợp xấu nhất tùy thuộc vào một số thuật toán. (Tôi không biết thuật toán đảm bảo chuyển đổi thời gian P ở đây, có ai khác không? Người ta phải xem xét tất cả các trường hợp cạnh / tồi tệ nhất như CFL không đặc biệt hoặc các trường hợp mơ hồ .) Wikipedia nêu trên phần CNF Thứ tự chuyển đổi
| G |222 | G |
Do đó, dường như có thể tồn tại các CFL không thể phân tích cú pháp một cách hiệu quả. Hầu hết các ngôn ngữ lập trình đều có thể chuyển đổi hiệu quả thành CNF (hoặc có lẽ hầu hết được định nghĩa trong CNF hoặc gần CNF), do đó phân tích cú pháp CFL cho các ngôn ngữ "điển hình" là "thực tế" trong P. Có lẽ có một số nghiên cứu hiện đại về sự phức tạp tồi tệ nhất này (nhưng không tìm các bài báo gần đây về nó trên tìm kiếm chữ thảo). Ví dụ, bài nghiên cứu cũ hơn (1973) của Greibach dường như cũng chỉ ra rằng hiệu suất trong trường hợp xấu nhất có thể không bị ràng buộc bởi P. xem ví dụ.