是否有人在xtext中有自定义重命名重构示例?
我想它必须类似于自定义语法突出显示,绑定某些类会覆盖某些实现,然后通过要重命名的EObject进行爬网。
但我不知道从哪里开始,有人有想法吗?或者甚至有人已经在xtext中实现了自定义重命名重构?
亲切的问候,示例:如果我重命名,规则的ruleName,我也想重命名RuleReference的ruleReferenceName
Rule:
ruleName=(RuleName)':' ruleContent=RuleContent ';'
;
RuleContent:
ruleReferences+=RuleReference
;
RuleReference:
ruleReferenceName=RuleName (cardinality=Cardinality)?
;
RuleName:
value=RuleReferenceNameTerminal
;
答案 0 :(得分:0)
我想我最初计划做的事情不是xtext重命名重构的意图。所以我再次仔细研究了交叉引用概念。我之前通过交叉引用尝试重命名重构,但偶然发现我没有定义“ID”终端。解决我的问题的方法是让交叉引用知道应该使用哪个终端规则,并在正确的位置设置名称属性。
这就是语法应该让重命名重构像我想要的那样工作(注意方括号和name属性)。根本不需要绑定和覆盖。
Rule:
ruleName=(RuleName)':' ruleContent=RuleContent ';'
;
RuleContent:
ruleReferences+=RuleReference
;
RuleReference:
ruleReferenceName=[RuleName | RuleReferenceNameTerminal] (cardinality=Cardinality)?
;
RuleName:
name=RuleReferenceNameTerminal
;
重要的是要知道方括号之间的“|”不是替代。