Bất cứ ai cũng biết nếu có một thuật toán để viết trực tiếp ngữ pháp không ngữ cảnh tạo ra một biểu thức chính quy cho trước?
Bất cứ ai cũng biết nếu có một thuật toán để viết trực tiếp ngữ pháp không ngữ cảnh tạo ra một biểu thức chính quy cho trước?
Câu trả lời:
Tôi giả sử bạn muốn có một ngữ pháp tạo ra cùng ngôn ngữ với biểu thức chính quy định.
Bạn có thể đạt được điều đó bằng các bước sau:
Cả hai bản dịch đều là tiêu chuẩn và được trình bày trong sách giáo khoa cơ bản về ngôn ngữ chính thức và automata. Lưu ý rằng bất kỳ ngữ pháp thông thường cũng không có ngữ cảnh.
Đúng. Tôi đưa ra câu trả lời cấp cao, không có nhiều chi tiết.
Đầu tiên bạn phải phân tích các biểu thức. Điều đó có thể được thực hiện bằng cách sử dụng một trình phân tích cú pháp đệ quy đơn giản. Một số ví dụ trên web.
Sau đó, bạn nên thêm các quy tắc "ngữ nghĩa" vào trình phân tích cú pháp, khi trở về từ đệ quy. Đó là tiêu chuẩn trong bất kỳ khóa học lý thuyết ngôn ngữ chính thức. Nếu và không phải là thiết bị đầu cuối tạo biểu thức và sau đó chúng ta có thể tạo ra bởi và các quy tắc , . Chúng ta có thể tạo ra sự kết hợp bởi và quy tắc . bởi và các quy tắc , . Giả sử chúng ta chọn nonterminals tươi mỗi lần.
Giống như câu trả lời trước, tôi giả sử bạn muốn có một ngữ pháp tạo ra cùng ngôn ngữ với biểu thức chính quy định .
Một thuật toán đệ quy để xây dựng một ngữ pháp không ngữ cảnh với như sau:
Điều này về cơ bản tương đương với câu trả lời của Hendrik, nhưng với nhiều chi tiết hơn có thể hữu ích.