Apa yang dimaksud dengan "konteks" dalam "tata bahasa bebas konteks" merujuk?

30

Ada banyak definisi online tentang apa itu Tata Bahasa Bebas Konteks, tetapi tidak ada yang saya temukan yang memuaskan masalah utama saya:

Konteks apa itu gratis?

Untuk menyelidiki, saya mencari "tata bahasa sensitif konteks" di Google, tetapi saya masih gagal menemukan apa arti "konteks" itu.

Bisakah seseorang tolong jelaskan apa contextistilah yang dimaksud dalam nama-nama ini?

CodyBugstein
sumber
5
Saya menemukan penjelasan wikipedia cukup bagus - "Tata bahasa formal dianggap" bebas konteks "ketika aturan produksinya dapat diterapkan terlepas dari konteks nonterminal. Tidak peduli simbol mana yang mengelilinginya, nonterminal tunggal di sisi kiri selalu dapat digantikan oleh sisi kanan. " - itu dapat diulang dan disederhanakan menjadi "Bahasa Inggris Biasa", tetapi intinya tampak jelas bagi saya.
jkff
1
@ jkff itu bagus bahwa Anda menemukan penjelasan yang baik, tetapi saya masih gagal memahami apa arti "konteks" di sini. Saya perlu melihat contoh di mana ada konteks, dan di mana tidak ada konteks. Bagi saya, sepertinya setiap tata bahasa yang saya lihat memiliki konteks
CodyBugstein
Bukankah sudah jelas dari definisi?
Raphael
2
Ironisnya, sedikit konteks penting hilang dari definisi itu , jadi saya hanya menambahkan kalimat untuk menjelaskannya.
reinierpost
2
Contoh: Dalam C ++ 11, overridebisa berupa nama variabel atau kata kunci, tergantung di mana ia digunakan (yaitu, konteksnya). Jika digunakan setelah deklarasi metode, itu adalah kata kunci. Kalau tidak, tidak. Ini adalah contoh tata bahasa yang sensitif konteks.
Thomas Eding

Jawaban:

37

Anda benar, selalu ada konteks dalam arti tertentu. Saya tidak berpikir Anda dapat memahami apa arti "konteks" dalam "bebas konteks" tanpa memahami suatu produksi.

Produksi adalah aturan substitusi. Dikatakan bahwa, untuk menghasilkan string dalam bahasa, Anda dapat mengganti apa yang ada di kiri dengan apa yang ada di kanan:

A -> xy

Ini berarti bahwa urutan abstrak A dapat digantikan oleh karakter "x" diikuti oleh karakter "y". Anda juga dapat memiliki produksi yang lebih kompleks:

zA -> xy

Ini berarti bahwa karakter "z" diikuti oleh urutan abstrak A dapat digantikan oleh karakter "x" dan "y".

Produksi bebas konteks hanya berarti bahwa hanya ada satu hal di sisi kiri. Contoh pertama adalah bebas konteks, karena A dapat diganti dengan "x" dan "y" tidak peduli apa yang terjadi sebelum atau sesudahnya. Namun, dalam contoh kedua, karakter "z" harus muncul sebelum A, dan kemudian kombinasi dapat diganti dengan "x" dan "y", sehingga ada beberapa konteks yang terlibat.

Tata bahasa bebas konteks kemudian hanya tata bahasa dengan hanya produksi bebas konteks.

Contoh kedua sebenarnya adalah contoh dari produksi yang tidak dibatasi. Ada kategori lain yang antara bebas konteks dan tidak dibatasi yang disebut "konteks-sensitif". Contoh produksi peka konteks adalah:

zA -> zxy

Perbedaannya adalah bahwa apa yang muncul sebelum A (dan setelah) di sisi kiri harus dipertahankan di sebelah kanan. Ini secara efektif berarti bahwa hanya A yang diganti, tetapi hanya dapat diganti dalam konteks yang tepat.

Vaughn Cato
sumber
2
Terima kasih itu sangat membantu! Saya belum pernah benar-benar melihat contoh tata bahasa dengan lebih dari satu variabel di sisi kiri seperti yang Anda tunjukkan. Saya rasa itu sebabnya saya tidak bisa melihat apa "konteksnya". Terima kasih
CodyBugstein
4
Mungkin contoh kontekstual yang lebih sederhana adalah zA -> zxy: A masih digantikan oleh xy, tetapi hanya setelah z.
MSalters
Secara lebih rinci, jawaban ini berbicara tentang tata bahasa yang tidak dibatasi , sedangkan @MSalters menunjukkan bahwa tata bahasa sensitif konteks akan membuat contoh yang lebih baik dari makna konteks.
@MSalters: Anda punya poin bagus. Saya mengubah jawaban saya. Saya kesulitan menemukan cara untuk menambahkan rincian itu ke deskripsi saya tanpa kedengarannya lebih rumit, jadi apa yang saya lakukan akhirnya hanya menambahkan lebih banyak detail di bagian akhir.
Vaughn Cato
9

Aβ
αAδ
iLoveCamelCase
sumber
Apa itu beta? Apakah itu terminal atau variabel? Dan bisakah Anda menjelaskan "bentuk perasaan"? Apakah itu berarti tidak dapat diturunkan lebih lanjut?
CodyBugstein
Beta bisa berupa apa saja, hanya A-> beta yang merupakan aturan. Bentuk sentensial berarti bahwa mengingat simbol awal Anda menggunakan aturan tata bahasa, kami mengubahnya menjadi hasil. Hasil ini disebut bentuk sentensial. Setelah setiap menggunakan setiap aturan, kami mendapatkan formulir sentensial baru.
iLoveCamelCase
3
@Imray Anda perlu melihat definisi formal untuk tata bahasa dan tata bahasa bebas konteks. Tidak ada jalan pintas untuk memahami objek formal .
Raphael
1
@Imray Bentuk sentensial adalah rangkaian simbol terminal dan non-terminal yang berasal dari aksioma (juga disebut simbol awal ) dengan penerapan aturan tata bahasa (juga disebut produksi ). Bentuk sentensial dapat diturunkan ke yang lain dengan menerapkan aturan ke salah satu simbol non-terminalnya. Ketika tidak ada terminal yang tersisa, bentuk sentensial adalah sebuah kalimat , yaitu string atau kata dalam bahasa yang didefinisikan atau dihasilkan oleh tata bahasa. Terminologi berasal dari ahli bahasa yang pada satu waktu kontributor utama untuk bagian teori bahasa formal ini.
babou
Saya pikir bentuk sentensial tidak dapat memiliki variabel di dalamnya - itu perlu hanya terminal.
CodyBugstein