2011-07-13 41 views
2

有没有人试图采用xtext2并从xtext1.x迁移到xtext2.0? 看来xtext2带来了许多新的特色。如可重用表达式语言和Xtend:代码生成语言。对Xtext工作台和重命名功能进行了许多性能增强。那么有人告诉你关于xtext2的经历?这可能有点早。但我只是拭目以待。XText2的采用和迁移

xtext2 homepage

回答

2

我更新了现有的Xtext 1到Xtext 2的复杂语言,并尝试使用Xtext2和XBase开发新语言。我不得不重新运行代码生成步骤,还必须修改手写验证器,因为错误和警告位置将使用文字而不是整数来指定。例如。

error("File does not exist with path: " + path, fileReference, ViatraTestDslPackage.FILE__PATH);

是与

error("File does not exist with path: " + path, ViatraTestDslPackage.Literals.FILE__PATH);

类似地被替换,则工作流必须被以及改变加入一些新的特点:轮廓API使用不同片段(outline.OutlineTreeProviderFragment和outline.QuickOutlineFragment),用于重命名和比较支持添加新的片段(refactoring.RefactorElementNameFragment和compare.CompareFragment)。

通过我对XBase的实验,似乎将一个已经支持某种表达式的语言添加到一个语言中可能需要大量的劳动力,因为旧表达式必须用XBase表达式替换(或者至少以某种方式更改使它们在XBase表达式中可用),否则必须在代码生成器或解释器中维护两种表达式支持。我相信,如果你有一个简单的Xtext 1.0编辑器,你主要依赖于自动生成的特性,那么迁移到Xtext 2.0看起来很简单,并且推荐使用;但是,如果您使用手动编写的代码定制了大量内容,请小心,因为迁移可能不是直接的,并且我没有找到真正的迁移指南。

+0

@Uhehei谢谢你的回复。一个简单的问题。您是否必须更改.xtext语法配置文件? –

+0

不,语法可以保持不变(当然,我没有使用表达式,所以不需要XBase迁移...)。 –

1

http://www.eclipse.org/Xtext/documentation/2_0_0/213-migrating-from-1.0.php#migrating_from_1_0_x_5_4

我只是觉得这个有用的链接。

另外我确实遇到了一些问题,特别是在序列化模块中。幸运的是,在mwe2文件中,它保留了1.0版本的序列化,我使用它并修复了使用2.0版序列化模块时的问题。不知道为什么..

另一个问题是在xtext验证有一个奇怪的错误。它总是抱怨ClassCastException。从字符串转换为QualifiedName错误。