问题标签 [xtext]

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 投票
3 回答
739 浏览

code-generation - 两个文件中的 Xtext 语法

我想将我的终端放到一个单独的文件中,因为我将在生产版本中使用外部词法分析器。我尝试遵循使用自定义终端定义的答案。所以我有一个mypackage/Tokens.xtext文件和一个mypackage/MyDsl.xtext包含

生成工作正常,但它创建了一个MyDslStandaloneSetupGenerated不能src-gen编译的,因为它调用了不存在的mypackage.TokensStandaloneSetup.doSetup(). 它还生成src-gen/mypackage/services/MyDslGrammarAccesswhich 引用一个也不存在的TokensGrammarAccess类。所以我的问题基本上是:当我有另一个语法文件时,我还应该怎么做才能使它可用?

0 投票
2 回答
639 浏览

ant - 为 Xtext 项目创建 Ant Build 文件

我想为我的 XText 项目生成一个 build.xml 文件来为它们创建 jar。我试图通过 File -> Export -> Generate Ant Build files 来做到这一点。当我尝试运行此命令以生成 build.xml 时,我得到一个循环检测,说“源中存在一个构建循环......”并且循环是 src -> src-gen -> src。在修复此问题之前,Ant buildfile 不会编译您的源代码。

我读到了在语法插件中创建一个名为 customBuildCallbacks.xml 的文件来解决 src -> src-gen -> src 循环依赖问题(http://www.eclipse.org/forums/index.php/t/ 198855),但不知道如何使用它。如果我使用 customBuildCallbacks.xml 那么我应该使用File -> Export -> Generate Ant Build files 还是PDE Tools -> Create Ant Build File生成 Ant 脚本?

摆脱 src -> src-gen -> src 循环并为 XText 项目生成 build.xml 的出路是什么?

0 投票
2 回答
376 浏览

eclipse - 如何将一些缓存信息附加到 Eclipse 编辑器或资源?

我正在使用 Eclipse 的 Xtext 框架开发 DSL。

对于内容辅助/代码完成,我有一个昂贵的过程来生成字符串列表。

如何缓存该过程的结果?

长话短说:我的 DSL 与 Groovy 脚本接口。这些脚本提供了我在 DSL 的某些地方提供的方法。即使我使用正则表达式来解析脚本的方法,这也很慢。所以我想缓存脚本分析的结果。

根据我的分析,在验证期间(因此我并不总是有编辑器)和用户打开 DSL 文件时会调用分析代码。

无法判断验证何时结束(代码在私有方法中,Xtext 开发人员拒绝更改)。但我认为在为 Eclipse 编写编辑器/编译器时,这一定是一个常见问题。其他人如何解决这个问题?Eclipse 框架中是否有一些缓存服务?

0 投票
2 回答
1657 浏览

java - 如何访问 Xtext 验证器中的上下文信息?

我有一个 Xtext 语法,它做这样的事情:

我想验证ruleName已在名称块中声明。我可以像这样访问规则名称本身JavaValidator

但我无法namesModel. 我该怎么做JavaValidator

0 投票
1 回答
1187 浏览

xtext - 使用 Xtext 语法处理动态变量

在我的 DSL 中,变量是动态的,它们是在第一次为它们分配值时创建的。所以这是一个有效的代码:

我天真的方法是有这样的规则

它不起作用,抱怨“以下替代方案永远无法匹配:2”。可以理解,因为生成的 Antlr 调试语法包含一个规则:

(诀窍[Identifier|ID]来自对交叉引用问题的回答。我只是在没有完全理解的情况下复制了它:)我还试图了解它是如何在 Xbase 语法中解决的:

它似乎只使用了交叉引用,我看不到新变量声明是如何处理的。

0 投票
1 回答
286 浏览

antlr - 从 ANTLR 语法中剥离动作会改变其解析算法

我有一个语法Foo.xtext(太复杂,无法在此处包含)。XtextInternalFoo.g从中生成。 经过一些调整后,它还会生成DebugInternalFoo.g哪些声称是相同的东西而无需采取行动。现在,我直接用 ANTLR 剥离动作

当我检查它们时,我希望这三种语法的行为方式相同。但这是我所经历的

  • InternalFoo.g- 错误,规则分配有非 LL(*) 决定
  • DebugInternalFoo.g- 没问题,解析很好
  • Stripped.g- 规则分配时的警告,可以使用多种选择来匹配决策。它无法正确解析。

语法是否有可能在有或没有动作的情况下以不同的方式解析文本?或者它是任何动作删除工具中的错误?(有问题的规则有句法谓词,没有它们,它真的会有一个非 LL(*) 决定。)

更新:

我部分找到了导致问题的原因。有问题的规则是这样的

使用 Antlr 进行剥离删除了该操作,但在那里留下了一个空组:

调试语法的生成同时删除了动作和它周围的空组:

所以吸取的教训是:句法谓词前的空组并不等于没有。

0 投票
4 回答
522 浏览

java - 拳击会导致性能问题吗?

我正在做一个项目,在这个项目中我们正在生产一种可以编译为 java 的语言。我们使用的框架 (xtext) 在其生成的代码中大量使用了装箱。具体来说,如果您有如下声明:

然后编译后的代码如下:

现在,在我正在从事的项目中,在某些情况下,特定的基本二进制操作将非常普遍(尤其是增量和比较)。

我的问题是:这会是性能方面的问题,还是 JIT(或类似的智能 JVM 功能)会简单地意识到正在发生的事情并解决所有问题?

发帖前请阅读:我对收到回复说“你不应该关心,让它可读”不感兴趣。这段代码是生成的,我根本不关心生成代码的可读性。我真正关心的是我们不会因此而对性能造成重大影响。

谢谢

0 投票
2 回答
1960 浏览

validation - 如何在 Xtext 中使枚举文字不区分大小写

我在 Xtext 语法文件中定义了如下 EnumRule:

enum MySpec_directionEnum: left='"left"' | right='"right"' | none='"none"';

使用此规则,允许的枚举值是"left", "right" and "none"(全部小写)。我希望能够在任何情况下允许这些值(不区分大小写)。例如,我还想允许值是"left" or "Left" or "LEFT" or "LeFt" 等等。

但我只希望MySpec_directionEnum枚举的值不区分大小写,而不是我的语法文件中的所有枚举。是否有可能通过语法或某种验证?

0 投票
1 回答
223 浏览

java - 确保 ParserRule 中的条目以逗号分隔

我在我的 Xtext 语法文件中编写了以下 ParserRule:

现在在我的 Xtext 编辑器中,我想确保“我的”中的条目以逗号结尾,最后一个除外,如果在“后缀”和“前缀”之间缺少逗号,它应该会给出错误,如下例条目所示:

解决方案: 我想到的一种解决方案是将语法更改为以下内容:

但我不确定这是否是首选方式。是否可以通过验证或其他更优雅的方式来实现这一点?

0 投票
1 回答
1502 浏览

autocomplete - Xtext 编辑器自动插入单个提案而不显示内容辅助弹出窗口

在我的 Xtext 编辑器中,我想默认启用自动插入单个提案。本质上,当我们按下 Ctrl-Space 时,只有一个匹配选项显示在内容辅助中时,想要自动完成。

在 Eclipse(Java 编辑器)中,可以从Windows->Preferences配置到Java->Editor->Content Assist页面并选择“自动插入单个提案”复选框。