我从来没有写过一DSL,但我是考虑到它作为一个特征一个新的项目,(假定的).这将是为最终用户能够表达在自然语言的概念,例如 工作日之间的10和11,除了上个月的第一个星期一.

荷兰的用户可能会写 weekdagen图森10en11behalve op de eerste maandag van de maand.在这种情况下的位置的词语似乎相匹配,但也有可能是表达所在位置的词/名词等。可能是不同的语言。

我知道的明显的答案(这取决于).我一个.NET开发和考虑使用嘘但我开放的建议。我需要了解是否每个翻译需要重写一部分的执行情况(其一部分),或者如果有一个办法做到实际的翻译,也许在某种形式的预处理器。

有帮助吗?

解决方案

你不会找到一个翻译,是能够做到这一超过几个语言(说之间的一种或两种语言和英语),特别是考虑到其本身的英语能有至少3种方式编写。

如果你想要写一DSL,你需要的生产规则的第(什么 可以 你写的),然后它的工作进入一种方式来表达它英语/荷兰语/火星。

例如:时间表:=框架包含[例外]

这将是:

  • 框架:一个月、一年、每周工作日,周末,日本月的假期,等等
  • 包容性:之间,不在周围,包含,等等
  • 例外:除了[计划],但不[计划],除非[计划]

然后你可以担心的语法分析程序/分析器而纠正特定的语法和把它放到这种形式的作品。

这些都是关闭我的头顶和甚至没有接近,但应该足以开始。

其他提示

域特定语言工具创建的DSL 可以进行本地化。他们将所有的字符串转换为.resx文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top