使用 XText 和 XTend 处理的合适场景?



我需要为一个非常简单的DSL提供一个带有语法检查器和验证器的IDE。

DSL的解释器已经存在,因此不需要另一个。DSL适用于xtext&extendexcept它允许人们逃到javascript,我听说这是一种相当混乱的语言。

XText适合这种情况吗?我听说将xtext调整为javascript非常困难,而且我还没有看到一个可以轻松链接或扩展的开源xtext javascript项目。

谢谢!

编辑:我正在使用的dsl是nools规则语言。它看起来像这样:

rule "rule report to user" {
    when{
        $ctr: Counter $ctr.count % 1000 == 0 {count: $count}
    }
    then{
        console.log("Progressing...");
        modify($ctr, function(){this.count = $count + 1;});
    }
}

JavaScript出现在when子句中每个语句的模式中。在本例中,模式为"$ctr.count%1000==0")。模式中的非javascript替换数量有限,例如支持正则表达式运算符"=~"。

除了在when中定义的别名在then子句中显示为变量之外,整个then子句都是JavaScript。在本例中,$ctr就是这样一个别名。

如果

  • 语法明确地区分了"普通代码"one_answers"Javascript转义"
  • 您不关心编辑器对Javascript部分的支持

然后您可以创建一个Xtext语法,逐字逐句地解析Javascript部分。

如果没有看到DSL并了解它的用例,我就无法给出更具体的建议。

最新更新