0

例として、次の設定を想定します。

明示的なタグのタグ付け環境を持つモジュール定義Aは、タイプfooを定義します。そして、暗黙のタグ付け環境を備えたモジュールBは、fooをインポートし、それをbarに割り当てます。

モジュールBを使用してストリームを読み取る場合、どのタグ付け環境が効果的であるかがわかりません。モジュールBは、bar(インポートされたfoo)のタグ付け環境(暗黙的)を定義しますか、それとも宣言されたモジュール(モジュールAのfooは明示的)のタグ付け環境は効果的ですか?

私は問題を十分に説明したと思います

4

1 に答える 1

2

まず、インポートはCの#includeのようなテキストではありません。モジュール名を使用して修飾せずに、他のモジュールの型にアクセスできるようにするだけです。

X.680 13.1注4は、特にあなたの質問に対応しています。

モジュール定義の「TagDefault」の値は、モジュールで明示的に定義されたタイプにのみ影響します。インポートされた型の解釈には影響しません。

ただし、モジュールB(fooがインポートされた場所)に次のように記述していることに注意してください。

バー::=[アプリケーション5]Foo

これは次と同等です。

バー::=[アプリケーション5]暗黙のフー

TaggedTypeが定義されているモジュールBでは、タグ付け環境が暗黙的であるためです。

メモの意味は、モジュールAの場合、次のことを意味します。

Foo :: = SEQUENCE {x [0] INTEGER}

モジュールAのタグ付け環境は明示的であり、暗黙のタグ付け環境でモジュールBにインポートされた場合でも、Fooは常にこのように扱われるため、xのタグはEXPLICITタグです。

于 2013-03-26T13:16:14.403 に答える