是否可以引用另一个模型元素的属性?
Is it possible to reference properties of another Model Element?
好吧,可能标题没有太大意义,但我不知道如何表达我的问题。
我正在尝试设计一个将创建 Java Bean 以及 Java Bean 的 Mapper 的 dsl,它将如下所示...
Model:
(elements+=AbtractModelElement)*;
AbstractModelElement:
Bean | BeanMapper;
Bean:
'bean' name=ID
'fields' (fields+=BeanField)+;
BeanField:
name=ID
(type=FieldType);
enum FieldType:
String='STRING' | BOOLEAN='BOOLEAN' | BYTE='BYTE';
BeanMapper:
'mapper' name=ID
'from'=[Bean]
'to'=[Bean]
'mappings' (mappings+=BeanMappingField)+;
BeanMappingField:
(fieldFrom=[BeanField])
('<=' fieldTo=[BeanField]);
如你所见,没什么好看的..
我的模型将如下所示
bean BeanA
fields
fieldA STRING
fieldB BOOLEAN
bean BeanB
fields
fieldC BOOLEAN
fieldD STRING
现在问题出在以下部分...
mapper beanAToBeanB
from=BeanA
to=BeanB
mappings
BeanA.fieldA <= BeanB.fieldD
BeanA.fieldB <= BeanB.fieldC
我猜你能看出问题所在,虽然我不希望用户随意书写,而不是现有的字段名称,但我使用符号 'BeanA.fieldA' 但 XText 无法解析 BeanA.fieldA .
我试过了
fieldA <= fieldD
希望 XText 可以解析 BeanField 的 name=ID 结构,但这也不起作用....
我想要实现的目标是否可行,如果可行,如何实现?
感谢解答....
您可能想要使用 DefaultDeclarativeQualifiedNameProvider
,如 https://dietrich-it.de/xtext/2011/07/16/iqualifiednameproviders-in-xtext-2.0/
中所述
好吧,可能标题没有太大意义,但我不知道如何表达我的问题。
我正在尝试设计一个将创建 Java Bean 以及 Java Bean 的 Mapper 的 dsl,它将如下所示...
Model:
(elements+=AbtractModelElement)*;
AbstractModelElement:
Bean | BeanMapper;
Bean:
'bean' name=ID
'fields' (fields+=BeanField)+;
BeanField:
name=ID
(type=FieldType);
enum FieldType:
String='STRING' | BOOLEAN='BOOLEAN' | BYTE='BYTE';
BeanMapper:
'mapper' name=ID
'from'=[Bean]
'to'=[Bean]
'mappings' (mappings+=BeanMappingField)+;
BeanMappingField:
(fieldFrom=[BeanField])
('<=' fieldTo=[BeanField]);
如你所见,没什么好看的..
我的模型将如下所示
bean BeanA
fields
fieldA STRING
fieldB BOOLEAN
bean BeanB
fields
fieldC BOOLEAN
fieldD STRING
现在问题出在以下部分...
mapper beanAToBeanB
from=BeanA
to=BeanB
mappings
BeanA.fieldA <= BeanB.fieldD
BeanA.fieldB <= BeanB.fieldC
我猜你能看出问题所在,虽然我不希望用户随意书写,而不是现有的字段名称,但我使用符号 'BeanA.fieldA' 但 XText 无法解析 BeanA.fieldA .
我试过了
fieldA <= fieldD
希望 XText 可以解析 BeanField 的 name=ID 结构,但这也不起作用....
我想要实现的目标是否可行,如果可行,如何实现?
感谢解答....
您可能想要使用 DefaultDeclarativeQualifiedNameProvider
,如 https://dietrich-it.de/xtext/2011/07/16/iqualifiednameproviders-in-xtext-2.0/