ฉันได้เขียนโปรแกรมมาหลายปีแล้ว แต่สิ่งหนึ่งที่ฉันต้องใช้เวลานานมากคือการระบุไวยกรณ์สำหรับโปรแกรมแยกวิเคราะห์และแม้จะใช้ความพยายามมากเกินไปฉันก็ไม่แน่ใจว่าไวยากรณ์ที่ฉันใช้มานั้นดีมาก ( โดยการวัดที่เหมาะสมของ "ดี")
ฉันไม่คาดหวังว่าจะมีอัลกอริทึมสำหรับกระบวนการระบุไวยากรณ์โดยอัตโนมัติ แต่ฉันหวังว่าจะมีวิธีการจัดโครงสร้างปัญหาที่กำจัดการคาดเดาและการลองผิดลองถูกของวิธีการปัจจุบันของฉัน
ความคิดแรกของฉันคืออ่าน parsers และฉันทำสิ่งนี้ไปแล้ว แต่ทุกอย่างที่ฉันอ่านในเรื่องนี้ต้องใช้ไวยากรณ์ตามที่กำหนด ปัญหาของการแปลไวยากรณ์นี้เป็น parser ฉันสนใจปัญหานี้มาก่อน: วิธีการระบุไวยากรณ์ตั้งแต่แรก
ฉันสนใจหลักในปัญหาของการระบุไวยากรณ์ที่เป็นตัวแทนของตัวอย่างที่เป็นรูปธรรม (บวกและลบ) อย่างเป็นทางการ ซึ่งแตกต่างจากปัญหาของการออกแบบใหม่ไวยากรณ์ ขอบคุณ Macneil ที่ชี้ให้เห็นความแตกต่างนี้
ฉันไม่เคยซาบซึ้งถึงความแตกต่างระหว่างไวยากรณ์และไวยากรณ์ แต่ตอนนี้ฉันเริ่มเห็นแล้วฉันสามารถเพิ่มความชัดเจนในการชี้แจงครั้งแรกโดยบอกว่าฉันสนใจในปัญหาการระบุไวยากรณ์ที่จะบังคับใช้ ไวยากรณ์ที่กำหนดไว้ล่วงหน้า: มันเกิดขึ้นอย่างนั้นในกรณีของฉันพื้นฐานสำหรับไวยากรณ์นี้มักจะเป็นชุดของตัวอย่างบวกและลบ
มีการระบุไวยกรณ์สำหรับ parser อย่างไร มีหนังสือหรือเอกสารอ้างอิงนั่นคือมาตรฐาน de-facto สำหรับอธิบายวิธีปฏิบัติที่ดีที่สุดวิธีการออกแบบและข้อมูลที่เป็นประโยชน์อื่น ๆ เกี่ยวกับการระบุไวยากรณ์สำหรับโปรแกรมวิเคราะห์คำหรือไม่? เมื่ออ่านเกี่ยวกับไวยากรณ์ parser ฉันควรเน้นเรื่องใด