这里有没有人尝试采用 xtext2 并从 xtext1.x 迁移到 xtext2.0?xtext2 似乎带来了许多新的吸引人的特性。例如 A Reusable Expression Language 和 Xtend: A Code Generation Language 。对 Xtext 工作台和重命名功能进行了许多性能增强。那么有人告诉你关于 xtext2 的经验吗?可能这是一个有点早的问题。但我只是拭目以待。
3 回答
我将现有的不太复杂的语言从 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 和比较。比较片段)。
通过我对 XBase 的实验,似乎将其添加到已经支持某种表达式的语言中可能是劳动密集型的,因为必须用 XBase 表达式替换旧表达式(或者至少以某种方式进行更改以使其可用在 XBase 表达式中),否则您必须在代码生成器或解释器中维护两种表达式支持。
总结一下我的回答,我相信,如果您有一个简单的 Xtext 1.0 编辑器,并且您主要依赖于自动生成的功能,那么迁移到 Xtext 2.0 似乎很容易并且值得推荐;但是,如果您在手动编写的代码中自定义了很多东西,请小心,因为迁移可能不是直截了当的,而且我没有找到真正的迁移指南。
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。从 String 转换为 QualifiedName 错误。
考虑到最近的发布日期
,现在还为时过早:团队刚刚在上个月(2011 年 6 月)的演示营中展示/演示了 XTend2。