2016-09-02 3 views
1

を返すようにIQualifiedNameProviderを実装する方法:のXtext:私は私の文法では、このようにルールを持っているファイル名に

`CLASS: 'extends' '=' superClass=[CLASS];` 

あなたは私のクラスはname=IDのように任意の名前を持っていない見ることができると私はで参照したいとCLASS宣言を含むファイル名。これを実現するために私はDefaultDeclarativeQualifiedNameProviderを拡張するカスタムQualifiedNameProviderを作成しました:私はハードコードされた文字列を返すてるとき

def QualifiedName qualifiedName(CLASSDeclaration cd) { 
    var fileName = ??????? 
    return QualifiedName::create(fileName) 
} 

これは正常に動作しますが、私はクラスが定義されているファイル名を取得する方法がわかりません。アイデア

答えて

1

ため

おかげであなたは、ファイル名を取得するために処理できるURIを取得するためにEObjecteResourceを使用することができます。注:[Class]は[Class | ID]の略で、IDが解析されることを意味します。

あなたがのようなものが必要な場合がありそこにファイル名のドットできるようにしたい場合は、[クラス| FQN]

そして、あなたはこんにちは、おかげで、この作品

+0

修飾名を作成するにはIQualifiedNameConverter を使用することができます。計算された値の形でクラス名としてファイル名を返すことができます。残念ながら、この値はしばらくすると失われ、オブジェクトにはもう一度赤く下線が引かれます。私はこれをさらに掘り起こす必要があります。 –

+0

これは失われてはいけません。どのようにあなたのインプラントは –

+0

のように見えますか私のために見える。なぜそれがうまくいかないのか分かりません –

関連する問題