มีข้อความอะไรที่ดีเกี่ยวกับภาษาที่ไม่มีบริบทและภาษาที่กดลงได้อย่างชัดเจน?


10

ภาษาที่ไม่มีบริบทกำหนด (DCFL) และภาษาที่ขยายลงอย่างเห็นได้ชัด (VPL) เป็นทั้งชุดภาษาทางการระหว่างภาษาที่ไม่มีบริบท (CFL) และภาษาปกติ (REG) มีสัญลักษณ์ที่อ่านได้ซึ่งสามารถแสดงใน ASCII ธรรมดาเช่น Backus-Naur-Form สำหรับ CFL และนิพจน์ทั่วไปสำหรับ REG หรือไม่


1
อาจเป็นประโยชน์ในการอธิบายความหมายของ“ ดี” ในชื่อของคำถาม เกิดอะไรขึ้นกับการใช้ BNF เพื่ออธิบาย DCFL
Tsuyoshi Ito

1
โดยดีฉันหมายความว่ามันควรจะง่ายต่อการอ่านและเขียนสำหรับมนุษย์ดังนั้นมันควรเป็นไปตาม ASCII BNF ดีมาก - นิพจน์ทั่วไปเป็นชุดย่อยของ BNF ขนาดกะทัดรัด แต่ BNF ชุดย่อยใดที่นิยาม DCFL และ VPL ตัวใดเป็นตัวกำหนด?
Jakob

คำตอบ:


5

q,z,aq,γq,qQzγaสัญลักษณ์อินพุตหรือสตริงว่าง สัญกรณ์เองไม่ได้บังคับระดับ แต่มันจะตรวจสอบได้ง่าย การใช้รูปแบบไวยากรณ์แบบไม่มีบริบท (เป็น BNF) คุณจะพบกับปัญหาเนื่องจาก DCFL เป็นคลาสย่อยที่เหมาะสมของ CFLs และตามที่ระบุไว้โดย DaniCL คุณไม่สามารถตัดสินใจโดยทั่วไปในการกำหนด CFG ว่าภาษานั้นเป็นภาษาที่กำหนดหรือไม่

AaαbAabα

ab


ขอบคุณ! เกี่ยวกับ DCFL ฉันคิดว่านี่เป็นทิศทางที่ถูกต้อง ไวยากรณ์ที่เป็นรูปธรรมจะมีตัวย่อที่มีประโยชน์สำหรับชุดย่อยที่แยกวิเคราะห์โดยนิพจน์ทั่วไป เกี่ยวกับ VPLs ฉันยังไม่แน่ใจเพราะ VLP ได้รับอนุญาตให้มีสายห้อยและสัญลักษณ์คืนในทางตรงกันข้ามกับโมเดลต้นไม้เช่น XML คุณสามารถเปรียบเทียบกับลำดับย่อยเหตุการณ์ของ SAX ได้ดีขึ้นจากทรี XML ที่กำหนดเอง ฉันสงสัยว่า RelaxNG สามารถอธิบายสิ่งนี้ได้
Jakob

คำพูดที่ใช้ ... เป็นอุปสรรค อยู่ข้างจุดนั้น - มันไม่ได้พูดอะไรเลยว่ามี subclass ของ CFG ที่อธิบาย DCFLs ทั้งหมดอย่างชัดเจนและไม่มีอะไรอื่น เช่นไวยากรณ์ LR (k)
reinierpost

@ เส้นทาง: จริง แต่ (ในการป้องกันของฉัน) ฉันจะไม่พิจารณา LR (1) ไวยากรณ์เพื่อให้สัญกรณ์ประโยคเพราะต้องตรวจสอบสภาพ LR (1)
Sylvain

3

