是否可以引用另一个模型元素的属性?

问题描述 投票:0回答:1

好吧,标题可能并不意味着太多含义,但我不知道该如何表达我的问题。

我正在尝试设计一个将创建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,它...

xtext
1个回答
0
投票

您可能想要按照DefaultDeclarativeQualifiedNameProvider中的说明使用https://dietrich-it.de/xtext/2011/07/16/iqualifiednameproviders-in-xtext-2.0/

© www.soinside.com 2019 - 2024. All rights reserved.