我最近开始使用 XText。至此我已经能够定义一个简单的语法,完成JvmModelInferrer并生成对应的java类和.java文件。
是否可以从一组自定义 Java 类中自动生成 DSL 文件(考虑到其语法)?
让我举一个简单的例子。
我有以下语法:
MODEL:
entities+=ENTITY*
;
ENTITY:
'entity' name=ValidID 'as'
(elements+=PROPERTY)*
'end'
;
PROPERTY:
(many?='many')? 'property' name=ID 'of' type=JvmTypeReference
;
如果我有以下sample.myDsl
entity Book as
property title of String
property numPages of Integer
end
entity Author as
property name of String
property surname of String
end
我得到 Book.java 和 Author.java 文件。在我的项目中,我有一个处理器可以分析 java 文件并从中创建对象,所以如果我在以前的 Book.java 和 Author.java 上运行处理器,我会得到两个自定义实体 java 类型的实例。每个 Entity 实例都有一组 Property 实例。因此,Java 模型与 xtext 语法非常相似。
是否可以将这两个对象“提供”给 XText,或者定义一个推断器来指定翻译,并考虑到相同的 .xtext 语法文件,自动生成一个 .myDsl 文件?