Xtext 2.10.0を使用していますが、相互参照に問題があるようです。簡体字、(org.eclipse.xtext.common.Terminalsと)私の文法は以下の通りです:のDTOの正しい修飾名を提供するためにクロスリファレンスXtextで問題が発生しました
Model:
package=Package
dtos+=DTO*;
Package:
'package' name=FQN;
FQN:
ID ('.' ID)*;
DTO:
'dto' name=ID ('extends' extendedDTO=[DTO|FQN])? '{' '}';
、私は修飾名を組み立てた、独自のDefaultDeclarativeQualifiedNameProviderを実装しましたパッケージの名前とDTOの名前に基づいています。
今、私が最初のファイルでDTO "base.dto" を作成します。
package base
dto BaseDTO {}
秒のファイルでは "mydto.dto" 私は二DTOを作成します。
package mydto
dto MyDTO extends base.BaseDTO {}
一部"base.BaseDTO"はオートコンプリートメカニズムによっても提案されています。しかし、Eclipseはこの部分をエラーとしてマークし、 "DTO 'base.BaseDTO'への参照を解決できませんでした。"この参照を解決するにはどうすればよいですか?ここで
あなたはあなたのnameprovider implを共有してください。 –
これは正しいヒントだったと思います。もともと、私はこれを使いました: "QualifiedName.create(packageName、dtoName)"。ただし、パッケージ名はいくつかの要素で構成されています。私はパッケージ名をセグメント(ドット)に分割し、すべてのセグメントをQualifiedNameに入れます。これは機能します。どうもありがとうございました! – user3575404