ลักษณะทั่วไปของวิธีการ Brzozowski ของอนุพันธ์ของการแสดงออกปกติเพื่อไวยากรณ์?


18

วิธีการอนุพันธ์ของ Brzozowski เป็นเทคนิคที่น่าสนใจมากสำหรับการสร้างออโตมาต้าแบบกำหนดขึ้นจากการแสดงออกปกติด้วยวิธีพีชคณิตอย่างดี ฉันได้ทำการสรุปภาพรวมที่น่ารักของเทคนิคนี้เพื่อจัดการกับแกรมม่าขนาดใหญ่บางคลาส แต่อัลกอริทึมนั้นตรงไปตรงมามากพอที่จะเป็นไปได้ที่พวกเขาจะค้นพบมาก่อน แต่การอ้างอิงของ Google กับลูกหลานของเทคนิคนี้ดูเหมือนจะไม่เกิดขึ้นมากนัก ใครรู้อะไรบ้าง


2
ฉันค่อนข้างสงสัยว่าคุณกำลังนึกถึงคลาสประเภทใดของไวยากรณ์ เกี่ยวกับลูกหลานเทคนิคของ Antimirov ซึ่งผลิตออโตมาเนเทอร์เซ็ตแทนเป็นสิ่งที่ดีมาก: อนุพันธ์ย่อยของการแสดงออกปกติและการสร้างออโตเมติกจำกัด , TCS 155 (2), 1996, ( dx.doi.org/10.1016/0304-3975(95 ) 00182-4 )
Sylvain

คุณหมายถึงภาพรวมของภาษาที่ซับซ้อนมากขึ้นเช่น <context-free <context-sensitive <... หรือไม่?
s8soj3o289

ฉันเคยดูระบบย่อยของ CFG อย่างคร่าว ๆ ในละแวก VPL ส่วนใหญ่
Neel Krishnaswami

... แต่กลุ่มอนุพันธ์ไม่ได้ จำกัด และแน่นอนถ้าคุณต้องการบางสิ่งบางอย่างที่กำหนดเช่นเดียวกับวิธีการของ Brzozowski คุณอาจถูก จำกัด DCFLs (ดังนั้นฉันคิดว่ามันสมเหตุสมผลสำหรับ VPL)
Sylvain

คำตอบ:


7

ในTotal Parser Combinators (ICFP 2010) ฉันใช้อนุพันธ์ Brzozowski เพื่อสร้างความเป็นสมาชิกภาษาที่สามารถตัดสินใจได้สำหรับชั้นไวยากรณ์ที่ไม่สิ้นสุด


12

คุณอาจสนใจในเอกสารนี้:

Yacc ตายโดย Matthew Might และ David Darais, 2010

เรานำเสนอสองแนวทางใหม่ในการแยกวิเคราะห์ภาษาที่ไม่มีบริบท วิธีแรกนั้นขึ้นอยู่กับการขยายของอนุพันธ์ของ Brzozowski จากการแสดงออกปกติไปยังไวยากรณ์ที่ไม่มีบริบท วิธีที่สองจะขึ้นอยู่กับลักษณะทั่วไปของอนุพันธ์เพื่อ combinators parser การจ่ายเงินของเทคนิคเหล่านี้มีขนาดเล็ก (น้อยกว่า 250 บรรทัดของโค้ด) ห้องสมุดการแยกวิเคราะห์ที่ใช้งานง่ายที่สามารถแยกวิเคราะห์ไวยากรณ์บริบทที่ไม่มีกฎเกณฑ์ในป่าแยกวิเคราะห์ขี้เกียจ มีการใช้งานทั้ง Scala และ Haskell การทดลองเบื้องต้นกับ S-Expressions จะแยกวิเคราะห์โทเค็นนับล้านต่อวินาทีซึ่งแสดงว่าเทคนิคนี้มีประสิทธิภาพเพียงพอสำหรับการใช้งานจริง

ด้วยความสนใจที่อาจเกิดขึ้น:


ชื่อกระดาษตลกมาก! :-)
Dai Le

7

ย้อนกลับไปในช่วงกลางยุค 80 ในขณะที่ฉันทำงานกับตัวแยกวิเคราะห์แบบย้อนกลับและการแยกตัวประกอบของไวยากรณ์ฉันเริ่มต้นด้วยการนิยามอนุพันธ์บางส่วนของไวยากรณ์

มีทฤษฎีที่ดีมากมาย

คุณมีคำถามเฉพาะหรือไม่?


ตอนนี้ฉันแค่ตกปลาสำหรับงานที่เกี่ยวข้อง เนื่องจากฉันคิดว่าตัวแยกวิเคราะห์แบบสืบเชื้อสายส่วนใหญ่ดังนั้นฉันจะหาแอปพลิเคชันสำหรับการแยกวิเคราะห์สไตล์ LR อย่างที่คุณแนะนำโดยเฉพาะอย่างยิ่งที่น่าสนใจ คุณช่วยชี้ฉันที่เอกสารใด ๆ ของคุณ?
Neel Krishnaswami
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.