我正在考虑使用XText来扩展DSL到我每天使用的语言,并且有一些明显的缺点(AS3,通过FlashBuilder)。
我有一个语法和代码生成系统工作,其中下面的声明生成一个值类,具有构造函数,类级变量和getter等。
class Person (name: String, age: int)
这很好,但我希望有在flash播放器库中定义的类型,以及我在扩展DSL中可用的用户项目中定义的类型。在上面的代码中,String
和int
都来自本地flash库。
我假定Flash Builder在内部使用EMF核心来表示任何包含的库(swcs)和我在项目中定义的任何类型。如果是这样的话,我的问题是:
How can I access the EMF model of FLash Builder?
如果没有EMF模型,那么我假定我将不得不解析库。SWC自己和我的项目的源代码。
Is the Xtend language intended to preform these sort of native filesystem tasks?
谢谢
让我们假设Flash Builder附带一个基于EMF的元模型。那么你要做的就是实现一个IResourceServiceProvider。我曾经写过一篇关于为uml模型做同样事情的博文:http://christiandietrich.wordpress.com/2011/07/17/xtext-2-0-and-uml/
和no: extend是一种现代风格的编程语言,可以编译成Java,并具有很好的模板支持。