问题标签 [dsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
1479 浏览

t4 - 领域特定语言资源

我只是在听一些较老的 .Net Rocks!剧集,我发现 DSL 上的 #329很有趣。我的问题是我无法为尝试学习这项技术的人们找到任何好的在线资源。我了解了创建新设计师的基础知识,但是缺少有关 DSL 工具使用的 T4 引擎的 MS 文档,以及如何将模板与 DSL 模型集成。

有谁知道 MS DSL 工具的一些好的介绍性资源?

0 投票
5 回答
5272 浏览

dsl - 金融领域的 DSL(领域特定语言)

有没有人在金融领域使用过DSL(领域特定语言) ?我计划在我正在开发的应用程序中引入某种 DSL 支持,并希望分享一些想法。

我正处于确定哪些是最稳定的领域元素并选择可以通过 DSL 更好地实现的功能的阶段。我还没有定义第一个特性的语法。

0 投票
7 回答
4996 浏览

theory - 什么是 DSL,我应该在哪里使用它?

我听到越来越多的关于领域特定语言被抛出以及它们如何改变你处理业务逻辑的方式,我也看过Ayende 的博客文章和东西,但我从来没有真正明白我为什么要接受我的业务远离我在提供程序中使用的方法和情况的逻辑。

如果你有一些使用这些东西的背景,你可以用真正的外行术语来表达:

  • 构建 DSL 究竟意味着什么?
  • 您使用什么语言?
  • 在哪里使用 DSL 有意义?
  • 使用 DSL 有什么好处?
0 投票
5 回答
1034 浏览

user-interface - 设计规则系统的良好参考/提示?

我经常需要实现某种用户可编辑的规则系统——需求通常不同,以至于同一个系统不能直接适用,所以我经常遇到同样的问题——我如何设计一个规则系统那

  1. 是可维护的
  2. 恰当地平衡表现力和易用性
  3. 很容易扩展(如果/当我得到(2)错误时)。

我认为规则系统/DSL 非常有价值,但我对自己正确设计它们的能力感到不舒服。

您必须提供哪些参考/提示可以帮助简化此操作?
由于我遇到的问题的性质,现有语言通常不适用。(例如,您不需要普通计算机用户学习 python 来编写电子邮件过滤器。)类似地,规则语言,如JESS,只是部分解决方案,因为需要构建一些(更简单的)用户界面- 规则语言的顶部,以便非程序员可以使用它。该界面总是涉及删除某些功能,或者使这些功能更难使用,并且该过程会带来与上述相同的问题。

编辑:澄清一下,问题是关于设计规则引擎,我不是在寻找预先构建的规则引擎。如果您建议使用规则引擎,请解释它如何解决有关做出良好设计决策的问题。

0 投票
1 回答
366 浏览

dsl - 如何在 Visual Studio DSL(域特定语言)工具中为装饰器添加显示名称?

在我的 DSL 项目中,我有一个带有许多装饰器的形状,这些装饰器链接到我的域类上的属性。但即使 ieach 装饰器具有 DisplayName 属性(设置为有意义的值),它也不会出现在生成的 DSL 项目中。(我没有忘记使用重新生成 t4 文件。)

我是否必须为每个仅将显示名称作为我希望显示的值的属性创建另一个装饰器,或者是否有其他一些我现在无法弄清楚的方法?

0 投票
1 回答
624 浏览

visual-studio - 如何在 DSL T4 模板中引用图表?

谷歌没有来这里拯救我,我只知道这是一个完美的地方。

我正在为 DSL 编写自定义 DirectiveProcessor,我希望能够从我的 T4 模板中访问图表。

在我的 DirectiveProcessor 中,我已经使用(等待它...)LoadModelAndDiagram(...) 加载了域模型和我的图表。

因此,现在图表已加载到 Store 中的默认分区中,但我终生无法弄清楚以后如何解析对它的引用。

有人可以指导吗?

0 投票
7 回答
1733 浏览

compiler-construction - 构建有效的外部 DSL

我有什么工具可以构建一个真实的、诚实的外部 DSL。不,我不是在谈论滥用 Ruby、Boo、XML 或其他现有语言或语法,我的意思是一种真正的外部 DSL——我自己的语言用于我自己的目的。

我知道有一些语言工作台正在开发中,而且我听说过诸如 .NET 的“讽刺”之类的东西。当然,还有 ANTLR、Lex/Yaac 等,但恐怕这些对于我想要做的事情来说太复杂了。

请谈谈您可能使用或听说过的 DSL 构建器工具,以及您对它的帮助和缺点的印象。

0 投票
2 回答
790 浏览

visual-studio - DSL图中未显示的隔间项目

好的,自从我几天前提出这个问题以来,我的 DSL 取得了显着进展。

一旦我重构了我的代码,我就会发布我自己的答案,但是现在,我遇到了另一个问题。

我从 DSL 创建的模型动态生成子图,将这些图保存为图像,然后生成嵌入这些图像的 Word 文档。到现在为止还挺好。

但是在我的形状有隔间的地方(例如,服务合同上的操作 - 你能猜到它是什么吗?),隔间标题会显示,但没有任何项目

如果我检查我的形状对象,它有一个嵌套的子对象 - 一个 ElementListCompartment ,它又具有许多我期望显示的项目。ElementListCompartment.IsExpanded 属性设置为 true(并且隔间标题上有一个小“折叠”图标)但是我的物品在哪里,哦,在哪里?

形状被添加到图表中使用

那么,谁能引导我走上我的快乐之路?

0 投票
2 回答
1673 浏览

types - 在特定于域的语言的自定义编辑器中实现类似 IntelliSense 的行为

我正在使用类似模板的编辑器创建 DSL,就像Alice中的规则系统一样。用户将能够从列表中选择关系以及应用关系的对象。这两个列表应该根据可接受的类型进行过滤——例如,如果关系“大于”,那么可用对象必须是实现“大于”的类型。

类似地,如果选择的对象与大于不可比较,则该关系不应出现在潜在关系列表中。我认为这个问题的核心是类型检查器,但我不确定将这种类型的逻辑合并到我的应用程序中的最佳方式。有人知道现有的 DSL 类型检查库吗?

我对开源和跨平台技术特别感兴趣。Java 可能是我们最终会使用的语言,但这不是固定的。

0 投票
9 回答
2757 浏览

python - 编写用于从表中选择行的领域特定语言

我正在编写一个我希望由许多不同的人运行的服务器,而不是我将直接接触的所有人。服务器将在集群中相互通信。服务器的部分功能涉及从可能非常大的表中选择一小部分行。选择哪些行的确切选择需要一些调整,重要的是运行集群的人(例如,我自己)可以更新选择标准,而无需让每个服务器管理员都部署新版本的服务器.

简单地用 Python 编写函数并不是一个真正的选择,因为没有人会想要安装一个在运行时下载和执行任意 Python 代码的服务器。

我需要的是关于实现领域特定语言以实现这一目标的最简单方法的建议。该语言需要能够进行简单的表达式评估,以及查询表索引和遍历返回的行。易于编写和阅读该语言是次要的,易于实现它。我也不想写一个完整的查询优化器,所以明确指定要查询的索引是理想的。

必须针对此进行编译的接口在功能上与 App Engine 数据存储区导出的功能相似:您可以查询表上任何索引的顺序范围(例如,小于、大于、范围和相等查询) ,然后通过任何布尔表达式过滤返回的行。您还可以将多个独立的结果集连接在一起。

我意识到这个问题听起来很像我在问 SQL。但是,我不想要求支持此数据的数据存储是关系数据库,并且我不希望自己尝试重新实现 SQL 的开销。我还只处理一个具有已知模式的表。最后,不需要任何连接。更简单的东西会更可取。

编辑:扩展描述以消除一些误解。