问题标签 [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.
exception - StructureMap 异常代码:202 未定义默认实例
当我在 SM 中注册以下内容然后尝试创建一个实例时,我得到了异常 - 'StructureMap 异常代码:202 没有为 PluginFamily 定义默认实例......'
当我尝试获取 IRepository 的实例时发生异常。
有谁知道我错过了什么?
干杯
奥利
visual-studio - 如何修复 DSL 工具上模糊的图标装饰器?
我遇到了这个问题,经过广泛的研究,我发现了它的根本原因和一种对其他人有用的解决方法。
图标装饰器变得“模糊”,因为它在形状上的定位以及从像素到英寸的转换。
通常域特定语言的绘图表面具有 96dpi 的分辨率,并且图标装饰器使用 0.06 英寸的偏移量定位。将其转换为像素,它在绘图表面中变为 5.76 像素的偏移量。由于无法在屏幕上绘制“半像素”,GDI+ 会调整图像以尝试模拟“半像素”定位。这就是图像变得模糊的原因。
作为解决方法,我的建议是使用 Icon 装饰器类的 Horizontal Offset 和 Vertical Offset 属性来修复“半像素”装饰器的位置。如果您使用“0.0025”英寸作为垂直和水平偏移量,当图像定位从英寸转换为像素时,它将变为 6 像素,而不是 5.76。发生这种情况是因为现在的偏移量是默认值 0.06 英寸加上您设置的偏移量 0.0025 = 0.0625。
我还发现使用具有透明度的 png 图像会导致图像模糊,即使使用我在此处建议的偏移解决方法也是如此。将图像转换为位图格式可以解决问题。
如果有人对解决问题也有任何建议,请添加您的解决方案或解决方法。
properties - 属性扩展语言 (DSL) - 是否存在?
这是我的问题:我们有 N 个应用程序在 M 个不同的环境(qa/prod/etc.)中运行,每个环境有 P 个服务器。相乘,独特配置的数量达到数百个。这些应用程序中的每一个都有一组特定于环境的属性(公共主机名、侦听端口、最大内存等)。
相乘,有数千个属性需要设置。但是,定义属性应该是什么的实际规则要简单得多。例如,在每个物理服务器有两个应用实例的生产环境中,一个应用绑定到端口 8080,另一个绑定到 8081。
这就是我想要的:一种语言 (DSL),我可以使用它指定规定属性设置应该是什么的规则。我想避免重复自己。语言应该是声明性的。我们非常以 Java 为中心,但我需要做的就是生成名称/值对,所以我不想限制自己。
这样的事情存在吗?我什么也没找到。
我想我可以使用 Drools 或其他规则引擎,但这对于这个目的来说非常繁重。属性文件是最小的公分母。我们可以将它们放入 war/ear 文件中,在构建过程中使用它们进行基于模板的替换,等等。当然有更优雅的方法来解决这种性质的问题,但我们有点坚持我们的架构,至少在短期。
python - Haskell 相当于 Python 的“构造”
Construct是用 Python 实现的 DSL,用于描述数据结构(二进制和文本)。一旦你有了描述的数据结构,construct 就可以为你解析和构建它。哪个好(“DRY”、“Declarative”、“Denotational-Semantics”...)
使用示例:
我需要这样的 Haskell 工具,我想知道这样的东西是否存在。
我知道:
- Data.Binary:用户分别实现解析和构建
- Parsec:仅用于解析?只为文字?
我想必须使用 Template Haskell 来实现这一点?
delphi - Delphi的解析器生成器?
谁能推荐一个可以生成win32 Delphi代码的解析器生成器?我想要做的是创建一个简单的领域特定语言。
wix - 解决 DSL SetUp 项目的问题
我正在与 DSL 设置项目中的 InstallerDefinition.dslsetup 文件作斗争。我收到以下错误:
运行转换:安装项目无法从环境中检索项目“PsiTraffic.Modeling.PomModel.Dsl”的输出路径。确保该项目存在于解决方案中。仅支持 Visual C# 和 Visual Basic 项目类型。
项目“PsiTraffic.Modeling.PomModel.Dsl”在解决方案中,它也是设置解决方案的项目参考。该项目是 C#,所以它给我的唯一两个指针是无用的。
这是它在 dslsetup 文件中引用的部分:
如果我提供文件的完整路径,错误就会消失,但这违背了项目属性的全部要点,并且我稍后会从 supportAssembly 属性中得到错误。
这方面的好例子并不多,它的 Visual Studio 也没有为您提供诊断问题的很多支持。
任何见解或好的例子将不胜感激。
dsl - DSL 将根元素添加到序列化
我正在寻求帮助以实现以下目标
该图代表一辆汽车,用户可以添加引擎和颜色
当我查看 XML 时,它看起来像这样:
我想做的是将汽车包裹在“车辆”内,即
我不确定实现这一目标的最佳方法。我希望将模型浏览器和生成的 XML 包装在“车辆”中,但对于所有其他意图和目的,用户仅使用汽车
信息:Visual Studio 2010、C# 和 DSL SDK for 2010
scala - Scala 和 Jython 中的中缀运算符
我正在评估面向计算的应用程序的语言,该应用程序需要一种面向最终用户的简单嵌入式脚本语言。我一直在考虑使用 Scala 作为主要的底层语言,使用 Jython 作为脚本接口。Scala 的一个吸引力在于我可以定义诸如:*
矩阵对象的元素乘法之类的方法,并将其与中缀语法一起使用a :* b
。但是 :* 在 Python 中不是有效的方法名称。Jython 如何处理这个问题?
由于它的灵活性,我会考虑使用 Scala 作为脚本语言。但即使使用类型推断,所有和必需的val
类型var
定义对于习惯于像 matlab 这样的动态语言的外行用户来说还是太多了。相比之下,Boo 的 option-ducky
选项可能会起作用,但我想留在 JVM 而不是 .NET 上。我认为 Scala 没有-ducky
。
更一般地,考虑以下 DSL(来自http://www.cs.utah.edu/~hal/HBC/)来模拟潜在狄利克雷分配:
对于熟悉分层贝叶斯建模的用户来说,这种语法非常棒(例如与 PyMCMC 相比)。JVM 上是否有任何语言可以很容易地定义这样的语法,并且可以访问像 python 这样的基本脚本语言?
想法赞赏。
python - 扩展 Jython 语法
我想向 Jython 添加语法,以便为用户启用更好的 API。例如,像 NumPy 这样的矩阵库将受益于矩阵和元素操作,比如 Matlab 的:*
vs.*
中缀运算符。
您可以使用以下方法在 Octave 中创建矩阵:
这比 NumPy 的要好得多:
R
使用公式“y ~ x + z”在矩阵/数据框中选择变量。这比替代["y"] ["x","z"]
或解析字符串“y ~ x + y”要好得多。
可以使用Easy Extend在 Cython 中实现更复杂的示例。但是 EasyExtend 在 JVM 上不起作用。
向 Jython 添加语法的最简单但相当稳健的方法是什么?如果有一个框架来实现全新的语言结构或在 jython 中定义迷你语言,那就太好了。
c# - 使用 IronPython 简化为 C# 应用程序编写的 DSL
感谢上一个问题的建议,我正忙于尝试 IronPython、IronRuby 和 Boo 来为我的 C# 应用程序创建 DSL。第一步是 IronPython,因为它拥有更大的用户和知识库。如果我能在这里得到一些很好的工作,我可以停下来。
这是我的问题:
我希望我的 IronPython 脚本能够访问名为 Lib 的类中的函数。现在我可以将程序集添加到 IronPython 运行时并通过在我创建的范围内执行语句来导入类:
如果我想运行 Lib::PrintHello,它只是一个 hello world 风格的语句,我的 Python 脚本包含:
或(如果它不是静态的):
如何更改我的环境,以便我可以在 Python 脚本中使用基本语句,如下所示:
我希望这些脚本对于非程序员来说很简单。我不希望他们知道什么是类或它是如何工作的。IronPython 确实就在那里,因此一些基本操作(如 for、do、if 和基本函数定义)不需要我为我的 DSL 编写编译器。