基于前一节点的xtext内容辅助

时间:2013-08-14 00:12:41

标签: xtext content-assist

在原始语法中,我有一个定义为

的解析器规则
Property: k=Cident '=' (simple=PropertyValue | map=MapLiteral);

我有两个不同的属性AB。它们在地图中具有不同的属性。 例如:

typeA = {'class': 'typeA', 'upper_bound': 50};
typeB = {'class': 'typeB', 'possible_value': 'int'};

typeB不会有upper_bound属性。

如果我覆盖completeProperty_Map,我可以将model投放到Property以检查ktypeA还是typeB,然后提出差异自动完成。但是,在第一个提案之后,它来到了

typeA = {'class': 'typeA', 

然后我的自动完成功能无效。它只知道它在地图中,但不知道这张地图位于Property的右侧。这样我无法检查ktypeA还是typeB

任何帮助?

=============================================== ===============

更新:添加更多代码段

PropertyValue
  : c=Constant
  | u=UnreservedKeyword
;

Constant:
  STRING_LITERAL | INTEGER | FLOAT | BOOLEAN | UUID | HEXNUMBER
;

=============================================== ===============

更新: 我发现我可以从参数model中获取AstTree中的父对象,并遍历所有映射条目以检查class属性是否显示以及Cident的值。相当愚蠢但有效。

0 个答案:

没有答案