首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xtext交叉引用不再起作用了?

问Xtext交叉引用不再起作用了?
EN

Stack Overflow用户
提问于 2018-08-18 19:11:59
回答 1查看 79关注 0票数 0

我使用Xtext已经很多年了,并且一直能够交叉引用从一种语法到另一种语法。但是今天,在Eclipse上,通常的方法不再起作用了。

在同一个工作区中,我使用默认选项org.xtext.example.adsl.ADsl创建两个Xtext项目

代码语言:javascript
复制
grammar org.xtext.example.adsl.ADsl with org.eclipse.xtext.common.Terminals

generate aDsl "http://www.xtext.org/example/adsl/ADsl"

AModel:
    agreetings+=AGreeting*;

AGreeting:
    'AHello' name=ID '!';

和org.xtext.example.bdsl.BDsl,

代码语言:javascript
复制
grammar org.xtext.example.bdsl.BDsl with org.eclipse.xtext.common.Terminals

generate bDsl "http://www.xtext.org/example/bdsl/BDsl"


//import "http://www.xtext.org/example/adsl/ADsl" as adsl

ModelB:
    bgreetings+=BGreeting*;

BGreeting:
    'BHello' name=ID '!';

其中,BDsl希望通过注释掉的导入语句import "http://www.xtext.org/example/adsl/ADsl" as adsl导入ADsl,以便用于交叉引用。

过去,在取消对该导入的注释之前,我必须将资源引用referencedResource = "../org.xtext.example.adsl/model/generated/ADsl.genmodel"添加到GenerateBDsl.mwe2。

代码语言:javascript
复制
module org.xtext.example.bdsl.GenerateBDsl

import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*

var rootPath = ".."

Workflow {

    component = XtextGenerator {
        configuration = {
            project = StandardProjectConfig {
                baseName = "org.xtext.example.bdsl"
                rootPath = rootPath
                runtimeTest = {
                    enabled = true
                }
                eclipsePlugin = {
                    enabled = true
                }
                eclipsePluginTest = {
                    enabled = true
                }
                createEclipseMetaData = true
            }
            code = {
                encoding = "UTF-8"
                lineDelimiter = "\n"
                fileHeader = "/*\n * generated by Xtext \${version}\n */"
            }
        }
        language = StandardLanguage {
            name = "org.xtext.example.bdsl.BDsl"


            referencedResource = "../org.xtext.example.adsl/model/generated/ADsl.genmodel"


            fileExtensions = "bdsl"

            serializer = {
                generateStub = false
            }
            validator = {
                // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
            }
        }
    }
}

但是,当我为BDsl生成Xtext工件时,我现在得到以下错误(导入仍然被注释掉)。

代码语言:javascript
复制
434  [main] ERROR xt.generator.XtextGeneratorLanguage  - Error loading 'ADsl.ecore'

肯定会找到genmodel,因为如果找不到文件,就会生成一个完全不同的错误。

怎么一回事?

  • 我是不是犯了什么愚蠢的错误?
  • 这与这只虫子有关吗?如果是的话,这附近有工作吗?

..。我知道这个例子没有包含实际的交叉引用。我是故意以最简单的方式引起错误的。..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-19 10:15:02

请确保引用所引用的genmodel的方式实际上是可以解决的。通常的引用将类似于platform:/resource/project/model/Some.genmodel,所以在您的例子中,referencedResource = "platform:/resource/org.xtext.example.adsl/model/generated/ADsl.genmodel"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51911794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档