问题标签 [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.
.net - 什么更适合 DSL:TCL 还是 Lisp?
什么更适合 DSL:TCL 还是 Lisp?你对 Java(C#)-TCL 绑定与 Lisp(Scheme) 有什么看法?什么 DSL 工具适用于 .Net 开发?(Microsoft DSL 工具除外)
python - 在 python 中为 DSL 编写编译器
我正在用 python 编写游戏,并决定为地图数据文件创建一个 DSL。我知道我可以用正则表达式编写自己的解析器,但我想知道是否有现有的 python 工具可以更容易地做到这一点,比如 PHP 引擎中使用的 re2c。
一些额外的信息:
- 是的,我确实需要 DSL,即使我不需要,我仍然想要在项目中构建和使用 DSL。
DSL 只包含数据(声明性的?),它不会被“执行”。大多数行看起来像:
SOMETHING: !abc @123 #xyz/123
我只需要读取数据树。
visual-studio - DSL 工具:如何将 DLL 创建为弱命名
我有一个 DSL 工具解决方案。
我需要为此项目添加一个弱名称引用。因为 DSL Tools 项目 DLL 是强命名的,所以我不能使用弱命名的 DLL。
我无法使 DLL 具有强名称,因为我无法重新编译它。
我试图通过转到 Dsl 和 DslPackage 项目属性来使我的 DSL 工具项目 DLL 弱命名,并取消选中 Sigining 选项卡中的“签署程序集”选项。
然后我编译它。错误列表给出以下错误
查看 VS2005 输出窗口,我看到 gacutil 正在被调用
之后,我使用了命令提示符,gacutil.exe 错误显示如下:
我不知道为什么以及如何调用 gacutil.exe。我查看了项目和解决方案属性,没有配置为调用 gacutil.exe 的选项。我什至查看了“gacutil.exe”的每个文件,但我什么也没找到。
我真正想要的是能够使用我无法进行强命名的弱命名 DLL。因此,我一直试图让我的 DSL 工具 DLL 命名为弱名称,但我做不到。
关于我如何解决这个问题的任何帮助?
非常感谢, Luís Filipe
perl - 我可以用 Perl 编写 DSL 吗?
我们使用 Perl 进行 GUI 测试自动化。它非常成功。我们为 GUI 测试编写了一种非常轻量级的 DSL 语言。DSL 与对象模型非常相似。
例如,我们在根目录中有一个 Application 对象。应用程序中的每个属性表都是一个 View 对象。页面下的每个页面都称为 Page 对象本身。我们从 Perl 向 GUI 应用程序发送命令,GUI 解释命令并很好地响应命令。要发送命令,我们执行以下操作:
这不是很可读。相反,我想为 App、View 和 Page 编写 Perl DSL。Perl 是否提供某种 DSL 结构,我可以在其中执行以下操作?
其中 App 应为 Application 类的实例。我必须在运行时获取 View2 的对象。
这样的东西怎么用?
c++ - C/C++ 中的领域特定语言,这是 Kosher 吗?
当我想出这个“奇怪”的解决方案时,我只是在为 C/C++ 中的一个新项目设计一些特定领域的语言设计:
好的部分是这在标准上是正确的(但 Duff Switch 也是如此),并且是跨平台的,可移植的等......但是这种方法实际上并不比将字符串写入代码更好,但是由于 DSL 引擎解析无论如何,字符串,这样看起来更漂亮,并减少了混乱。但想知道其他人对此有何看法。
谢谢
python - 带空格的 Python 方法参数
我想创建一个简单的文件格式/DSL,它允许我的用户输入数据。我的系统在 python 中,使用 python 的解析器很有吸引力。像这样定义数据元素的语法似乎很方便。
但是,它不支持带空格的参数名称。
Python 解析器友好版本可以如下所示,但不是非常用户友好。
有没有办法让这在 python 中更具可读性?
.net - Microsoft Visual Studio SDK DSL 工具 - 有认真的人吗?
我们正在考虑使用 Microsoft DSL 工具包来创建一些抽象设计器。我已经做了一些 POC,但想得到一些关于相同的意见。
有人在这里分享他们使用 Microsoft DSL Toolkit 和 T4 的经验吗?此外,任何指向开源 DSL 项目的指针都会有所帮助——例如。Microsoft 服务工厂建模版严重依赖 DSL 工具包。
由于 OSLO/Quadrant 需要一些时间才能发布,我认为我们唯一的选择是依靠 Microsoft DSL 设计器。(参见 Kieth 的博客)
另外,这里有一些我已经掌握的关于 DSL 的信息:
inversion-of-control - SFig 语言语法是否高效且清晰(并且比 Spring-Framework 的 XML DSL 更好)?
附录编辑:
由于没有经验丰富的 Spring Framework 开发人员的任何反馈,因此尚未接受对此的回答。
我一直在研究用于 Spring-Framework applicationContext.xml 文件的替代 DSL(其中描述了 bean 初始化和依赖关系以加载到 Spring bean 工厂中)。
我的动机是我完全不喜欢 Spring 为此目的使用 XML,也不喜欢迄今为止设计的任何替代方案。出于各种我不会深入讨论的原因,我想继续使用声明性语言,而不是像 Groovy 这样的命令式脚本语言。
所以我抓住了 ANTLR 解析器工具,并一直在设计一个新的 bean factory DSL,我称之为 SFig。这是一个有关此内容的链接:
SFig™ - Spring-Framework 的替代元数据配置语言
这是源代码存储库站点:
http://code.google.com/p/sfig/
我很想知道到目前为止我在语言语法上的表现如何。您认为 SFig 既高效又清晰易懂?(我现在特别关心多行文本字符串):
cryptography - 有人计划使用 Galois 的 Cryptol 吗?
我在 Dobb 博士 2008 年 12 月 29 日的电子邮件报告中看到,有一种用于设计加密系统的新 DSL(特定领域语言)。它被称为Cryptol,可从 Galois 获得。
有人看过吗?有人有使用它的计划吗?值得吗,你觉得呢?
罗伯特·甘布尔指出:
Cryptol 并不新鲜,它已经存在很多年了。新的是它(部分)对公众的可用性,它最初是为 NSA 开发和使用的。
就像布赖恩一样,我没有任何真正的理由使用 Cryptol。如果我需要(重新)验证我们拥有的基于 SSL 的实现,它可能会很有用,尽管我不确定它是否会有所帮助(我们不需要验证 SSL 库;我们可能需要验证我们的(错误)使用 SSL 库)。
domain-driven-design - Antlr 是 DSL 生成器还是有意编程的替代品?
Charles Simonyi 首先是在微软,然后是在他自己的公司,努力建立意向编程领域的雄心和创造力让我印象深刻。
http://en.wikipedia.org/wiki/Intentional_programming
在这种软件方法中,程序员首先构建一个特定于给定问题域(例如人寿保险)的工具箱。领域专家在程序员的帮助下,然后以所见即所得 (WYSIWYG) 的方式描述程序的预期行为。自动化系统使用程序描述和工具箱来生成最终程序。后续更改仅在 WYSIWYG 级别进行。
它似乎是一种非常有用且实用的编程方法,可能会规避当前软件开发方法的许多问题。
从本质上讲,它似乎有助于非程序员(业务/系统分析师)创建特定领域的语言,但在一个比 UML 所能提供的更接近实际实现的阶段。他说它最终会完成,但它还没有(大约 15 年后)。
DSL 涵盖了从简单的 5 行规则引擎到 Ruby on Rails 等复杂应用程序的所有领域。所以我认为延迟发布他的产品与他正在处理简化更高级别的抽象这一事实有关,因为他必须基本上允许同时封装所有领域语言。
所以,我的问题是
(a) Antlr是否可以替代意向编程——尽管可能是一个不太用户友好的替代方案,需要程序员的干预而不是允许业务分析师生成 DSL? 您可以使用 Antlr 生成像 Ruby on Rails 这样的 DSL(假设它支持 Ruby 作为输出 - 我认为它不支持)?它不能做什么?另外,我不明白为什么它被称为“语言解析器”而不是“语言生成器”——因为后者描述了它的用途,而前者描述了它如何实现最终结果。
和
(b) 如果 Antlr 和 Intentional Programming 不同,有没有类似 Intentional Programming 的东西?