当前位置: 首页 > 知识库问答 >
问题:

如何使用Xtext(M2M与Xtend)和GMF创建Diagramm?(初学者)

陈富
2023-03-14

我已经开始使用Eclipse,我还是一个初学者。所以我想从这里得到一些帮助。我使用Xtext读取DSL。然后我想用我已经用GMF定义的图来展示这个实例。但是Xtext中的ecore(MFilesystem)和GMF中的ecore(Filesystem)是不同的。因此,我使用Xtend更改模型并创建EObject(文件系统)。但是我不知道GMF是如何使用Xtent中的资源来创建一个图的。我在这里表明我的问题:

1:我已经在xtext(grammar)中定义了ecore:

grammar org.xtext.Filesystem with org.eclipse.xtext.common.Terminals

 generate filesystem "http://www.xtext.org/Filesystem"

 MFilesystem:
(mfiles+=MFile | mfolder+=MFolder)* ;

 MFile:
'myfile' name=ID ';'
;

 MFolder:
'myfolder' name = ID ';'
;

2:我已经定义了基因改造食品中的ecore

package org.xtext.generator

import org.eclipse.emf.ecore.resource.Resource

import org.eclipse.xtext.generator.IFileSystemAccess

import org.eclipse.xtext.generator.IGenerator

import org.gmf.filesystem.filesystem.Filesystem

import org.gmf.filesystem.filesystem.FilesystemFactory

import org.gmf.filesystem.filesystem.impl.FilesystemFactoryImpl

import org.xtext.filesystem.MFile

import org.xtext.filesystem.MFolder


class FilesystemGenerator implements IGenerator  {

    Filesystem myfilesystem

    FilesystemFactory myfilesystemFactory

    override void doGenerate(Resource resource, IFileSystemAccess fsa) {

        //TODO implement me

        val ast = resource.contents.get(0)

        myfilesystemFactory = new FilesystemFactoryImpl()

        myfilesystem = myfilesystemFactory.createFilesystem()

        val fi = myfilesystemFactory.createFile()

        var astFi = (ast.eContents.get(0)) as MFile

        fi.name = astFi.name

        val fo = myfilesystemFactory.createFolder()

        var astFo = (ast.eContents.get(1)) as MFolder

        fo.name = astFo.name

       }

}

多谢了。

共有1个答案

王子明
2023-03-14

Xtext指令

generate filesystem "http://www.xtext.org/Filesystem"

生成新的元模型,而不是导入现有的元模型。相反,请指定

import "platform:/resource/org.gmf.filesystem/model/filesystem.ecore"

引用您的GMF编辑器正在使用的元模型。更多信息请看这篇文章。

 类似资料:
  • 我正在尝试使用xText和xtendbuilding与gradle创建第一个项目。 我按照xText文档中的指导创建了语法,还创建了xtend生成器。 在eclipse中,代码按预期生成到src-gen文件夹。 当我创建gradle脚本时,也遵循http://xtext.github.io/xtext-gradle-plugin/xtext-builder.html来构建我的代码,而不是在它生成的

  • 我是Xtext和Xtend的新手,正在尝试使用Xtext文档中的Xtext教程学习Xtext。我正在使用Xtext 2.14在Java10下运行Eclipse光子。我刚开始学习扩展教程,很早就遇到了一个问题。以下是我尝试使用代码生成器的代码: 这是我的语法文件: 我的问题是Eclipse说@Inject注释有问题,它说,这是在一个Eclipse Xtext项目中根据教程中的说明生成的。 我该如何从

  • 我已经用Xtext 2.12编写了一个DSL,我的Xted2.12代码生成器从中产生了Java8的代码。我正在使用Eclipse Oxygen.3a。我从创建一个Xtext项目作为Eclipse插件开始,一切都很好,但是我现在希望一切都由Gradle构建。为此,我已经将Gradle性质添加到我的Xtext项目中,并启动了“gradle init”来生成build.gradle和settings.g

  • 到目前为止我得到的是: 知道我做错了什么吗?谢谢!

  • 使用具有以下初始化的创建的等效版本是什么?

  • 问题内容: 我正在运行一个网站,并且有一个计分系统,可为您提供玩游戏次数的积分。 它使用散列来证明http请求评分的完整性,因此用户无法更改任何内容,但是正如我担心的那样,有人发现他们不需要更改它,他们只需要获得高分并复制http请求,标头和所有。 以前,我被禁止防御此攻击,因为它被认为不太可能。但是,既然已经发生,我可以。http请求源自Flash游戏,然后由php验证,然后php将其输入数据库