Những gì ngữ cảnh bối cảnh trong các ngữ pháp trong bối cảnh ngữ pháp miễn phí ngữ pháp đề cập đến những gì?


30

Có rất nhiều định nghĩa trực tuyến về ngữ pháp không ngữ cảnh là gì, nhưng không có gì tôi thấy là thỏa mãn rắc rối chính của mình:

Có gì bối cảnh là nó giải phóng của?

Để điều tra, tôi đã tìm hiểu "ngữ pháp nhạy cảm ngữ cảnh" nhưng tôi vẫn không tìm thấy "bối cảnh" là gì.

Ai đó có thể vui lòng giải thích những gì contextthuật ngữ đề cập đến trong những tên này?


5
Tôi thấy cách giải thích trên wikipedia khá tốt - "Một ngữ pháp chính thức được coi là" không có ngữ cảnh "khi các quy tắc sản xuất của nó có thể được áp dụng bất kể bối cảnh của một nonterminal. được thay thế bằng phía bên tay phải. " - nó có thể được viết lại và đơn giản hóa để trở thành "Tiếng Anh thuần túy", nhưng ý chính của nó có vẻ khá rõ ràng đối với tôi.
jkff 27/05/2015

1
@jkff thật tuyệt khi bạn tìm thấy lời giải thích tốt, nhưng tôi vẫn không hiểu "bối cảnh" thực sự có nghĩa gì ở đây. Tôi cần xem một ví dụ nơi có bối cảnh và nơi không có bối cảnh. Đối với tôi, dường như mọi ngữ pháp tôi thấy đều có ngữ cảnh
CodyBugstein

Nó không rõ ràng từ định nghĩa?
Raphael

2
Trớ trêu thay, phần cốt yếu của bối cảnh đã bị thiếu trong định nghĩa đó , vì vậy tôi chỉ cần thêm một câu để giải thích nó.
Revierpost

2
Ví dụ: Trong C ++ 11, overridecó thể là tên biến hoặc từ khóa, tùy thuộc vào nơi nó được sử dụng (nghĩa là bối cảnh của nó). Nếu được sử dụng sau khi khai báo phương thức, nó là một từ khóa. Nếu không thì không. Đây là một ví dụ về ngữ pháp nhạy cảm ngữ cảnh.
Thomas Eding

Câu trả lời:


37

Bạn nói đúng, luôn có một bối cảnh theo một nghĩa nào đó. Tôi không nghĩ bạn có thể hiểu "bối cảnh" nghĩa là gì trong "không ngữ cảnh" mà không hiểu sản phẩm.

Một sản phẩm là một quy tắc thay thế. Nó nói rằng, để tạo các chuỗi trong ngôn ngữ, bạn có thể thay thế những gì ở bên trái cho những gì ở bên phải:

A -> xy

Điều này có nghĩa là chuỗi trừu tượng A có thể được thay thế bằng ký tự "x" theo sau là ký tự "y". Bạn cũng có thể có những sản phẩm phức tạp hơn:

zA -> xy

Điều này có nghĩa là ký tự "z" theo sau chuỗi trừu tượng A có thể được thay thế bằng các ký tự "x" và "y".

Một sản phẩm không có ngữ cảnh đơn giản có nghĩa là chỉ có một thứ ở phía bên tay trái. Ví dụ đầu tiên là không có ngữ cảnh, bởi vì A có thể được thay thế bằng "x" và "y" bất kể điều gì đến trước hay sau nó. Tuy nhiên, trong ví dụ thứ hai, ký tự "z" phải xuất hiện trước chữ A và sau đó kết hợp có thể được thay thế bằng "x" và "y", do đó có một số bối cảnh liên quan.

Một ngữ pháp không ngữ cảnh sau đó chỉ là một ngữ pháp chỉ có các sản phẩm không ngữ cảnh.

Ví dụ thứ hai thực sự là một ví dụ về sản xuất không hạn chế. Có một loại khác là giữa không có ngữ cảnh và không bị giới hạn gọi là "nhạy cảm với bối cảnh". Một ví dụ về sản xuất theo ngữ cảnh là:

zA -> zxy

Sự khác biệt là những gì xuất hiện trước A (và sau) ở phía bên tay trái phải được bảo tồn ở bên phải. Điều này có nghĩa là chỉ có A được thay thế, nhưng chỉ có thể được thay thế trong bối cảnh thích hợp.


2
Cảm ơn bạn đó là một sự giúp đỡ rất lớn! Tôi chưa bao giờ thực sự thấy một ví dụ ngữ pháp nào có nhiều hơn một biến ở bên trái như bạn đã chỉ ra. Tôi đoán đó là lý do tại sao tôi không thể thấy "bối cảnh" là gì. Cảm ơn bạn
CodyBugstein

4
Có lẽ một ví dụ ngữ cảnh đơn giản hơn sẽ là zA -> zxy: A vẫn được thay thế bằng xy, nhưng chỉ sau z.
MSalters

Chi tiết hơn, câu trả lời này nói về một ngữ pháp không hạn chế , trong khi @MSalters chỉ ra rằng ngữ pháp nhạy cảm ngữ cảnh sẽ làm cho một ví dụ tốt hơn về ý nghĩa của ngữ cảnh.

@MSalters: Bạn có một điểm tốt. Tôi đã sửa đổi câu trả lời của tôi. Tôi đã có một thời gian khó khăn để đưa ra một cách để thêm các chi tiết đó vào mô tả của mình mà không nghe có vẻ phức tạp hơn, vì vậy những gì tôi đã làm cuối cùng chỉ là thêm chi tiết vào cuối.
Vaughn Cato

9

Aβ
αAδ

Beta là gì? Nó là một thiết bị đầu cuối hoặc một biến? Và bạn có thể giải thích "hình thức tình cảm" không? Điều đó có nghĩa là nó không thể được lấy thêm?
CodyBugstein

Beta có thể là bất cứ điều gì chỉ là A-> beta là một quy tắc. Hình thức có nghĩa là đưa ra biểu tượng bắt đầu của bạn bằng cách sử dụng các quy tắc ngữ pháp, chúng tôi chuyển đổi nó thành kết quả. Kết quả này được gọi là hình thức gửi. Sau mỗi lần sử dụng mọi quy tắc, chúng tôi nhận được một hình thức gửi đi mới.
iLoveCamelCase

3
@Imray Bạn cần xem xét các định nghĩa chính thức cho ngữ pháp và ngữ pháp không ngữ cảnh. Không có lối tắt để hiểu các đối tượng chính thức .
Raphael

1
@Imray Một hình thức cảm tính là một chuỗi các ký hiệu đầu cuốikhông đầu cuối xuất phát từ tiên đề (còn được gọi là ký hiệu ban đầu ) bằng cách áp dụng các quy tắc ngữ pháp (còn được gọi là sản phẩm ). Một hình thức cảm tính có thể được bắt nguồn từ một hình thức khác bằng cách áp dụng quy tắc cho một trong các biểu tượng không đầu cuối của nó. Khi không có các thiết bị đầu cuối còn lại, hình thức gửi là một câu , tức là một chuỗi hoặc từ trong ngôn ngữ được xác định hoặc tạo bởi ngữ pháp. Thuật ngữ này xuất phát từ các nhà ngôn ngữ học đã từng là những người đóng góp chính cho phần này của lý thuyết ngôn ngữ chính thức.
babou

Tôi nghĩ rằng một hình thức cảm tính không thể có bất kỳ biến nào trong đó - nó cần chỉ là thiết bị đầu cuối.
CodyBugstein
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.