ฉันขอแนะนำให้สร้าง DSL ของคุณด้วยภาษาที่มีอยู่ (DSL ภายใน) ฉันทำสิ่งนี้สองสามครั้งกับ Python สร้างระบบที่ผู้บริโภคของ DSL เขียนไฟล์หลามที่ใช้เป็นไฟล์กำหนดค่าสำหรับระบบ ไฟล์กำหนดค่าใช้โครงสร้าง (คลาส, ฟังก์ชั่น) ที่ฉันได้กำหนดไว้ โครงสร้างเหล่านี้สร้างจาก DSL
IMO ภาษาเช่น Python (IronPython หรือ Jython หากระบบโฮสต์คือ. NET หรือ Java) หรือ Ruby (IronRuby, JRuby) จะดีกว่าสำหรับการอ้างอิง DSL ของคุณบน Java หรือ C #
ในกรณีของฉันระบบโฮสต์ก็เป็น (C) Python ดังนั้นการเลือก Python สำหรับ DSL นั้นเป็นเรื่องธรรมดา
ข้อดีบางประการ:
- ลดค่าใช้จ่ายของอาคาร มีน้อยมากสำหรับคุณที่จะใช้ คุณสามารถมุ่งเน้นที่ปัญหาแทนการใช้เวลาในการใช้ parser / คอมไพเลอร์ / ล่าม
- การเข้าถึงภาษาโฮสต์: ภาษาของคุณจะสามารถเข้าถึงภาษา / แพลตฟอร์มที่มีอยู่ได้อย่างเต็มประสิทธิภาพ