有没有人尝试采用xtext2并从xtext1.x迁移到xtext2.0? 似乎xtext2带来了许多新的吸引人的功能。例如可重用表达语言和Xtend:代码生成语言。对Xtext工作台和重命名功能进行了许多性能增强。那么任何人都会告诉你关于xtext2的经历吗?可能这是一个早期的问题。但我只是拭目以待。
答案 0 :(得分:2)
我将现有的,不是太复杂的语言从Xtext 1更新为Xtext 2,并尝试使用Xtext2和XBase开发一个新语言。我不得不重新运行代码生成步骤,还必须修改手写验证器,因为错误和警告位置将使用文字而不是整数来指定。 E.g。
error("File does not exist with path: " + path, fileReference, ViatraTestDslPackage.FILE__PATH);
将替换为
error("File does not exist with path: " + path, ViatraTestDslPackage.Literals.FILE__PATH);
类似地,还必须更改工作流以合并一些新功能:outline API使用不同的片段(outline.OutlineTreeProviderFragment和outline.QuickOutlineFragment),用于重命名和比较支持添加新片段(refactoring.RefactorElementNameFragment)和compare.CompareFragment)。
通过我的XBase实验,似乎将它添加到已经支持某种表达式的语言可能是劳动密集型的,因为旧的表达式必须用XBase表达式替换(或至少改为以某种方式改变使它们在XBase表达式中可用),否则你必须在代码生成器或解释器中维护两种表达式支持。
总结我的答案,我相信,如果你有一个简单的Xtext 1.0编辑器,你主要依赖于自动生成的功能,那么迁移到Xtext 2.0似乎很容易并且推荐;但是,如果您在手动编写的代码中定制了很多东西,请小心,因为迁移可能不是直接的,我没有找到真正的迁移指南。
答案 1 :(得分: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。从String转换为QualifiedName错误。
答案 2 :(得分:0)
考虑到最近的发布日期,现在还为时尚早:
该团队刚刚在democamps during last month (June 2011)中展示/演示了XTend2。