Rumah >pembangunan bahagian belakang >C++ >Adakah C Benar-benar Bebas Konteks: Meneroka Percanggahan Antara Tatabahasa dan Kerumitan Penghuraian?
Menentukan Klasifikasi Hierarki Chomsky C : Menganalisis Sifat Penghuraiannya
C sering didakwa menunjukkan kepekaan konteks, tetapi menelitinya tatabahasa formal mendedahkan cerita yang berbeza. Mengikut takrifan bahasa bebas konteks, setiap peraturan tatabahasa harus mempunyai satu simbol bukan terminal di sebelah kirinya. Tatabahasa sensitif konteks, sebaliknya, membenarkan gabungan sewenang-wenangnya simbol terminal dan bukan terminal di sebelah kiri.
Jika kita mematuhi klasifikasi hierarki Chomsky, C akan dikategorikan sebagai konteks- percuma kerana pemeriksaan menyeluruh Lampiran A dalam "Bahasa Pengaturcaraan C" membentangkan peraturan tatabahasa yang hanya mengandungi simbol bukan terminal pada sebelah kiri mereka.
Walau bagaimanapun, penyiasatan lebih dekat mendedahkan bahawa proses penghuraian C itu sendiri adalah perkara yang jauh lebih rumit. Program contoh yang dibentangkan menunjukkan bahawa ketepatan sintaksis binaan C bergantung pada pengiraan primaliti integer tertentu. Ini menunjukkan tahap pengiraan yang melebihi keupayaan tatabahasa bebas konteks.
Menerokai bidang tatabahasa tidak terhad atau Type-0, yang memberikan urutan simbol tanpa batasan pada kedua-dua belah pengeluaran, membawa kita kepada klasifikasi yang mengakui kesempurnaan Turing C penghuraian.
Oleh itu, untuk menangkap sepenuhnya kerumitan penghuraian C, adalah perlu untuk mengkategorikannya sebagai bahasa yang melampaui batasan tatabahasa bebas konteks dan sensitif konteks. Ia menduduki klasifikasi yang memerlukan tatabahasa tidak terhad atau Type-0, menggariskan kedalaman dan sifat pelbagai rupa proses penghuraiannya.
Atas ialah kandungan terperinci Adakah C Benar-benar Bebas Konteks: Meneroka Percanggahan Antara Tatabahasa dan Kerumitan Penghuraian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!