2016-07-07 5 views
1

"...すべてのノードには、物理​​的なソース位置を指すsrc注釈があります。すべての宣言に論理位置識別子のdeclアノテーションが付いています... " は、論文:M3:Rascalのコード解析の一般的なモデルから抜粋した行です。M3モデルの@srcと@decl注釈の別の実装

しかし、すべてのソースコード要素に独自の命名体系があり、要素のすべての型がASTで明示的に定義されているため、その型を解決する必要がない、比較的単純な言語用の新しいM3モデルを作成するとき別々にすべてのノードで論理ソースコードを作成することができ、@declアノテーションを使用しないので、物理ソースコードの場所を捨てるために「ok」とみなし、論理ソースコードの場所を@srcアノテーションに配置しますか?これは、M3モデルの実装が悪いと考えられるのでしょうか?それとも、単純な言葉でM3モデルの実装を簡素化できるからですか?

それ以外の場合は、すべてのノードが物理ソースコードの場所を持つ@srcと論理ソースコードの場所を持つ@declを取得するため、単一の論理ソースコードの場所で十分ですが、ASTが乱雑になります。

答えて

1

これはすばらしい質問です。 @src注釈を付けないと、私が知っているIDEツールや他のツールの現在のセットが壊れないと思います。そういう意味では何も悪いことはありません。

悪い点は、M3 declarationsテーブルにソースの場所がないことです。ですから、ASTに注釈をつけずにこのテーブルを作成することができれば、それであなたの罰金です。

すぐM3モデルは、キーワードフィールドを使用して移動しますし、我々もそれがないかどうdeclsrcを解決するデフォルトの実装を紹介することができます。

だから、あなたの提案を試して、失敗した場所を見てみませんか?もし我々が@srcを後で必要とするならば、それを直ちに追加するのは難しくありません!

+0

私はsrcアノテーションを使用しないのではなく、私はそれを使用します。物理的ではなく論理的なソースコードの場所を置きます。私が使用しないアノテーションは、declアノテーションであり、それは時代遅れになるでしょう。 srcアノテーションは引き続き使用されるため、M3宣言テーブルは正常に機能し続けます。そして今までのところ、何も失敗するようなことはありません。だから私は大丈夫だろう。 – Nicasso

+0

Mmm ..よく見てみましょう。 Eclipseのアウトライン機能はこの設計上の決定でどのように機能していますか?期待どおりに機能していますか? – jurgenv

関連する問題