我已經開始使用Eclipse了,而且我仍然是初學者。所以我想從這裏得到一些幫助。 我使用Xtext來讀取我的DSL。然後我想用一個我已經用GMF定義的圖表來展示實例。但Xtext中的ecore(MFilesystem)和GMF中的ecore(Filesystem)是不同的。所以我使用Xtend來改變模型並創建一個EObject(文件系統)。但我不知道,GMF如何使用Xtent的資源創建圖表。我告訴我的問題就在這裏:如何使用Xtext(帶Xtend的M2M)和GMF創建圖表? (初學者)
1:我已經定義在XTEXT(Grammmar)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:我在GMF
定義Ecore元3:我嘗試運行運行時間的Xtext
,並從我的DSL文件(test.filesystem)創建diagramm。
4:然後我有這個問題
5:所以我嘗試使用的Xtend改變我的模型的Xtext
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
}
}
6:但它不起作用。我想,我做錯了什麼。所以我想知道,我該怎麼做才能讓GMF使用myfilesystem
來創建圖表。
謝謝。