我从未写过DSL,但我将其视为新项目的功能(假设的)。最终用户将能够使用自然语言表达,例如10到11之间的工作日,每月的第一个星期一除外。
[荷兰用户可以写[[weekdagen tussen 10 en 11 behalve op de eerste maandag van de maand]。在这种情况下,单词的位置似乎匹配,但是在某些语言中,动词/名词等的位置可能会有所不同。
我意识到明显的答案(取决于
)。我是.NET开发人员,我考虑使用Boo,但我愿意接受建议。我需要了解每个翻译是否都需要重写实现的一部分(哪一部分),或者是否有可能进行某种形式的实际翻译,也许是在某种预处理器中进行。如果要编写DSL,则需要首先提出生产规则(您编写的
can内容),然后将其加工成用英语/荷兰语/火星人/等表达的方式。
例如:时间表:=包含帧[Exception]将是:
这些在我的头顶上,甚至还不靠近,但应该足以开始使用。
https://github.com/openvalidation/openvalidation
这是验证规则的自然语言(当前为英文或德文)dsl / compiler。