คำถามติดแท็ก parser-combinator

4
เมื่อใดจึงจะใช้ Parser Combinator เมื่อใดจึงจะใช้ตัวแยกวิเคราะห์
ฉันได้ดำน้ำลึกเข้าไปในโลกของ parsers เมื่อเร็ว ๆ นี้ต้องการที่จะสร้างภาษาการเขียนโปรแกรมของตัวเอง อย่างไรก็ตามฉันพบว่ามีวิธีการเขียนตัวแยกวิเคราะห์ที่แตกต่างกันสองวิธี: Parser Generators และ Parser Combinators น่าสนใจฉันไม่สามารถค้นหาทรัพยากรใด ๆ ที่อธิบายในกรณีที่วิธีใดดีกว่า แต่ทรัพยากรจำนวนมาก (และคน) ผมสอบถามเกี่ยวกับเรื่องไม่ทราบว่าของวิธีการอื่น ๆ เพียง แต่อธิบายของพวกเขาวิธีการเป็นวิธีการและไม่ได้กล่าวถึงอื่น ๆ ที่ทั้งหมด: หนังสือมังกรที่มีชื่อเสียงจะเข้าสู่ lexing / สแกนและกล่าวถึง (ฉ) lex แต่ไม่ได้พูดถึงตัวแยกวิเคราะห์ combinators ที่ทั้งหมด รูปแบบการติดตั้งภาษานั้นขึ้นอยู่กับ ANTLR Parser Generator ที่สร้างขึ้นใน Java และไม่ได้กล่าวถึง Parser Combinators เลย บทแนะนำการใช้ Parsecใน Parsec ซึ่งเป็น Parser Combinator ใน Haskell ไม่ได้กล่าวถึง …

5
การแยกวิเคราะห์และการแยก lexing ผ่านการฝึกฝนที่ดีกับตัวแยกวิเคราะห์ parser หรือไม่?
เมื่อฉันเริ่มใช้ตัวแยกวิเคราะห์ parser ปฏิกิริยาแรกของฉันคือความรู้สึกของการปลดปล่อยจากสิ่งที่รู้สึกเหมือนความแตกต่างเทียมระหว่างการแยกและ lexing ทันใดนั้นทุกอย่างก็แค่การแยกวิเคราะห์! อย่างไรก็ตามฉันเพิ่งเจอโพสต์นี้ใน codereview.stackexchange แสดงให้เห็นว่ามีคนเรียกคืนความแตกต่างนี้ ตอนแรกฉันคิดว่านี่เป็นสิ่งที่โง่มาก ๆ แต่แล้วความจริงที่ว่ามีฟังก์ชั่นใน Parsec เพื่อสนับสนุนพฤติกรรมนี้ทำให้ฉันตั้งคำถามกับตัวเอง อะไรคือข้อดี / ข้อเสียของการแยกวิเคราะห์กระแสข้อมูลที่มีอยู่แล้วในตัวแยกวิเคราะห์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.