Xtextを使用してDSLを定義しています。Xtextは、入力DSLのEMFモデルをトラバースできるパーサーを生成します。このEMFモデルを他のツリーに変換したいと思います。この翻訳を行うには、ツリーをトラバースする必要があります。しかし、Xtextによって生成されたEMFモデルのビジタークラスが見つかりませんでした。私が見つけた最も近いものは、単一のノードにアクセスするSwitchクラスです。自分でEMFモデルをトラバースして、アクセスする各ノードでSwitchクラスを呼び出すことができます。しかし、モデルトラバーサルを実装するビジター機能がXtextに存在するのではないかと思います。
3967 次
3 に答える
3
EcoreUtil.getAllProperContents(Resource、false)があなたが探しているものかもしれないと思います。リソースのコンテンツをトラバースするTreeIteratorを取得します。iter.next()の結果をスイッチに渡し、要素タイプに応じて変換ロジックを実行します。
于 2010-05-02T10:11:36.893 に答える
3
このスレッドを考えると、Switch (たとえばここで使用) は XText のほぼ公式のビジター パターンです。カスタム検証プロセス
もあります。
の目的は
AbstractDeclarativeValidator
、クラス名がすでに示しているように、宣言的な方法で制約を記述できるようにすることです。
つまり、徹底的な if-else 構造を記述したり、生成された EMF スイッチを拡張したりする代わりに、@Check
任意のメソッドにアノテーションを追加するだけで、検証が行われるときに自動的に呼び出されます。
ただし、それはまさに必要なものではないかもしれません。
于 2010-05-01T17:10:24.607 に答える
0
うーん、EMF APIを使用するだけでは不十分ですか?モデルを変換したい場合、Xtendのような変換言語のいくつかを使用することはできませんか?
于 2010-05-01T19:57:59.640 に答える