XTEXT 2自定义重命名重构示例

时间:2013-11-29 06:34:57

标签: xtext

是否有人在xtext中有自定义重命名重构示例?

我想它必须类似于自定义语法突出显示,绑定某些类会覆盖某些实现,然后通过要重命名的EObject进行爬网。

但我不知道从哪里开始,有人有想法吗?或者甚至有人已经在xtext中实现了自定义重命名重构?

亲切的问候,

示例:如果我重命名,规则的ruleName,我也想重命名RuleReference的ruleReferenceName

Rule:
    ruleName=(RuleName)':' ruleContent=RuleContent ';'
;

RuleContent: 
       ruleReferences+=RuleReference 
;

RuleReference:
    ruleReferenceName=RuleName (cardinality=Cardinality)?
;

RuleName:
    value=RuleReferenceNameTerminal
;

1 个答案:

答案 0 :(得分:0)

我想我最初计划做的事情不是xtext重命名重构的意图。所以我再次仔细研究了交叉引用概念。我之前通过交叉引用尝试重命名重构,但偶然发现我没有定义“ID”终端。解决我的问题的方法是让交叉引用知道应该使用哪个终端规则,并在正确的位置设置名称属性。

这就是语法应该让重命名重构像我想要的那样工作(注意方括号和name属性)。根本不需要绑定和覆盖。

Rule:
    ruleName=(RuleName)':' ruleContent=RuleContent ';'
;

RuleContent: 
       ruleReferences+=RuleReference 
;

RuleReference:
    ruleReferenceName=[RuleName | RuleReferenceNameTerminal] (cardinality=Cardinality)?
;

RuleName:
    name=RuleReferenceNameTerminal
;

重要的是要知道方括号之间的“|”不是替代。