Answers:
我建议您在现有语言(内部DSL)的基础上创建DSL。我用Python做过几次,创建了DSL的使用者在其中写入python文件的系统,该文件用作系统的配置文件。配置文件使用了我定义的构造(类,函数)。这些构造形成DSL。
IMO是Python(IronPython或Jython,如果主机系统是.NET或Java)或Ruby(IronRuby,JRuby)之类的语言,则比Java或C#更适合作为DSL的基础。
就我而言,主机系统也是(C)Python,因此为DSL选择Python是很自然的事情。
一些优点:
Martin Folwer在他的《域特定语言》一书中描述了内部和外部 DSL。
Internal DSL
=是现有编程语言的子集,例如Ruby / Java等。
External DSL
=您定义了语法和词汇表。
外部DSL可能更具表现力,但可能需要外部解析和代码生成。
虽然内部DSL不需要额外的处理,但是对于非编程领域的专家(例如,业务分析师,测试人员)而言,有时很难理解。
选择您的DSL类型时,分析其用户是很重要的。如果他们大多是非技术人员,那么外部DSL可能是更好的选择。对于一小组经验丰富的程序员,如果他们使用的编程语言具有足够的表达能力,则可以选择内部DSL。