gpt4 book ai didi

java - 如何指定 XtextGenerator 的 Xtext 语言生成顺序?

转载 作者:行者123 更新时间:2023-12-02 01:10:15 25 4
gpt4 key购买 nike

我们有一个包含两个 Xtext Grammars 的项目,遵循此线程中的描述:https://www.eclipse.org/forums/index.php/t/1079008/

我们的语言生成模块有一个 XtextGenerator block ,以及两个语言 block 。一种语言 block 通过“referencedResource”属性引用另一种语言 block 。

将语法放在一个项目中是有意义的,因为它们紧密相关,并且一种语法依赖于另一种语法。

但是,在运行语言生成模块时,所依赖的语言似乎是在依赖语言之后生成的,导致所依赖语言的.genmodel出现FileNotFoundException。

为什么依赖的语言是在依赖语言之后生成的?是否可以指定生成语言的顺序?

我已经尝试过:

  • 将GenerateBxLang 模块拆分为两个模块,每个模块生成一种语言。但是,在运行模块之前会执行清理。这会导致运行第二个模块来删除运行第一个模块的结果。
  • 更改模块中语言 block 的顺序,但这没有什么区别。

语言生成模块代码如下:

module com.a.b.GenerateLang

import org.eclipse.xtext.xtext.generator.*
import org.eclipse.emf.mwe.utils.StandaloneSetup
import org.eclipse.xtext.xtext.generator.model.project.*

var rootPath = ".."

Workflow {

component = XtextGenerator {
configuration = {
project = StandardProjectConfig {
baseName = "com.a.b"
rootPath = rootPath
runtimeTest = {
enabled = true
}
genericIde = {
enabled = true
}
mavenLayout = true
}
code = {
encoding = "UTF-8"
lineDelimiter = "\n"
fileHeader = "/*\n * generated by Xtext \${version}\n */"
}
}
language = StandardLanguage {
name = "com.a.b.BxLang"
fileExtensions = "bxlang"
referencedResource =
"platform:/resource/com.a.b/model/generated/BxLangSubjectScope.genmodel"
serializer = {
generateStub = false
}
validator = {
generateDeprecationValidation = true
}
junitSupport = {
junitVersion = "5"
}
}
language = StandardLanguage {
name = "com.a.b.BxLangSubjectScope"
fileExtensions = "bxscope"
serializer = {
generateStub = false
}
validator = {
generateDeprecationValidation = true
}
junitSupport = {
junitVersion = "5"
}
}
}
}

运行上述语言生成模块会导致以下错误:

359  [main] ERROR mf.mwe2.launch.runtime.Mwe2Launcher  - Problems running workflow com.a.b.GenerateBxLang: java.io.FileNotFoundException: /model/generated/BxLangSubjectScope.genmodel (No such file or directory)
java.lang.RuntimeException: Problems running workflow com.a.b.GenerateBxLang: java.io.FileNotFoundException: /model/generated/BxLangSubjectScope.genmodel (No such file or directory)

最佳答案

解决方案正如 Christian Dietrich 对原始问题的评论:

referencedResource 应该是语法文件,而不是 genmodel。正确的引用如下所示:

referencedResource =
"platform:/resource/com.a.b/src/main/java/com/a/b/BxLangSubjectScope.xtext"

关于java - 如何指定 XtextGenerator 的 Xtext 语言生成顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57692553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com