Mối quan hệ giữa ngữ pháp đơn giản và thông thường


7

Tôi đang đọc "Giới thiệu về ngôn ngữ chính thức và Automata" được viết bởi Peter Linz và sau khi đọc năm chương đầu tiên tôi gặp phải vấn đề với các ngữ pháp đơn giản và thường xuyên (đặc biệt là tuyến tính) rất giống nhau.

Mối quan hệ nào tồn tại giữa những điều này? Sự khác biệt là gì? Bạn có thể tạo automata hữu hạn (không xác định) cho các ngữ pháp đơn giản (rõ ràng không cần sử dụng ngăn xếp) không?


2
Tôi không quen thuộc với các ngữ pháp đơn giản, bạn có thể nhớ lại định nghĩa hoặc đưa ra một tài liệu tham khảo?
jmad

Câu trả lời:


13

Một ngữ pháp đơn giản (s-grammar) là một trong đó mọi sản phẩm đều có dạng AaB1B2...Bn Ở đâu a là một thiết bị đầu cuối và tất cả Bi,i0 không phải là thiết bị đầu cuối và chỉ có một sản phẩm với bất kỳ cặp nào A,a.

Rõ ràng, mọi ngôn ngữ s (được tạo bởi một ngữ pháp s) không rõ ràng và dễ bị phân tích cú pháp, vì mỗi ký hiệu đầu cuối từ trái sang phải và không đầu cuối xác định duy nhất việc sản xuất để áp dụng. Ví dụ: nếu chuỗi làabc, sau đó là cặp S,axác định duy nhất việc sản xuất đầu tiên của phân tích cú pháp, v.v. cho mỗi thiết bị đầu cuối và thiết bị đầu cuối ở bên phải của nó. Do đó, một ngôn ngữ được xác định bởi một ngữ pháp s có thể được phân tích cú pháp một ký hiệu tại một thời điểm, mà không cần nhìn, mang lại thời gian phân tích tuyến tính, trên thực tế, thời gian|x|.

S-grammars không quan trọng khủng khiếp theo cách riêng của họ, vì hầu hết các ngôn ngữ thực sự vượt quá sức mạnh của họ. Nhưng chúng là bước đệm cho các ngữ pháp khác được phân tích cú pháp trong thời gian tuyến tính, chẳng hạn nhưLL(k) ngữ pháp trong đó có một ràng buộc ktrên cái nhìn cần thiết để xác định một sản phẩm trong quá trình phân tích cú pháp. Trong thực tế, một ngữ pháp là mộtLL(0) ngữ pháp.

Kết nối với automata là một s-langauge có thể được phân tích cú pháp bằng một máy tự động đẩy xuống với một trạng thái duy nhất chỉ nhìn vào biểu tượng đầu vào và biểu tượng ngăn xếp trên cùng để xác định một chuỗi các biểu tượng ngăn xếp để đẩy. Nhưng vì ngữ pháp ...

SaSB|#Ba

... tạo ra không thường xuyên {ai#ai:i0}, ngôn ngữ s nói chung không thể được công nhận bởi automata trạng thái hữu hạn, xác định hoặc không xác định.


2
Một cách khác để so sánh chúng là bởi các vấn đề quyết định của họ. Đối với các ngữ pháp đơn giản, vấn đề tương đương (cho dù hai ngữ pháp tạo ra cùng một ngôn ngữ) là có thể quyết định được, trong khi vấn đề bao gồm (liệu một ngữ pháp có tạo ra một tập hợp con của ngôn ngữ do ngữ pháp khác tạo ra không thì không. Đối với ngữ pháp thông thường, cả hai vấn đề đều có thể quyết định.
Revierpost
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.