好吧,标题可能并不意味着太多含义,但我不知道该如何表达我的问题。
我正在尝试设计一个将创建Java Bean的dsl以及该Java Bean的Mapper,它看起来像以下内容...
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结构进行解析,但是那也不起作用....
我要实现的目标是否完全可行,如果可以,怎么办?
感谢答案。...
好吧,标题可能并不意味着太多意义,但我不知道该如何表达我的问题。我正在尝试设计一个可以创建Java Bean的dsl,也可以为Java Bean创建一个Mapper,它...
您可能想要按照DefaultDeclarativeQualifiedNameProvider
中的说明使用https://dietrich-it.de/xtext/2011/07/16/iqualifiednameproviders-in-xtext-2.0/