ในการค้นหาการแทนแบบบัญญัติให้พิจารณาดังต่อไปนี้คลาสของ DCFL เทียบเท่ากับคลาสของภาษาที่สร้างขึ้นโดยไวยากรณ์ LR (k) ซึ่งอีกครั้งเทียบเท่ากับ LR (1) ซึ่งหมายความว่าคุณสามารถค้นหาไวยากรณ์ LR (1) สำหรับ DCFL ทุก ๆ แน่นอนว่าไวยากรณ์ของ LR (1) ยังคงเป็นไวยากรณ์ที่ไม่มีบริบท แต่ด้วยคุณสมบัติพิเศษ: จากไวยากรณ์ของ LR (1) เราสามารถสร้างตารางการแยกวิเคราะห์เพื่อเป็นแนวทางในการแยกวิเคราะห์ที่กำหนด (ด้วย lookahead ของ 1 สัญลักษณ์ดังนั้น LR (1)) ตารางแยกวิเคราะห์เหล่านี้จะเป็นตัวแทนอีกแม้ว่าจะอ่านค่อนข้างน้อย

โดยวิธีการที่ใจว่ามันเป็น undecidable ไม่ว่าจะเป็นภาษาบริบทฟรีกำหนด (ทฤษฎีบทของ Greibach)

ฉันต้องยอมรับว่าฉันไม่เคยได้ยิน VPL


การรับรองแบบบัญญัตินั้นไม่ค่อยอ่านง่าย แต่ขอบคุณสำหรับทิศทาง หากทฤษฎีบทของ Greibach ระบุว่ามีภาษาใน CFL ที่ไม่สามารถตัดสินใจได้ว่าจะอยู่ใน DCFL - คุณจะระบุภาษานี้ได้อย่างไร หากคุณมีไวยากรณ์คุณสามารถแสดงได้ใน Backus Naur Form (BNF) ดังนั้นทฤษฎีบทของ Greibach จึงดูเหมือนว่ามีนัยว่าไม่มีส่วนย่อยของ BNF ที่แสดง DCFL อย่างแน่นอนหรือไม่ เห็นได้ชัดว่าภาษาที่ขยายลงเป็นที่รู้จักกันว่า "คำซ้อน" ภาษาระดับนี้ค่อนข้างใหม่ แต่มีความเกี่ยวข้องกับการแยกวิเคราะห์ต้นไม้ที่สั่งและโครงสร้างที่คล้ายกัน
Jakob

เกี่ยวกับปัญหา undecidability: ภาษาเป็น CFL หากมีไวยากรณ์ที่ไม่มีบริบท (CFG) สร้างขึ้น หากคุณได้รับ CFG คุณสามารถตัดสินใจได้ว่าไวยากรณ์นี้เป็น LR (k) หรือไม่ (เช่นเดียวกับการกดออโตมาตา - มันง่ายต่อการตรวจสอบว่า PDA ที่กำหนดนั้นกำหนดหรือไม่) อย่างไรก็ตามสมมติว่าคุณมี CFG ที่ไม่ใช่ LR (k) - นี่ไม่ได้หมายความว่าภาษานั้นไม่ใช่ DCFL ; คุณอาจจะไม่สามารถหาไวยากรณ์ LR (k) ได้
DaniCL

"คุณสามารถตัดสินใจได้ว่าไวยากรณ์นี้เป็น LR (k)" สำหรับการแก้ไข k
Sylvain

@Jakob: ทฤษฎีบทของ Greibach ไม่ได้ระบุว่าและแม้ว่าจะเป็นเช่นนั้นก็หมายความว่าCFG ตามอำเภอใจนั้นไม่ใช่พิธีการสัญกรณ์ที่เหมาะสมสำหรับ DCFG เช่นเดียวกับที่พวกเขาไม่ใช่พิธีการสัญกรณ์ที่ดีสำหรับภาษาปกติ (ไม่ว่าจะเป็น CFG อธิบายภาษาปกติไม่สามารถตัดสินใจได้เช่นกัน) ไม่มีอะไรผิดปกติในการเลือกคลาสย่อยของ CFG (เช่นไวยากรณ์ปกติสำหรับภาษาปกติ)
reinierpost

มีประเพณีของถ้อยคำเลอะเทอะในตำราเรียนที่นี่: พวกเขามีแนวโน้มที่จะทำให้งบเช่น "มันไม่สามารถตัดสินใจได้ว่า CFL เป็นประจำ / กำหนดขึ้น" เมื่อสิ่งที่พวกเขาหมายถึงจริง ๆ ว่า "มันไม่สามารถอธิบายได้ว่า CFG ปกติ / กำหนดขึ้น ภาษา".
reinierpost
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.