JPH05224949A - 高水準形態抽象構文を中間形態へ変換する方法及び装置 - Google Patents
高水準形態抽象構文を中間形態へ変換する方法及び装置Info
- Publication number
- JPH05224949A JPH05224949A JP4169623A JP16962392A JPH05224949A JP H05224949 A JPH05224949 A JP H05224949A JP 4169623 A JP4169623 A JP 4169623A JP 16962392 A JP16962392 A JP 16962392A JP H05224949 A JPH05224949 A JP H05224949A
- Authority
- JP
- Japan
- Prior art keywords
- definition
- asn
- type
- value
- level
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Computer And Data Communications (AREA)
Abstract
(57)【要約】
【目的】 抽象構文を再コンパイルせずに中間水準形態
へ変換する。 【構成】 ASN.1定義モジュールの表現を処理する
ための方法及び装置。コンパイラは、高水準テキスト形
態のASN.1定義モジュールを受け取る。ASN.1
定義モジュールを変換するための唯一のルーチン組を用
い、コンパイラは高水準テキスト形態を基本符号化規則
(BER)値から成る中間形態へ変換する。その後、中
間形態のユーザは、適用プログラム内へコンパイルされ
た複数機能から任意のものを実行し、これによって中間
形態中のASN.1定義モジュールの内容を処理及び表
示する。適用プログラム内に設けられた特殊機能は、A
SN.1定義の中間形態を逆コンパイルして高水準テキ
スト形態を得るというオプションである。
へ変換する。 【構成】 ASN.1定義モジュールの表現を処理する
ための方法及び装置。コンパイラは、高水準テキスト形
態のASN.1定義モジュールを受け取る。ASN.1
定義モジュールを変換するための唯一のルーチン組を用
い、コンパイラは高水準テキスト形態を基本符号化規則
(BER)値から成る中間形態へ変換する。その後、中
間形態のユーザは、適用プログラム内へコンパイルされ
た複数機能から任意のものを実行し、これによって中間
形態中のASN.1定義モジュールの内容を処理及び表
示する。適用プログラム内に設けられた特殊機能は、A
SN.1定義の中間形態を逆コンパイルして高水準テキ
スト形態を得るというオプションである。
Description
【0001】
【産業上の利用分野】本発明は、概略的には情報を高水
準命令コードから中間水準命令コードへ変換するための
装置及び方法、具体的には抽象構文表記法1(ASN.
1)型指定言語を用いて記述される抽象型定義とも呼ば
れる高水準型抽象構文を中間形式に変換するための装置
及び方法に関する。中間形式は、その後演算装置により
適用プログラム内で解釈的方法にて実行され、及び/ま
たは原高水準抽象型定義へ再変換される。
準命令コードから中間水準命令コードへ変換するための
装置及び方法、具体的には抽象構文表記法1(ASN.
1)型指定言語を用いて記述される抽象型定義とも呼ば
れる高水準型抽象構文を中間形式に変換するための装置
及び方法に関する。中間形式は、その後演算装置により
適用プログラム内で解釈的方法にて実行され、及び/ま
たは原高水準抽象型定義へ再変換される。
【0002】
【従来の技術】コンピュータ命令を高水準形式で記述す
る能力をもつコンピュータプログラマーには、プログラ
ミングツールを与えることが望ましい。高水準型プログ
ラミング命令に伴って得られる利点は、ベーシック、パ
スカル、フォートラン、コボル及びC等、周知の高水準
プログラミング言語により得られる。プログラマーの視
点から言えば、高水準型プログラミング命令は低水準の
符号化命令よりも、通常より多くの集中されたプログラ
ム情報を含有しており、また我々人間の話す言語により
近いものであるから、人間にとって読みやすいといえ
る。従って、高水準プログラムは、調査も行いやすい。
また、プログラマにとっては、集中した情報によって、
与えられた特定の機能または処理をより短いシーケンス
でコンピュータに実行させるよう設定可能となる。従っ
て、適用プログラムエントリー時間を短縮できる。これ
らの理由により、プログラマーは、一般に使用されてい
るより低水準シーケンス及び低集中の命令の代わりに、
高水準のプログラミング命令を使用することを好む場合
が多い。
る能力をもつコンピュータプログラマーには、プログラ
ミングツールを与えることが望ましい。高水準型プログ
ラミング命令に伴って得られる利点は、ベーシック、パ
スカル、フォートラン、コボル及びC等、周知の高水準
プログラミング言語により得られる。プログラマーの視
点から言えば、高水準型プログラミング命令は低水準の
符号化命令よりも、通常より多くの集中されたプログラ
ム情報を含有しており、また我々人間の話す言語により
近いものであるから、人間にとって読みやすいといえ
る。従って、高水準プログラムは、調査も行いやすい。
また、プログラマにとっては、集中した情報によって、
与えられた特定の機能または処理をより短いシーケンス
でコンピュータに実行させるよう設定可能となる。従っ
て、適用プログラムエントリー時間を短縮できる。これ
らの理由により、プログラマーは、一般に使用されてい
るより低水準シーケンス及び低集中の命令の代わりに、
高水準のプログラミング命令を使用することを好む場合
が多い。
【0003】実行的視点から見れば、コンピュータプロ
グラミング命令は、プログラムにより与えられた命令シ
ーケンスを現実に実行するためにコンピュータハードウ
ァアによりすぐ使用できる形態にできるだけ近い方が望
ましいわけである。コンピュータプログラミング命令の
最も低い形態は、適用プログラムを実行する特定ハード
ウェア構成及び作動システムに対応した所定長のセット
にまとめられた論理値組である。コンピュータで使用さ
れるコンピュータプログラミング命令がこの形態に近づ
けば近づくほど、コンピュータのプログラム処理速度が
増大する。理由は、命令を機械による読み取り可能形態
とするために要する変換処理がより少なくて済むからで
ある。更に、符号化されたコンピュータプログラム命令
が低レベル形態へブレークダウンされればされるほど、
命令シーケンスを実行する命令解釈システムを簡素化で
きることになる。また、低水準符号化コンピュータプロ
グラミング命令は、高水準符号化形態では不可能な詳細
制御情報を与えることができるので、デバッグが行われ
るような状況下に適している。
グラミング命令は、プログラムにより与えられた命令シ
ーケンスを現実に実行するためにコンピュータハードウ
ァアによりすぐ使用できる形態にできるだけ近い方が望
ましいわけである。コンピュータプログラミング命令の
最も低い形態は、適用プログラムを実行する特定ハード
ウェア構成及び作動システムに対応した所定長のセット
にまとめられた論理値組である。コンピュータで使用さ
れるコンピュータプログラミング命令がこの形態に近づ
けば近づくほど、コンピュータのプログラム処理速度が
増大する。理由は、命令を機械による読み取り可能形態
とするために要する変換処理がより少なくて済むからで
ある。更に、符号化されたコンピュータプログラム命令
が低レベル形態へブレークダウンされればされるほど、
命令シーケンスを実行する命令解釈システムを簡素化で
きることになる。また、低水準符号化コンピュータプロ
グラミング命令は、高水準符号化形態では不可能な詳細
制御情報を与えることができるので、デバッグが行われ
るような状況下に適している。
【0004】以上の説明より、符号化コンピュータプロ
グラミング命令における各水準は、それぞれ他の水準で
は得られない固有の利点をもつことが理解される。従っ
て、プログラマーにとっては、高水準言語の形態で適用
プログラムを生成し、その後適用プログラムの高水準記
述を低水準形態に変換して特定のコンピュータハードウ
ェア内で適用プログラムを迅速に実行すると共にデバッ
グ処理性能を向上させるという手順が好適となる。この
ため、コンパイラは、高水準符号化プログラミング命令
を低レベル命令へ変換するように構成されている。先に
列挙した高水準プログラミング言語の各々は、高水準プ
ログラミング命令をコンピュータ内での実行に適した低
水準形態へ変換するコンパイラまたは解釈プログラムと
協働するようになっている。
グラミング命令における各水準は、それぞれ他の水準で
は得られない固有の利点をもつことが理解される。従っ
て、プログラマーにとっては、高水準言語の形態で適用
プログラムを生成し、その後適用プログラムの高水準記
述を低水準形態に変換して特定のコンピュータハードウ
ェア内で適用プログラムを迅速に実行すると共にデバッ
グ処理性能を向上させるという手順が好適となる。この
ため、コンパイラは、高水準符号化プログラミング命令
を低レベル命令へ変換するように構成されている。先に
列挙した高水準プログラミング言語の各々は、高水準プ
ログラミング命令をコンピュータ内での実行に適した低
水準形態へ変換するコンパイラまたは解釈プログラムと
協働するようになっている。
【0005】
【発明が解決しようとする課題】低水準コンピュータプ
ログラミング命令を高水準へ変換する逆コンパイラ及び
プログラムも、ある程度開発されている。こうした逆コ
ンパイラは、低水準コンピュータプログラミング命令の
認識されたパターンを高水準形態へ変換する機能をも
つ。しかし、多くの逆コンパイラで生成される高水準形
態は、最初に低水準形態を生成した高水準形態とは同一
にはならないというのが実状であった。従来技術におけ
る符号化構造は、ASCII符号化BASIC命令を機
械コードへ変換する形式であった。この機械コードは、
要求に応じてASCIIコードへ再変換される。この符
号化構成は、命令の表現を変えるに過ぎず、情報の構造
またはフォーマットをより効率よく実行できる形態に解
釈したり変更するものではない。この従来技術構造は、
変換プログラムを提示するにすぎず、実際の変換された
ASCIIテキストに加えて関連情報を記憶するコンパ
イラ構造ではない。
ログラミング命令を高水準へ変換する逆コンパイラ及び
プログラムも、ある程度開発されている。こうした逆コ
ンパイラは、低水準コンピュータプログラミング命令の
認識されたパターンを高水準形態へ変換する機能をも
つ。しかし、多くの逆コンパイラで生成される高水準形
態は、最初に低水準形態を生成した高水準形態とは同一
にはならないというのが実状であった。従来技術におけ
る符号化構造は、ASCII符号化BASIC命令を機
械コードへ変換する形式であった。この機械コードは、
要求に応じてASCIIコードへ再変換される。この符
号化構成は、命令の表現を変えるに過ぎず、情報の構造
またはフォーマットをより効率よく実行できる形態に解
釈したり変更するものではない。この従来技術構造は、
変換プログラムを提示するにすぎず、実際の変換された
ASCIIテキストに加えて関連情報を記憶するコンパ
イラ構造ではない。
【0006】コンパイラは、ASN.1抽象構文を構文
テーブル等の中間形態へ翻訳するものとして知られてい
る。構文テーブルは、構文木が記憶されるデータ構造で
ある。構文テーブルは、その後実行時間ライブラリルー
チンによる制御の下で、直接実行される。他の周知のコ
ンパイラでは、ASN.1抽象構文をCデータ構造へ変
換し、またASN.1基礎符号化規則(BER)値に対
してCデータ構造の符号化及び複号化を行うためのCプ
ログラム言語を発生する。しかし、これら従来のAS
N.1コンパイラは、中間形態から原高水準テキスト形
態を派生させるために高水準形態を適切な中間形態へ変
換することは行わない。
テーブル等の中間形態へ翻訳するものとして知られてい
る。構文テーブルは、構文木が記憶されるデータ構造で
ある。構文テーブルは、その後実行時間ライブラリルー
チンによる制御の下で、直接実行される。他の周知のコ
ンパイラでは、ASN.1抽象構文をCデータ構造へ変
換し、またASN.1基礎符号化規則(BER)値に対
してCデータ構造の符号化及び複号化を行うためのCプ
ログラム言語を発生する。しかし、これら従来のAS
N.1コンパイラは、中間形態から原高水準テキスト形
態を派生させるために高水準形態を適切な中間形態へ変
換することは行わない。
【0007】周知の従来構文では、命令シーケンスの機
械言語へのコンパイルには、少なくとも2つのプログラ
ムシーケンスのコピーを維持する必要がある。即ち、一
のコピーはプログラムの各水準に対するものである。こ
れは、コンパイルされた形態から原形態を復元するの
は、若干の例外を除いて不可能だからである。機械実行
可能性の低い形態から原高機械実行性の形態への変換が
不可能なのは、中間形態には特定(具体的な)構造情報
が存在しないからである。従来の機械実行可能な形態
は、中間形態表現の相互関係を定める情報が欠落してい
る。
械言語へのコンパイルには、少なくとも2つのプログラ
ムシーケンスのコピーを維持する必要がある。即ち、一
のコピーはプログラムの各水準に対するものである。こ
れは、コンパイルされた形態から原形態を復元するの
は、若干の例外を除いて不可能だからである。機械実行
可能性の低い形態から原高機械実行性の形態への変換が
不可能なのは、中間形態には特定(具体的な)構造情報
が存在しないからである。従来の機械実行可能な形態
は、中間形態表現の相互関係を定める情報が欠落してい
る。
【0008】従来システムでは、高水準抽象型定義、具
体的にはASN.1特定抽象型定義を解釈プログラムで
使用する中間形態へ変換するための手段を備えていなか
った。これにより、中間形態は原高水準形態へ逆変換さ
れることとなる。ASN.1符号化された抽象型定義を
用いる時は、デジタルイクイップメント社により提供さ
れ当業者に周知のサービスブラウザ(DECdns ブ
ラウザ)と命名され普及している解釈手段を用いて、与
えられ指名された目的に関する値を直接表示することが
望ましい。また、対応抽象型定義を再コンパイリングす
ることなく与えられた対象物に対応した値を直接表示及
び変更できることが望ましい。更に、抽象型定義を逆コ
ンパイルし、これによって中間水準に符号化された抽象
型定義からより高い形態の抽象型定義を再生成できるこ
とが望ましい。
体的にはASN.1特定抽象型定義を解釈プログラムで
使用する中間形態へ変換するための手段を備えていなか
った。これにより、中間形態は原高水準形態へ逆変換さ
れることとなる。ASN.1符号化された抽象型定義を
用いる時は、デジタルイクイップメント社により提供さ
れ当業者に周知のサービスブラウザ(DECdns ブ
ラウザ)と命名され普及している解釈手段を用いて、与
えられ指名された目的に関する値を直接表示することが
望ましい。また、対応抽象型定義を再コンパイリングす
ることなく与えられた対象物に対応した値を直接表示及
び変更できることが望ましい。更に、抽象型定義を逆コ
ンパイルし、これによって中間水準に符号化された抽象
型定義からより高い形態の抽象型定義を再生成できるこ
とが望ましい。
【0009】
【課題を解決するための手段】本発明は、抽出構文を高
水準から解釈方法に適した中間水準へ変換するための方
法を提供するものである。高水準形態は、通常の高水準
プログラミング言語の時間節約プログラミングという効
果を提供するものである。高水準抽象型定義は、解釈方
法によってハードウェア上で実行されるのには適してい
ない。しかし、中間水準形態であれば、ASN.1解釈
者により周知の解釈方法で使用されるASN.1テキス
トに特定された抽象型定義符号化の形態を提供できる。
水準から解釈方法に適した中間水準へ変換するための方
法を提供するものである。高水準形態は、通常の高水準
プログラミング言語の時間節約プログラミングという効
果を提供するものである。高水準抽象型定義は、解釈方
法によってハードウェア上で実行されるのには適してい
ない。しかし、中間水準形態であれば、ASN.1解釈
者により周知の解釈方法で使用されるASN.1テキス
トに特定された抽象型定義符号化の形態を提供できる。
【0010】「対象物」とは、確認でき、且つデイレク
トリデータベース内に情報を保持したいものである。対
象物の「類」とは、共有特徴をもつ対象物の組である。
「属性」は、対象物に関しそしてその対象を記載したエ
ントリーに現れる特定形式の情報である。「属性タイ
プ」は、その属性によって与えられる情報の類を示す属
性成分である。「属性値」とは、属性タイプによって示
された情報の類の特性の例である。本発明のコンパイラ
の文脈中の「属性構文」は、各属性に対するその下位に
あるASN.1データ型を記載した定義の組である。
トリデータベース内に情報を保持したいものである。対
象物の「類」とは、共有特徴をもつ対象物の組である。
「属性」は、対象物に関しそしてその対象を記載したエ
ントリーに現れる特定形式の情報である。「属性タイ
プ」は、その属性によって与えられる情報の類を示す属
性成分である。「属性値」とは、属性タイプによって示
された情報の類の特性の例である。本発明のコンパイラ
の文脈中の「属性構文」は、各属性に対するその下位に
あるASN.1データ型を記載した定義の組である。
【0011】ここに記載した本発明装置は、ユーザに対
して抽象定義を示す及び/または変更可能とする既存A
SN.1コンパイラへの改良に関する。本発明を実施し
た装置プログラムのユーザは、これらの改良を装置プロ
グラム内に含まれた抽象型へ入力し、この装置プログラ
ムは解釈モードで作動する。ここで述べる装置及び方法
は、「ソフトスキーマ」と呼ばれる特殊な特徴を与える
ために対象物のデイレクトリに使用されるのに適してい
る。ソフトスキーマは、解釈モード中に作動するコンピ
ュータ内で実行されるのに適したフォーマットで抽象型
定義を表すことを可能にし、これはプログラマが既存抽
象型定義を変更するかシステムに新たな抽象型定義を付
加する時に、抽象型定義の再コンパイルまたは再リンク
を必要としないような方法で行われる。本発明のこの利
点は、新たな属性に対する抽象型定義が特定されるか或
いは対象物に対する前の既存の属性に対する抽象型定義
が変更される時にはいつでも装置の再コンパイル及び再
リンクを必要とするコンパイル形態とは異なり、対象物
に対する既存属性をデバッグ及び変更するときにプログ
ラマーにかなりの時間節約を可能とする。装置を再コン
パイル及び再リンクすることは常に可能とは限らず、例
えばもし装置が顧客側で展開されてしまっているときは
できない。従って、ソフトスキーマは、前述のネットワ
ークデイレクトリのユーザに対してかなりの利益を提供
するものである。
して抽象定義を示す及び/または変更可能とする既存A
SN.1コンパイラへの改良に関する。本発明を実施し
た装置プログラムのユーザは、これらの改良を装置プロ
グラム内に含まれた抽象型へ入力し、この装置プログラ
ムは解釈モードで作動する。ここで述べる装置及び方法
は、「ソフトスキーマ」と呼ばれる特殊な特徴を与える
ために対象物のデイレクトリに使用されるのに適してい
る。ソフトスキーマは、解釈モード中に作動するコンピ
ュータ内で実行されるのに適したフォーマットで抽象型
定義を表すことを可能にし、これはプログラマが既存抽
象型定義を変更するかシステムに新たな抽象型定義を付
加する時に、抽象型定義の再コンパイルまたは再リンク
を必要としないような方法で行われる。本発明のこの利
点は、新たな属性に対する抽象型定義が特定されるか或
いは対象物に対する前の既存の属性に対する抽象型定義
が変更される時にはいつでも装置の再コンパイル及び再
リンクを必要とするコンパイル形態とは異なり、対象物
に対する既存属性をデバッグ及び変更するときにプログ
ラマーにかなりの時間節約を可能とする。装置を再コン
パイル及び再リンクすることは常に可能とは限らず、例
えばもし装置が顧客側で展開されてしまっているときは
できない。従って、ソフトスキーマは、前述のネットワ
ークデイレクトリのユーザに対してかなりの利益を提供
するものである。
【0012】本発明は、概略的には抽象構文表記法1
(ASN.1)を中間水準符号化形態から高水準テキス
ト形態ASN.1定義へ変換するための方法及び装置に
関するもので、前記中間水準符号化ASN.1定義を受
信及び記憶するメモリ手段と、前記中間水準符号化AS
N.1定義を前記高水準テキスト形態ASN.1定義へ
変換するための逆コンパイラ手段と、前記メモリ手段と
逆コンパイラ手段とを接続するためのバス手段と、を含
む。
(ASN.1)を中間水準符号化形態から高水準テキス
ト形態ASN.1定義へ変換するための方法及び装置に
関するもので、前記中間水準符号化ASN.1定義を受
信及び記憶するメモリ手段と、前記中間水準符号化AS
N.1定義を前記高水準テキスト形態ASN.1定義へ
変換するための逆コンパイラ手段と、前記メモリ手段と
逆コンパイラ手段とを接続するためのバス手段と、を含
む。
【0013】
【作用】本発明に使用されている特定プログラミング言
語は、コンピュータプログラミング技術では抽象構文表
記法1(ASN.1)として知られている。ASN.1
は、抽象データタイプを定めるためのフォーマルツール
として使用される。ASN.1は、抽象タイプ定義を定
めるためにのみ用いられ、該タイプと値を定めるにのみ
十分な大きさの語彙をもつに過ぎないという点で、C及
びパスカル等の周知プログラミング言語とは異なる。
語は、コンピュータプログラミング技術では抽象構文表
記法1(ASN.1)として知られている。ASN.1
は、抽象データタイプを定めるためのフォーマルツール
として使用される。ASN.1は、抽象タイプ定義を定
めるためにのみ用いられ、該タイプと値を定めるにのみ
十分な大きさの語彙をもつに過ぎないという点で、C及
びパスカル等の周知プログラミング言語とは異なる。
【0014】転送構文は、ASN.1言語中で特定され
た各抽象型定義に含まれるタイプの値を符号化するため
の規則の組を与えるものである。このような転送構文の
一つが、周知の基本符号化規則(BER)転送構文であ
る。ここで述べる機能は、高水準形態を介しては使用で
きない中間形態のユーザに与えられる。付加された実行
性能利点に加え、本発明に係る中間形態は、DECdn
s ブラウザ、X.500 ブラウザユーチリテイ及び
他の類似ユーテイリテイを使用することにより、ユーザ
に対して関連抽象型定義情報を表示及び変更するための
より効果的な方法を提供するものである。
た各抽象型定義に含まれるタイプの値を符号化するため
の規則の組を与えるものである。このような転送構文の
一つが、周知の基本符号化規則(BER)転送構文であ
る。ここで述べる機能は、高水準形態を介しては使用で
きない中間形態のユーザに与えられる。付加された実行
性能利点に加え、本発明に係る中間形態は、DECdn
s ブラウザ、X.500 ブラウザユーチリテイ及び
他の類似ユーテイリテイを使用することにより、ユーザ
に対して関連抽象型定義情報を表示及び変更するための
より効果的な方法を提供するものである。
【0015】DECdns製品は、コンピュータシステ
ムにおける対象物に関する情報を含んだデイレクトリサ
ービスである。「DECdns ブラウザ」は、ユーザ
に対してデイレクトリデータベースを検査することを可
能にするDECdnsと共に使用される表示ツールであ
る。DEC X.500製品は、X.500、または国
際標準機構(ISO 9594)、国際標準に従って実
行されるデイレクトリサービスである。「X.500デ
イレクトリ」は、コンピュータシステムにおける対象物
に関する情報の保存部である。この保存情報は、デイレ
クトリ情報ベース(DIB)中に含まれている。デイレ
クトリ中の各対象物は、それに関する属性組を有する。
これらの属性は、対象物の特性を表したものである。各
属性値は、特定の属性構文に合致している。DEC
X.500ブラウザは、デイレクトリ情報木(DIT)
中のデイレクトリエントリを対話形式で検査する表示ツ
ールである。
ムにおける対象物に関する情報を含んだデイレクトリサ
ービスである。「DECdns ブラウザ」は、ユーザ
に対してデイレクトリデータベースを検査することを可
能にするDECdnsと共に使用される表示ツールであ
る。DEC X.500製品は、X.500、または国
際標準機構(ISO 9594)、国際標準に従って実
行されるデイレクトリサービスである。「X.500デ
イレクトリ」は、コンピュータシステムにおける対象物
に関する情報の保存部である。この保存情報は、デイレ
クトリ情報ベース(DIB)中に含まれている。デイレ
クトリ中の各対象物は、それに関する属性組を有する。
これらの属性は、対象物の特性を表したものである。各
属性値は、特定の属性構文に合致している。DEC
X.500ブラウザは、デイレクトリ情報木(DIT)
中のデイレクトリエントリを対話形式で検査する表示ツ
ールである。
【0016】プログラマは、抽象型定義を視認したい時
に、プログラムを高い水準へ変換することができる。高
水準形態は通常プログラマにとってもっとも習熟したも
のであるから、抽象型定義がその形態で表されることが
プログラマにとって適切である。本発明における逆コン
パイラは中間形態から原高水準形態を発生する性能を持
つので、現時点で符号化された命令の単一のコピーのみ
が任意時点で必要とされることとなる。これにより、記
憶スペースを大幅に節約できることとなる。更に、種々
の水準形態で表されたプログラムの多コピー間に生じる
純一性の問題が回避される。
に、プログラムを高い水準へ変換することができる。高
水準形態は通常プログラマにとってもっとも習熟したも
のであるから、抽象型定義がその形態で表されることが
プログラマにとって適切である。本発明における逆コン
パイラは中間形態から原高水準形態を発生する性能を持
つので、現時点で符号化された命令の単一のコピーのみ
が任意時点で必要とされることとなる。これにより、記
憶スペースを大幅に節約できることとなる。更に、種々
の水準形態で表されたプログラムの多コピー間に生じる
純一性の問題が回避される。
【0017】DEC普及命名サービス(DECdns)
及びDECのX.500デイレクトリ実行サービス双方
において、コンパイラはASN.1データタイプ仕様言
語で特定された高水準形態の抽象型定義を中間形態へ変
換する。X.500デイレクトリサービスのDECバー
ジョンでは、中間形態はX.500デイレクトリスキー
マ内に記憶される。DECdnsでは、中間形態はDE
Cdnsデータベース自体内に記憶される。高水準形態
は中間形態から復元されるので、ASN.1符号化抽象
型定義の高水準は、中間形態が生成された後に保存され
る必要はない。中間形態は、より早い照明によってDE
C X.500デイレクトリ更新サービスの向上した実
行を提供する。その属性値は、それらに対して特定され
た抽象型定義に対して正確且つ完全に割当て設定され且
つ合致する。加えて、新たな抽象型定義は、X.500
スキーマまたはDECdnsデイレクトリに付加するこ
とができ、その各ブラウザユーテイリテイで使用するこ
とができる。X.500スキーマの場合、属性構文は、
X.500またはDECdnsアプリケーション及びブ
ラウザを再コンパイル/再リンクする必要なく実行され
る。
及びDECのX.500デイレクトリ実行サービス双方
において、コンパイラはASN.1データタイプ仕様言
語で特定された高水準形態の抽象型定義を中間形態へ変
換する。X.500デイレクトリサービスのDECバー
ジョンでは、中間形態はX.500デイレクトリスキー
マ内に記憶される。DECdnsでは、中間形態はDE
Cdnsデータベース自体内に記憶される。高水準形態
は中間形態から復元されるので、ASN.1符号化抽象
型定義の高水準は、中間形態が生成された後に保存され
る必要はない。中間形態は、より早い照明によってDE
C X.500デイレクトリ更新サービスの向上した実
行を提供する。その属性値は、それらに対して特定され
た抽象型定義に対して正確且つ完全に割当て設定され且
つ合致する。加えて、新たな抽象型定義は、X.500
スキーマまたはDECdnsデイレクトリに付加するこ
とができ、その各ブラウザユーテイリテイで使用するこ
とができる。X.500スキーマの場合、属性構文は、
X.500またはDECdnsアプリケーション及びブ
ラウザを再コンパイル/再リンクする必要なく実行され
る。
【0018】先に述べたように、本発明に使用される目
的の特定解析プログラムは、DEC分布命名サービス
(DECdns)ブラウザである。これは、対象物の階
層命名スペースをサーチするためにデジタルイクイップ
メント社により提供されている周知のユーテイリテイで
あり、これらの目的に対する名前と属性を表示する。そ
して、当業界では周知でありX.500デイレクトリ中
の目的のサーチ及び目的の名前及び属性を表示するため
に使用されるX.500ブラウザのDECのインプリメ
ンテーションである。これらの各ユーテイリテイにより
提供される解釈機能は、非タイプ型バイト列へ構造及び
フォーマットを適用することであり、これによって非タ
イプ型バイト列が一組のタイプ型フィールドに変換され
る。一方、これによってDNS及びX.500ユーテイ
リテイのユーザは属性値を効率的且つユーザによってフ
レンドリな形態で表示することが可能となる。更に、本
発明は、属性に対して特定された抽象型定義の効率良い
実行を介してX.500デイレクトリ更新サービスをよ
り高速度で実行するために使用される。
的の特定解析プログラムは、DEC分布命名サービス
(DECdns)ブラウザである。これは、対象物の階
層命名スペースをサーチするためにデジタルイクイップ
メント社により提供されている周知のユーテイリテイで
あり、これらの目的に対する名前と属性を表示する。そ
して、当業界では周知でありX.500デイレクトリ中
の目的のサーチ及び目的の名前及び属性を表示するため
に使用されるX.500ブラウザのDECのインプリメ
ンテーションである。これらの各ユーテイリテイにより
提供される解釈機能は、非タイプ型バイト列へ構造及び
フォーマットを適用することであり、これによって非タ
イプ型バイト列が一組のタイプ型フィールドに変換され
る。一方、これによってDNS及びX.500ユーテイ
リテイのユーザは属性値を効率的且つユーザによってフ
レンドリな形態で表示することが可能となる。更に、本
発明は、属性に対して特定された抽象型定義の効率良い
実行を介してX.500デイレクトリ更新サービスをよ
り高速度で実行するために使用される。
【0019】
【実施例】本発明の好適な実施例を示した図1におい
て、ASN.1定義のテキストバージョンは、適切なコ
ンピュータのメモリへ入力され、これによってコンパイ
ル処理の実行、中間水準符号化形態を使用する対話型ユ
ーザプログラムの支持、そして当業者にとって周知の方
法で中間形態からASN.1の高水準テキスト形態の再
発生を実行する。このように、本発明を記載するために
使用される一般的コンピュータ装置は、説明の便宜上使
用されたものであり、他の適切なコンピュータシステム
も当業者には周知である。
て、ASN.1定義のテキストバージョンは、適切なコ
ンピュータのメモリへ入力され、これによってコンパイ
ル処理の実行、中間水準符号化形態を使用する対話型ユ
ーザプログラムの支持、そして当業者にとって周知の方
法で中間形態からASN.1の高水準テキスト形態の再
発生を実行する。このように、本発明を記載するために
使用される一般的コンピュータ装置は、説明の便宜上使
用されたものであり、他の適切なコンピュータシステム
も当業者には周知である。
【0020】システムユーザは、高水準テキストAS
N.1定義をユーザインターフェース2を介してシステ
ムバス8によってコンピュータ施設6のメモリユニット
4へ入力する。以下に述べるコンパイル処理を援用する
ための適切なコマンドを受信すると、中央処理装置(C
PU)10は、バス8上のASN.1定義の高水準テキ
スト形態をCPU10の局部メモリ12へ転送する。そ
の後、CPU10は以下に述べるコンパイルルーチンを
実行し、高水準形態ASN.1定義の中間BER符号化
形態を生成する。次いで、CPU10はシステムバス8
上の中間水準ASN.1定義を局部メモリ12からメモ
リユニット4へ戻すよう転送する。
N.1定義をユーザインターフェース2を介してシステ
ムバス8によってコンピュータ施設6のメモリユニット
4へ入力する。以下に述べるコンパイル処理を援用する
ための適切なコマンドを受信すると、中央処理装置(C
PU)10は、バス8上のASN.1定義の高水準テキ
スト形態をCPU10の局部メモリ12へ転送する。そ
の後、CPU10は以下に述べるコンパイルルーチンを
実行し、高水準形態ASN.1定義の中間BER符号化
形態を生成する。次いで、CPU10はシステムバス8
上の中間水準ASN.1定義を局部メモリ12からメモ
リユニット4へ戻すよう転送する。
【0021】中間形態のユニークな特質である原高水準
テキスト形態を再発生する性能により、任意時点におい
てASN.1定義の単一コピーのみを維持するという有
利なオプションをコンピュータ装置へ提供することにな
る。従って、CPU10は、中間形態を発生した後、A
SN.1定義の原高水準テキスト形態を廃棄する。CP
U10はユーザインターフェース2及びシステムバス8
と協働し、ユーザに対してASN.1定義の中間形態を
使用するための幾つかの周知アプリケーションを提供す
る。これらのアプリケーションは、後にもっと完全に説
明する。
テキスト形態を再発生する性能により、任意時点におい
てASN.1定義の単一コピーのみを維持するという有
利なオプションをコンピュータ装置へ提供することにな
る。従って、CPU10は、中間形態を発生した後、A
SN.1定義の原高水準テキスト形態を廃棄する。CP
U10はユーザインターフェース2及びシステムバス8
と協働し、ユーザに対してASN.1定義の中間形態を
使用するための幾つかの周知アプリケーションを提供す
る。これらのアプリケーションは、後にもっと完全に説
明する。
【0022】システムユーザに提供される一つの選択
は、中間形態からのASN.1定義の原高水準形態を再
発生するという選択である。システムバス8上に適切な
コマンドを受信すると、CPU10は以下に述べる一組
の逆コンパイルルーチンによって中間水準形態を原高水
準テキスト形態(原コメントなく)へ変換する。もしユ
ーザが望むのであれば、ASN.1定義の高水準形態は
メモリ4中に保存され、そして中間水準形態は演算装置
6によって廃棄されることとなる。
は、中間形態からのASN.1定義の原高水準形態を再
発生するという選択である。システムバス8上に適切な
コマンドを受信すると、CPU10は以下に述べる一組
の逆コンパイルルーチンによって中間水準形態を原高水
準テキスト形態(原コメントなく)へ変換する。もしユ
ーザが望むのであれば、ASN.1定義の高水準形態は
メモリ4中に保存され、そして中間水準形態は演算装置
6によって廃棄されることとなる。
【0023】ASN.1表記法の概要 抽象構文表記法1(ASN.1)は、抽象型定義を特定
するための周知の標準であり、これらは抽象構文とも呼
ばれる。この標準は、プログラマによって一組のデータ
構造プリミテイブから複合データタイプを特定するため
に使用される。ASN.1は、国際標準化機構(IS
O)により国際標準として形式化され、国際電気技術委
員会により採用されてきた。
するための周知の標準であり、これらは抽象構文とも呼
ばれる。この標準は、プログラマによって一組のデータ
構造プリミテイブから複合データタイプを特定するため
に使用される。ASN.1は、国際標準化機構(IS
O)により国際標準として形式化され、国際電気技術委
員会により採用されてきた。
【0024】ASN.1は、BOOLEAN(ブー
ル)、INTEGER(整数)、BITSTRING
(ビット列)、OCTETSTRING(オクテット
列)、そして他のプリミテイブデータタイプを含む。A
SN.1はまた、SEQUENCE(シーケンス)、S
ET(セット)、CHOICE(チョイス)、SEQU
ENCE OF)(シーケンスオブ)、及びSET O
F(セットオブ)等のコンストラクターデータタイプも
含む。“SEQUENCE”データタイプは、PASC
AL“record" に対する。SEQUENCEは、所定組
のフィールドを含む。SEQUENCEを用いて、プロ
グラマは他のタイプの任意シリーズから新たなタイプを
構築する。SEQUENCE OFはSEQUENCE
に類似した他のタイプであるが、それぞれが同じタイプ
の0またはそれ以上の値の任意に定められた長さのシリ
ーズである点が異なる。“CHOICE”構造は、定義
中に列挙された特定タイプのリストから値を選択するこ
とを提供するものである。“SET”タイプはSEQU
ENCEに類似している。しかし、SET構造は、フィ
ールドを任意の順序で現出させる。SET OFはSE
QUENCE OFに類似しているが、SET OF構
造は値を任意の順序で現れさせる点が異なる。最後に、
NULLタイプは空値即ち無を表すASN.1タイプで
ある。これら予め定められた各タイプは、許容された産
業標準において記載された所定のタッグを有する。AS
N.1ユーザが予め定められたタイプの一から派生した
新たなタイプを特定すると、新たなタイプは予め定めら
れたタイプと同じタッグをもつこととなる。或いは、ユ
ーザは派生したタグへ新たなタグを割り当てることもで
きる。
ル)、INTEGER(整数)、BITSTRING
(ビット列)、OCTETSTRING(オクテット
列)、そして他のプリミテイブデータタイプを含む。A
SN.1はまた、SEQUENCE(シーケンス)、S
ET(セット)、CHOICE(チョイス)、SEQU
ENCE OF)(シーケンスオブ)、及びSET O
F(セットオブ)等のコンストラクターデータタイプも
含む。“SEQUENCE”データタイプは、PASC
AL“record" に対する。SEQUENCEは、所定組
のフィールドを含む。SEQUENCEを用いて、プロ
グラマは他のタイプの任意シリーズから新たなタイプを
構築する。SEQUENCE OFはSEQUENCE
に類似した他のタイプであるが、それぞれが同じタイプ
の0またはそれ以上の値の任意に定められた長さのシリ
ーズである点が異なる。“CHOICE”構造は、定義
中に列挙された特定タイプのリストから値を選択するこ
とを提供するものである。“SET”タイプはSEQU
ENCEに類似している。しかし、SET構造は、フィ
ールドを任意の順序で現出させる。SET OFはSE
QUENCE OFに類似しているが、SET OF構
造は値を任意の順序で現れさせる点が異なる。最後に、
NULLタイプは空値即ち無を表すASN.1タイプで
ある。これら予め定められた各タイプは、許容された産
業標準において記載された所定のタッグを有する。AS
N.1ユーザが予め定められたタイプの一から派生した
新たなタイプを特定すると、新たなタイプは予め定めら
れたタイプと同じタッグをもつこととなる。或いは、ユ
ーザは派生したタグへ新たなタグを割り当てることもで
きる。
【0025】ASN.1標準はまた、基本符号化規則
(BER)をも特定する。ASN.1標準(ISO 8
824)は、抽象型及び値を特定するための表記法を提
供するものである。BERは、ASN.1中に特定され
た型と値を符号化するための一組の規則を与えるもので
ある。 中間形態の記載 下に掲げた表Aに記載した中間形態のための抽象構文定
義は、本発明の好適な実施例に対する中間形態を提供す
るものである。表AにおいてASN.1の定義は、IS
O国際標準(ISO 8824,1987)の Annex F
から再生された以下に示す表Bに記載されたISO標準
で使用された製品から派生したものでありる。これらの
構文定義は、ASN.1表記法の形態で記載され、中間
形態の抽象型を記載したものである。
(BER)をも特定する。ASN.1標準(ISO 8
824)は、抽象型及び値を特定するための表記法を提
供するものである。BERは、ASN.1中に特定され
た型と値を符号化するための一組の規則を与えるもので
ある。 中間形態の記載 下に掲げた表Aに記載した中間形態のための抽象構文定
義は、本発明の好適な実施例に対する中間形態を提供す
るものである。表AにおいてASN.1の定義は、IS
O国際標準(ISO 8824,1987)の Annex F
から再生された以下に示す表Bに記載されたISO標準
で使用された製品から派生したものでありる。これらの
構文定義は、ASN.1表記法の形態で記載され、中間
形態の抽象型を記載したものである。
【0026】 表A 中間形態に対する構文定義 ASN1項目列 ::= オクテット列 タイプ基準 ::= [0] 暗黙 ASN1項目列 識別子 ::= [1] 暗黙 ASN1項目列 値基準 ::= [2] 暗黙 ASN1項目列 モジュール基準 ::= [3] 暗黙 ASN1項目列 番号 ::= [4] 暗黙 ASN1項目列 B列 ::= [5] 暗黙 ASN1項目列 H列 ::= [6] 暗黙 ASN1項目列 C列 ::= [7] 暗黙 ASN1項目列 モジュール定義 ::= シーケンス { モジュール基準 モジュールボデイ } モジュールボデイ ::= シーケンス { チョイス { [0] 割当リスト [1] 0 } } 割当リスト ::= 割当の シーケンス ::= チョイス { [0] 暗黙 タイプ割当 [1] 暗黙 値割当 } 外部タイプ基準 ::= シーケンス { モジュール基準、 タイプ基準 } 外部値基準 ::= シーケンス { モジュール基準、 値基準 } 定義タイプ ::= シーケンス { チョイス { [0] 暗黙外部タイプ基準 [1] 暗黙タイプ基準 } } 定義値 ::= シーケンス { チョイス { [0] 暗黙外部値基準 [1] 暗黙値基準 } } タイプ割当 ::= シーケンス { タイプ基準、 タイプ } 値割当 ::= シーケンス { 値基準、 シーケンス { タイプ、 値 } } タイプ ::= シーケンス { チョイス { [0] 暗黙組込タイプ [1] 暗黙特定タイプ } } 組込タイプ ::= シーケンス { チョイス { −−各組込タイプに対して一 [0]暗黙 ブールタイプ [1]暗黙 整数タイプ [2]暗黙 ビット列タイプ [3]暗黙 オクテット列タイプ [4]暗黙 ゼロタイプ [5]暗黙 シーケンスタイプ [6]暗黙 シーケンスオブタイプ [7]暗黙 セットタイプ [8]暗黙 セットオブタイプ [9]暗黙 チョイスタイプ [10]暗黙 選択タイプ [11]暗黙 タッグタイプ [12]暗黙 任意タイプ [13]暗黙 対象物確認タイプ [14]暗黙 文字列タイプ [15]暗黙 有用タイプ } } 命名タイプ::= シーケンス { チョイス { [0]暗黙 名前タイプ [1]暗黙 タイプ [2]暗黙 選択タイプ } } 名前タイプ ::=シーケンス { 名前、 タイプ } 値 ::=シーケンス { チョイス { [0]暗黙 組込値 [1]暗黙 特定値 } } 組込値 ::=シーケンス { オクテット列、 −−文字列相当 オクテット列 −−第1タッグなし。
【0027】 −−ASN1値。第1タッグは、 −−実際の使用から発生する。 } ブールタイプ ::=0 整数タイプ ::=シーケンス{ チョイス{ [0]暗黙0 −−プレーン整数 [1]暗黙 命名数リスト −−命名整数 } } 命名数リスト ::=命名数のシーケンス 命名 ::=シーケンス{ 識別子、 チョイス{ [0]暗黙 サイン番号、 [1]暗黙 特定値 } } サイン番号 ::=番号 −− −ve及び+ve 双方に対して使用される −− 番号 ビット列タイプ ::=シーケンス{ チョイス { [0] 暗黙ゼロ −−プレーンビット列 [1] 暗黙命名ビットリスト −−命名ビット列 } } 命名ビットリスト ::=命名ビットシーケンス 命名ビット ::=シーケンス{ 識別子、 チョイス{ [0] 暗黙番号、 [1] 暗黙特定値 } } オクテット列タイプ ::=ゼロ ゼロタイプ ::=ゼロ シーケンスタイプ ::=シーケンス{ チョイス{ [0] 暗黙エレメントタイプリスト [1] 暗黙ゼロ −−空シーケンス } } エレメントタイプリスト ::=エレメントタイプのシーケンス −−少なくとも一のエレメントが存在 エレメントタイプ ::=シーケンス{ チョイス { [0] 暗黙命名タイプ [1] 暗黙命名タイプ、 −−選択エレメント [2] 暗黙シーケンス{ 命名タイプ 値 } −−欠陥エレメント [3] 暗黙タイプ −−の要素 } } シーケンスオブタイプ ::=シーケンス{ チョイス { [0] 暗黙タイプ、 [1] 暗黙ゼロ } } セットタイプ ::=シーケンス{ チョイス{ [0]暗黙エレメントタイプリスト [1]暗黙ゼロ −−空セット } } セットオブタイプ ::=シーケンス{ チョイス{ [0]暗黙タイプ [1]暗黙ゼロ } } −−セットタイプ及びシーケンスタイプは −−同じ定義を持つ −−セットオブタイプ及びシーケンスオブタイプは −−同じ定義を持つ チョイスタイプ ::=代替(択一)タイプリスト 代替タイプリスト ::=命名タイプのシーケンス 選択タイプ ::=シーケンス { 識別子、 タイプ } タグタイプ ::=シーケンス{ チョイス { [0] 暗黙タグタイプ、 [1] 暗黙タグタイプ −−暗黙タグ } } タグタイプ ::=シーケンス{ タグ、 タイプ } タグ ::=シーケンス{ クラス、 クラス番号 } クラス番号 ::=シーケンス{ チョイス{ [0] 暗黙番号、 [1] 暗黙特定値 } } クラス ::=整数{汎用 (0)、アプリケーション(1) 、 文脈−特定 (2)、プライベート(3) } 任意タイプ ::=ゼロ 対象別識別子タイプ ::=ゼロ 文字列タイプ ::=タイプ基準 有用タイプ ::=タイプ基準 表B ASN.1表記法の概要 以下の各項目は、ISO8824標準(1987)の第8節に特定されたもの である: タイプ基準 ( 任意 識別子 ) 外部 値基準 [ 対象物 モジュール基準 ] 識別子 コメント − オプション 空 ブール 省略 数 整数 要素 b列 ビット 汎用 h列 列 アプリケーション c列 オクテット プライベート ”::=” ゼロ 真 { シーケンス 偽 } オブ 開始 < セット 終了 , 暗黙 定義 . チョイス 次の製品は、上記の各項目を端末記号として、この国際標準に用いられたもの である: モジュール定義 ::=モジュール基準 定義 ”::=” 開始 モジュールボデイ 終了 モジュールボデイ ::=割当リスト|空 割当リスト ::=割当 | 割当リスト、割当 割当 ::=タイプ割当|値割当 外部タイプ基準 ::=モジュール基準 . タイプ基準 外部値基準 ::=モジュール基準 . 値基準 定義タイプ ::=外部タイプ基準|タイプ基準 定義値 ::=外部値基準|タイプ基準 タイプ割当 ::=タイプ基準 ”::=” タイプ 値割当 ::=値基準 タイプ ”::=” 値 タイプ ::=組込タイプ|特定タイプ 組込タイプ ::=ブールタイプ | 整数タイプ | ビット列タイプ | オクテット列タイプ | ゼロタイプ | シーケンスタイプ | シーケンスオブタイプ | セットタイプ | セットオブタイプ | チョイスタイプ | 選択タイプ | タグタイプ | 任意 | 対象物識別子タイプ | 文字列タイプ | 有用タイプ | 命名タイプ ::=識別子タイプ|タイプ|選択タイプ 値 ::=組み込み値|被定義値 組み込み値 ::=ブール値 | 整数値 | ビット列値 | オクテット列値 | ゼロ値 | シーケンス値 | シーケンスオブ値 | セット値 | セットオブ値 | チョイス値 | 選択値 | タッグ値 | 任意値 | 対象物識別値 | 文字列値 命名値 ::=識別子 値|値 ブールタイプ ::=ブール ブール値 ::=真|偽 整数タイプ ::=整数|整数{命名数リスト} 命名数リスト ::=命名数| 命名数リスト、命名数 命名数 ::=識別子(サイン数)| 識別子(被定義値) サイン数 ::=数|−数 整数値 ::=サイン数|識別子 ビット列タイプ ::=ビット列|ビット列{命名ビットリスト} 命名ビットリスト ::=命名ビット|命名ビットリスト、命名ビット 命名ビット ::=識別子(数) | 識別子(被定義値) ビット列値 ::=b列|h列{識別子リスト}|{} 識別子リスト ::=識別子 | 識別子リスト、識別子 オクテット列タイプ ::=オクテット列 オクテット列値 ::=b列|h列 ゼロタイプ ::=ゼロ ゼロ値 ::=ゼロ シーケンスタイプ ::=シーケンス{エレメントタイプリスト}| シーケンス{} エレメントタイプリスト ::=エレメントタイプ | エレメントタイプリスト、エレメントタイプ エレメントタイプ ::=命名タイプ | 命名タイプ オプション| 命名タイプ省略値 | タイプの要素 シーケンス値 ::={エレメント値リスト}|{} エレメント値リスト ::=命名値| エレメント値リスト、命名値 シーケンスオブタイプ ::=タイプ|シーケンスのシーケンス シーケンスオブ値 ::={値リスト}|{} 値リスト ::=値|値リスト、値 セットタイプ ::=セット{エレメントタイプリスト}|セット{}セット 値 ::={エレメント値リスト}|{} セットオブタイプ ::=タイプ|セットのセット セットオブ値 ::={値リスト}|{} チョイスタイプ ::=チョイス{代替タイプリスト} 代替タイプリスト ::=命名タイプ | 代替タイプリスト、命名タイプ チョイス値 ::=命名値 選択タイプ ::=識別子<タイプ 選択値 ::=命名値 タグタイプ ::=タグタイプ|タグ暗黙タイプ タグ ::=[クラス クラス番号] クラス番号 ::=数|被定義値 クラス ::=汎用|応用|個人|空 タグ値 ::=値 任意タイプ ::=任意 任意値 ::=タイプ値 目的識別子タイプ ::=目的識別子 目的識別子値 ::={目的識別要素リスト} | {被定義値 目的識別子要素リスト} 目的識別子要素リスト ::=目的識別子要素 目的識別子要素 目的識別子要素リスト 目的識別子要素 ::=名前形式|番号形式|名前及び番号形式| 名前形式 ::=識別子 番号形式 ::=番号|被定義値 名前及び番号形式 ::=識別子(番号形式) 文字列タイプ ::=タイプ基準 文字列値 ::=c列 有用タイプ ::=タイプ基準 しかしながら、当業者であれば、この定義リストは、本
発明の範囲から逸脱することなく拡大、縮小、または変
更可能であることが容易に理解されよう。更にASN.
1標準は今後変更される可能性もあり、またこれらの変
更を組み入れるための中間形態コンパイラに変更が加え
られることも当業者にとっては周知である。
発明の範囲から逸脱することなく拡大、縮小、または変
更可能であることが容易に理解されよう。更にASN.
1標準は今後変更される可能性もあり、またこれらの変
更を組み入れるための中間形態コンパイラに変更が加え
られることも当業者にとっては周知である。
【0028】定義の中間形態は、図3に示したASN.
1BER標準タイプ(またタグとも呼ばれる)、長さ、
値(TLV)フォーマットに従って表される。タイプフ
ィールドまたはタグは、値フィールド内に含まれる符号
化データタイプを指定する。タイプフィールドの内容
は、表A内に列挙された定義中における可能な選択リス
トの選択をも示す。長さフィールドは、特定値フィール
ドの端部を見いだす前に残存しているバイト数を示す。
最後に、値フィールドは、特定タグに係る値を含む。図
3より明らかなように、BER値がネストされる。この
ようにして、与えられた抽象型定義に対する構文木の再
帰的構造が維持される。タグ、長さ及び値フィールド
は、ASN.1抽象型定義の中間形態の図示例を参照し
つつ後に詳述する。
1BER標準タイプ(またタグとも呼ばれる)、長さ、
値(TLV)フォーマットに従って表される。タイプフ
ィールドまたはタグは、値フィールド内に含まれる符号
化データタイプを指定する。タイプフィールドの内容
は、表A内に列挙された定義中における可能な選択リス
トの選択をも示す。長さフィールドは、特定値フィール
ドの端部を見いだす前に残存しているバイト数を示す。
最後に、値フィールドは、特定タグに係る値を含む。図
3より明らかなように、BER値がネストされる。この
ようにして、与えられた抽象型定義に対する構文木の再
帰的構造が維持される。タグ、長さ及び値フィールド
は、ASN.1抽象型定義の中間形態の図示例を参照し
つつ後に詳述する。
【0029】本発明の好適な実施例において、中間形態
は基本符号化規則(BER)に従って符号化される。当
業者であれば、本発明の範囲内で符号化規則(即ち転送
構文)の異なる組を用いて中間形態を生成する。表A中
のASN.1定義と表B中に特定された生成規則との間
の並列関係の一つの例外が、組込値タイプに関して存在
する。生成規則からすれば、チョイス構造を含むために
組込値に対するASN.1定義が予測される。しかし、
組込値として特定された値定義に対しては、中間形態か
ら高水準形態を再発生させるためには、完全構文木は不
要である。
は基本符号化規則(BER)に従って符号化される。当
業者であれば、本発明の範囲内で符号化規則(即ち転送
構文)の異なる組を用いて中間形態を生成する。表A中
のASN.1定義と表B中に特定された生成規則との間
の並列関係の一つの例外が、組込値タイプに関して存在
する。生成規則からすれば、チョイス構造を含むために
組込値に対するASN.1定義が予測される。しかし、
組込値として特定された値定義に対しては、中間形態か
ら高水準形態を再発生させるためには、完全構文木は不
要である。
【0030】中間形態には、一般的に2つの使用方法が
ある。まず第1は、中間形態から高水準形態を再発生す
ることである。第2に、中間形態を用いて種々の機能を
実行することである。組込型に対する構文木は、第2の
目的を達成するために必要であるから、捕捉される。し
かし、組み込み値に対しては、定義により特定されたB
ER値のみが第2の目的を達成するために必要である。
加えて、値を特定する対応テキストは、中間形態から原
テキストの再生を容易化するために捕捉されなければな
らない。従って、本発明の好適な実施例では、情報のう
ちこれら2つの情報片だけが、組込値に対する中間形態
にあらわされる。
ある。まず第1は、中間形態から高水準形態を再発生す
ることである。第2に、中間形態を用いて種々の機能を
実行することである。組込型に対する構文木は、第2の
目的を達成するために必要であるから、捕捉される。し
かし、組み込み値に対しては、定義により特定されたB
ER値のみが第2の目的を達成するために必要である。
加えて、値を特定する対応テキストは、中間形態から原
テキストの再生を容易化するために捕捉されなければな
らない。従って、本発明の好適な実施例では、情報のう
ちこれら2つの情報片だけが、組込値に対する中間形態
にあらわされる。
【0031】表Aに列挙されたASN.1構文定義の中
で、組込値は2個のフィールドから成るシーケンスを含
む。組み込み値に対するASN.1定義中の各フィール
ドは、オクセット列であった。第1フィールドは、特定
された値に相当する文字列を含む。第2フィールドは、
第1、トップレベル、タグなしの特定された組込値に対
するBERを含む。このように、真のブール値に対し、
組込値の2個のフィールドは、「真」を表す文字列であ
り、真に対応するBER値である。
で、組込値は2個のフィールドから成るシーケンスを含
む。組み込み値に対するASN.1定義中の各フィール
ドは、オクセット列であった。第1フィールドは、特定
された値に相当する文字列を含む。第2フィールドは、
第1、トップレベル、タグなしの特定された組込値に対
するBERを含む。このように、真のブール値に対し、
組込値の2個のフィールドは、「真」を表す文字列であ
り、真に対応するBER値である。
【0032】表Aに列挙された残存構文定義は、AS
N.1モジュールに対する構文木構造に対応する。従っ
て、ASN.1モジュールの構文木表現をたどるのと同
じ方法でBER値を解析することにより、定義に対する
BER値から高水準形態を再生することが容易となる。
中間水準からの高水準テキスト形態の再生については後
述する。
N.1モジュールに対する構文木構造に対応する。従っ
て、ASN.1モジュールの構文木表現をたどるのと同
じ方法でBER値を解析することにより、定義に対する
BER値から高水準形態を再生することが容易となる。
中間水準からの高水準テキスト形態の再生については後
述する。
【0033】ASN.1モジュールに対する中間形態
は、表Aに特定されたモジュール定義型である。モジュ
ール定義は、2個のフィールドを含むシーケンスであ
る。第1フィールドである「モジュール基準」は、モジ
ュールの名前を含む。第2フィールドはモジュールボデ
イタイプであり、これは名前の付けられたモジュールの
現在の内容を含むフィールドのシーケンスである。内容
は、前記割当リストASN.1構造またはゼロの形態
(もしモジュール内にタイプまたは値割当が存在しない
ならば)であり、内容は[CONT 0]または[CO
NT 1]のいずれかでそれぞれタグされる。[CON
T]は、文脈特定タッグを示す。
は、表Aに特定されたモジュール定義型である。モジュ
ール定義は、2個のフィールドを含むシーケンスであ
る。第1フィールドである「モジュール基準」は、モジ
ュールの名前を含む。第2フィールドはモジュールボデ
イタイプであり、これは名前の付けられたモジュールの
現在の内容を含むフィールドのシーケンスである。内容
は、前記割当リストASN.1構造またはゼロの形態
(もしモジュール内にタイプまたは値割当が存在しない
ならば)であり、内容は[CONT 0]または[CO
NT 1]のいずれかでそれぞれタグされる。[CON
T]は、文脈特定タッグを示す。
【0034】割当リストに対する中間形態は、「割当」
タイプのシーケンスである。このタイプの構造は、割当
リストタイプによって特定される。割当リストタイプの
BER値内に含まれる割当のリストは、「割当」タイプ
の形態でコンパイラにより個々に構成される。これらの
個々の割当は、その後「シーケンスオブ」ASN.1構
造の形態で集合される。
タイプのシーケンスである。このタイプの構造は、割当
リストタイプによって特定される。割当リストタイプの
BER値内に含まれる割当のリストは、「割当」タイプ
の形態でコンパイラにより個々に構成される。これらの
個々の割当は、その後「シーケンスオブ」ASN.1構
造の形態で集合される。
【0035】表A中の「割当」の定義にもどり、このA
SN.1定義は、タイプA割当または値A割当の何れか
のチョイスタイプから構成され、タイプまたは値に対す
る定義の割当を表す。もしタイプA割当が特定のAS
N.1抽象型定義に対して指定されるならば、定義に対
する中間形態は、2個のフィールドを有するシーケンス
を含む。第1のフィールドは、「タイプ基準」型であ
り、特定ASN.1タイプ定義の高水準表現の左側に配
置されたタイプ定義の名前を保持する。第2フィールド
は、「タイプ」型であり、このフィールドはタイプ割当
の左側における名前の付けられた抽象定義に対応した定
義の右側上に実際の定義を含む。定義内における「タイ
プ」フィールドの更なる分解は、当業者に周知の方法で
表Aに記載されたASN.1定義に従ってネストされた
付加BER値の仕様によって達成される。
SN.1定義は、タイプA割当または値A割当の何れか
のチョイスタイプから構成され、タイプまたは値に対す
る定義の割当を表す。もしタイプA割当が特定のAS
N.1抽象型定義に対して指定されるならば、定義に対
する中間形態は、2個のフィールドを有するシーケンス
を含む。第1のフィールドは、「タイプ基準」型であ
り、特定ASN.1タイプ定義の高水準表現の左側に配
置されたタイプ定義の名前を保持する。第2フィールド
は、「タイプ」型であり、このフィールドはタイプ割当
の左側における名前の付けられた抽象定義に対応した定
義の右側上に実際の定義を含む。定義内における「タイ
プ」フィールドの更なる分解は、当業者に周知の方法で
表Aに記載されたASN.1定義に従ってネストされた
付加BER値の仕様によって達成される。
【0036】このほか、もし値割当が特定抽象タイプ定
義に対して指定されたならば、定義に対する中間形態は
2個のフィールドを有するシーケンスを含む。第1のフ
ィールドは、「値基準タイプ」であり、特定ASN.1
値定義の高水準表現の左側上に配置された値の名前を保
持する。第2のフィールドは、他のシーケンスを含む。
このシーケンスは、更に2つのフィールドを含む。第1
のフィールドは、値割当の左側で名前の付けられた抽象
定義に対応した定義の右側上に実際のタイプ定義を含む
「タイプ」型である。第2のフィールドは、定義のハイ
レベルテキスト形態内における”::=”記号の右手側
上に特定された実際の値を含む。これは、特定値タイプ
または組込値タイプの何れかのフィールドを含む。値割
当の第2フィールドの第1及び第2サブフィールド双方
は、表A中に特定された定義の教示内容に基づき当業者
であれば知ることのできる方法で表A中に特定されたA
SN.1構文定義に従って適切なBER値で満たされて
いる。
義に対して指定されたならば、定義に対する中間形態は
2個のフィールドを有するシーケンスを含む。第1のフ
ィールドは、「値基準タイプ」であり、特定ASN.1
値定義の高水準表現の左側上に配置された値の名前を保
持する。第2のフィールドは、他のシーケンスを含む。
このシーケンスは、更に2つのフィールドを含む。第1
のフィールドは、値割当の左側で名前の付けられた抽象
定義に対応した定義の右側上に実際のタイプ定義を含む
「タイプ」型である。第2のフィールドは、定義のハイ
レベルテキスト形態内における”::=”記号の右手側
上に特定された実際の値を含む。これは、特定値タイプ
または組込値タイプの何れかのフィールドを含む。値割
当の第2フィールドの第1及び第2サブフィールド双方
は、表A中に特定された定義の教示内容に基づき当業者
であれば知ることのできる方法で表A中に特定されたA
SN.1構文定義に従って適切なBER値で満たされて
いる。
【0037】以下の図示した入力値を検討する: コンパイルプロセスの記録 ASN.1割当(タイプまたは値)のリストであるAS
N.1モジュールである入力を考慮し、我々はモジュー
ルに対する中間形態を発生させようとしているとする。
一般に、コンパイレーションプロセスには「コンパイ
ラ:原理、技術、及びツール」(著者 A. Aho, R. Seth
i 及び Jeffrey D. Ullman;出版社 Addison-Wesley Pu
b. Co.(1986))の第1章に記載されたように周知
の先行コンパイラ形態が続く。図2において、ハイレベ
ルASN.1抽象タイプ定義を中間形態へ変換するため
のステップが描かれている。抽象タイプ定義の高水準表
現を中間形態へ変換するための第1ステップS1は、A
SN.1テキストを解析することである。パーサは、抽
象構文に対する入力テキストを受信し、ASN.1原タ
イプのネステイングを反映する必要があるときに見いだ
され枝分かれした各タイプに対するノードを生成するこ
とによって入力テキストの構文木表現を生成する。構文
木の形態は、表Bに特定された文法に一致する。
N.1モジュールである入力を考慮し、我々はモジュー
ルに対する中間形態を発生させようとしているとする。
一般に、コンパイレーションプロセスには「コンパイ
ラ:原理、技術、及びツール」(著者 A. Aho, R. Seth
i 及び Jeffrey D. Ullman;出版社 Addison-Wesley Pu
b. Co.(1986))の第1章に記載されたように周知
の先行コンパイラ形態が続く。図2において、ハイレベ
ルASN.1抽象タイプ定義を中間形態へ変換するため
のステップが描かれている。抽象タイプ定義の高水準表
現を中間形態へ変換するための第1ステップS1は、A
SN.1テキストを解析することである。パーサは、抽
象構文に対する入力テキストを受信し、ASN.1原タ
イプのネステイングを反映する必要があるときに見いだ
され枝分かれした各タイプに対するノードを生成するこ
とによって入力テキストの構文木表現を生成する。構文
木の形態は、表Bに特定された文法に一致する。
【0038】その後、コンパイラは、意味解析ステップ
S3中にタイプ導出及び意味チェックを実行する時に構
文木を変更する。このステップS3では、コンパイラは
抽象構文及び特定情報例に係るデータタイプを定める。
パーサ段中に発生し得るエラーは、パーサによって受信
された入力がASN.1語彙または文法また構文に従わ
ないか合致しない時に生じるものである。パーサにより
フラッグを立てられるエラーの例として、ワード「シー
ケンス」のスペルミスや、”{”A::=シーケンス
ブールなどのASN.1記述において}”の欠落などが
挙げられる。タイプ導出及び意味解析中のエラーは、入
力がASN.1標準中に特定されている意味と合致しな
い時に発生するものである。構文及び意味エラー双方
は、当業者にとって周知である。
S3中にタイプ導出及び意味チェックを実行する時に構
文木を変更する。このステップS3では、コンパイラは
抽象構文及び特定情報例に係るデータタイプを定める。
パーサ段中に発生し得るエラーは、パーサによって受信
された入力がASN.1語彙または文法また構文に従わ
ないか合致しない時に生じるものである。パーサにより
フラッグを立てられるエラーの例として、ワード「シー
ケンス」のスペルミスや、”{”A::=シーケンス
ブールなどのASN.1記述において}”の欠落などが
挙げられる。タイプ導出及び意味解析中のエラーは、入
力がASN.1標準中に特定されている意味と合致しな
い時に発生するものである。構文及び意味エラー双方
は、当業者にとって周知である。
【0039】もしコンパイラルーチンの実行中にエラー
が発生した場合には、中間形態はその最終形態で生成さ
れることはないことに留意されなければならない。中間
形態は、中間形態から入力テキストを再生し得るという
意味で、入力の変形等価である。パーサにより発生した
構文木は、構文解析段が完了した時の高水準入力形態に
忠実である。その後、構文木は、タイプ導出及び意味解
析の実行によって処理及び変更され、これによってセッ
ト及びシーケンス中における値定義において定められた
値または省略値の例を挙げることとなる。構文木は、本
質的には構文解析段の完了後に入力構文を表すものであ
るが、値定義において定められた値及びセット及びシー
ケンスでの省略値の例は、意味解析段の後ではじめて完
全なものとなる。以後、これらの値は組込値と呼び、表
Aに記載されたデータタイプ組込値に対応する。情報の
両片(構文木及び例)は、中間形態を構築するために必
要とされる。従って、コンパイラは2つの段で中間形態
を構成するこことなる。
が発生した場合には、中間形態はその最終形態で生成さ
れることはないことに留意されなければならない。中間
形態は、中間形態から入力テキストを再生し得るという
意味で、入力の変形等価である。パーサにより発生した
構文木は、構文解析段が完了した時の高水準入力形態に
忠実である。その後、構文木は、タイプ導出及び意味解
析の実行によって処理及び変更され、これによってセッ
ト及びシーケンス中における値定義において定められた
値または省略値の例を挙げることとなる。構文木は、本
質的には構文解析段の完了後に入力構文を表すものであ
るが、値定義において定められた値及びセット及びシー
ケンスでの省略値の例は、意味解析段の後ではじめて完
全なものとなる。以後、これらの値は組込値と呼び、表
Aに記載されたデータタイプ組込値に対応する。情報の
両片(構文木及び例)は、中間形態を構築するために必
要とされる。従って、コンパイラは2つの段で中間形態
を構成するこことなる。
【0040】もしコンパイラが構文解析中に何等のエラ
ーも検出しなかったときは、制御はここで「第1パス」
中間形態発生と呼ばれるコンパイレーション処理の段へ
移る。この段では、抽象タイプ型定義の「予備中間形
態」が構成される。この段は図2のステップS2で示さ
れている。 中間形態−パス1 第1パスステップS2では、予備中間形態が構文木を移
動することによりそしてタイプモジュール定義のAS
N.1BER値を生成することによって構成される。入
力ASN.1抽象タイプ定義の構文構造は、構文木に忠
実に反映されている。この結果、タイプモジュール定義
のASN.1BER値を構成することは容易となる。一
組のルーチンが存在しており、その各々が表A中の各定
義に対応している。各ルーチンは、特定定義に対する予
備中間形態を構成し、予備中間形態をコーラーに戻す。
これらのルーチンは、以後「生成」ルーチンと呼ぶ。こ
のようにして、タイプ「モジュール定義」に対応した生
成ルーチンが、モジュール定義に対する予備中間形態を
構成し、タイプ「タイプ」に対する生成ルーチンがタイ
プに対する予備中間形態を発生する等の処理が行われ
る。
ーも検出しなかったときは、制御はここで「第1パス」
中間形態発生と呼ばれるコンパイレーション処理の段へ
移る。この段では、抽象タイプ型定義の「予備中間形
態」が構成される。この段は図2のステップS2で示さ
れている。 中間形態−パス1 第1パスステップS2では、予備中間形態が構文木を移
動することによりそしてタイプモジュール定義のAS
N.1BER値を生成することによって構成される。入
力ASN.1抽象タイプ定義の構文構造は、構文木に忠
実に反映されている。この結果、タイプモジュール定義
のASN.1BER値を構成することは容易となる。一
組のルーチンが存在しており、その各々が表A中の各定
義に対応している。各ルーチンは、特定定義に対する予
備中間形態を構成し、予備中間形態をコーラーに戻す。
これらのルーチンは、以後「生成」ルーチンと呼ぶ。こ
のようにして、タイプ「モジュール定義」に対応した生
成ルーチンが、モジュール定義に対する予備中間形態を
構成し、タイプ「タイプ」に対する生成ルーチンがタイ
プに対する予備中間形態を発生する等の処理が行われ
る。
【0041】これら各生成ルーチンは、前記構文木への
ポインタを受信する。特定ルーチンにより呼び出された
ルーチンは、ポインタにおいて見いだされた記号によっ
て異なる。生成ルーチンは、構文木中の位置を参照する
ポインタを解析し、生成ルーチン組中の他のルーチンを
再帰的に呼び出す。ポインタは、付加ノードが定義へ付
加されると、各再帰呼び出し中に更新される。一方、こ
れらの生成ルーチンは、呼び出し中間形態の予測部分を
発生する。完了後、呼び出されたルーチンは、要求され
た呼び中間形態をコーラーへ戻す。コーラーは、戻され
た中間形態を用いて、生成するよう設計された呼び出し
中間形態の発生を完了する。この処理は、後に図4に示
した構文木の第1パスコンパイレーションの記載に関連
づけた例を用いて説明する。
ポインタを受信する。特定ルーチンにより呼び出された
ルーチンは、ポインタにおいて見いだされた記号によっ
て異なる。生成ルーチンは、構文木中の位置を参照する
ポインタを解析し、生成ルーチン組中の他のルーチンを
再帰的に呼び出す。ポインタは、付加ノードが定義へ付
加されると、各再帰呼び出し中に更新される。一方、こ
れらの生成ルーチンは、呼び出し中間形態の予測部分を
発生する。完了後、呼び出されたルーチンは、要求され
た呼び中間形態をコーラーへ戻す。コーラーは、戻され
た中間形態を用いて、生成するよう設計された呼び出し
中間形態の発生を完了する。この処理は、後に図4に示
した構文木の第1パスコンパイレーションの記載に関連
づけた例を用いて説明する。
【0042】生成ルーチンは、構文木中に示されたのと
同じ呼び出し構造を示す。構文木の枝はトレースされ、
全ての下位枝及び葉がビジットされるまでどの枝も出る
ことはない。これが予測されるのは、構文木構造が意図
的に中間形態中に組み込まれているからである。上述し
た記載は、一つの例外をのぞき、全ての生成ルーチンへ
適用される。この例外とは、タイプ「値」に対応するも
のである。値に対する生成ルーチンの動作は、構文木構
造に従わない。構文木中の値に対応するノードは、
「値」生成ルーチンによって解析され、これによって組
込値または特定値へ拡大するか否かが決定される。もし
それが特定値まで拡大するのであれば、中間形態の再帰
的呼び出し及び構築は、上述のように継続される。もし
それが組み込み値まで拡大するのであれば、生成ルーチ
ンは、その中間形態として一つ素子即ち[CONT 3
0]ゼロを含むシーケンスへ戻る。[CONT 30]
ゼロは、位置ホルダーとして機能する。位置ホルダー
は、第2パス(後述)中に、そのタッグが[CONT
0]でありそのタイプが組込値である実際値と交換され
る。同時に、組込値に対応する構文木ノードへのポイン
タは、ポインタの待ち行列(組込値ポインタ待ち行列と
呼ばれる)へ付加される。この待ち行列は、第2パス中
に位置ホルダー“[CONT 30]0”を正しいデー
タと交換するために使用される。もし組込値ポインタ待
ち行列が第1パス終端で空であれば、第2パスは実行さ
れる必要がない。
同じ呼び出し構造を示す。構文木の枝はトレースされ、
全ての下位枝及び葉がビジットされるまでどの枝も出る
ことはない。これが予測されるのは、構文木構造が意図
的に中間形態中に組み込まれているからである。上述し
た記載は、一つの例外をのぞき、全ての生成ルーチンへ
適用される。この例外とは、タイプ「値」に対応するも
のである。値に対する生成ルーチンの動作は、構文木構
造に従わない。構文木中の値に対応するノードは、
「値」生成ルーチンによって解析され、これによって組
込値または特定値へ拡大するか否かが決定される。もし
それが特定値まで拡大するのであれば、中間形態の再帰
的呼び出し及び構築は、上述のように継続される。もし
それが組み込み値まで拡大するのであれば、生成ルーチ
ンは、その中間形態として一つ素子即ち[CONT 3
0]ゼロを含むシーケンスへ戻る。[CONT 30]
ゼロは、位置ホルダーとして機能する。位置ホルダー
は、第2パス(後述)中に、そのタッグが[CONT
0]でありそのタイプが組込値である実際値と交換され
る。同時に、組込値に対応する構文木ノードへのポイン
タは、ポインタの待ち行列(組込値ポインタ待ち行列と
呼ばれる)へ付加される。この待ち行列は、第2パス中
に位置ホルダー“[CONT 30]0”を正しいデー
タと交換するために使用される。もし組込値ポインタ待
ち行列が第1パス終端で空であれば、第2パスは実行さ
れる必要がない。
【0043】しかし、コンパイラは、入力にエラーがな
いことを確認するために他の段も実行しなければならな
い。これが行われて初めて、予備中間形態が正しいとみ
なすことができる。コンパイラは、不適切な入力に対し
ては中間形態を発生しない。従って、もしコンパイラが
タイプ導出段または意味解析段でエラーを発生したとき
は、コンパイラは中間形態を廃棄する。
いことを確認するために他の段も実行しなければならな
い。これが行われて初めて、予備中間形態が正しいとみ
なすことができる。コンパイラは、不適切な入力に対し
ては中間形態を発生しない。従って、もしコンパイラが
タイプ導出段または意味解析段でエラーを発生したとき
は、コンパイラは中間形態を廃棄する。
【0044】図示的な目的のため、図4に示した構文木
を考える。モジュール定義のための発生木ルーチンは、
ノート1における構文木を参照するポインタで呼び出さ
れる。モジュール定義に対する生成ルーチンは、2つの
フィールドから成るシーケンスであるモジュール定義に
対する予備中間形態、「モジュール基準」に対する予備
中間形態、そしてタイプ「モジュールボデイ」に対する
予備中間形態を発生する。このルーチンが、ノード1.
1へのポインタでモジュール基準に対する生成ルーチン
を呼び出す。モジュール基準に対する生成ルーチンは、
モジュール基準に対する予備中間形態へ戻る。次に、モ
ジュール定義に対する生成ルーチンが、ノード1.2を
参照したポインタでモジュールボデイに対する生成ルー
チンを呼び出す。モジュールボデイに対する生成ルーチ
ンは、モジュールボデイに対する予備中間形態へ戻る。
生成ルーチンにより戻されたモジュール基準及びモジュ
ールボデイに対するこれら2個の中間値は、モジュール
定義に対するシーケンス内のフィールドとして組み込ま
れ、モジュール定義生成ルーチンを呼び出したルーチン
へ戻される。
を考える。モジュール定義のための発生木ルーチンは、
ノート1における構文木を参照するポインタで呼び出さ
れる。モジュール定義に対する生成ルーチンは、2つの
フィールドから成るシーケンスであるモジュール定義に
対する予備中間形態、「モジュール基準」に対する予備
中間形態、そしてタイプ「モジュールボデイ」に対する
予備中間形態を発生する。このルーチンが、ノード1.
1へのポインタでモジュール基準に対する生成ルーチン
を呼び出す。モジュール基準に対する生成ルーチンは、
モジュール基準に対する予備中間形態へ戻る。次に、モ
ジュール定義に対する生成ルーチンが、ノード1.2を
参照したポインタでモジュールボデイに対する生成ルー
チンを呼び出す。モジュールボデイに対する生成ルーチ
ンは、モジュールボデイに対する予備中間形態へ戻る。
生成ルーチンにより戻されたモジュール基準及びモジュ
ールボデイに対するこれら2個の中間値は、モジュール
定義に対するシーケンス内のフィールドとして組み込ま
れ、モジュール定義生成ルーチンを呼び出したルーチン
へ戻される。
【0045】次に、モジュール基準に対する生成ルーチ
ンを考慮する。このルーチンは、「テストモジュール」
である現在値により、タイプモジュール基準のBER値
を生成する。このようにして、タグは、[CONT
3]またはA3H(16進数)となり、長さは0AHと
なり、値は「テストモジュール」となる。今、モジュー
ルボデイに対する生成ルーチンを考える。このルーチン
は、ノード1.2を検査し、モジュールボデイが割当リ
ストまでまたは構文木中の空まで拡大しているかどうか
を定めるために内容を解析する。図示例では、ポインタ
は割当リストを参照している。モジュールボデイ生成ル
ーチンは、ポインタがノード1.2.1を参照した状態
で、割当リストに対する生成ルーチンを再帰的に呼び出
す。割当リストにい対する生成ルーチンへの呼び出しが
完了すると、そのタグが[CONT 0]であり、その
長さが呼び出しから割当リストに対する生成ルーチンへ
戻る値の長さであり、その値が呼び出し中の戻った値で
ある、一の素子のシーケンス値が構成され戻される。一
方、空まで拡大し、その後一の素子のシーケンス値とな
り、そのタグが[CONT 1]であり、その長さが0
であり、その値が存在しないモジュールボデイ(モジュ
ール中に定義が存在しないときに発生する)が戻され
る。
ンを考慮する。このルーチンは、「テストモジュール」
である現在値により、タイプモジュール基準のBER値
を生成する。このようにして、タグは、[CONT
3]またはA3H(16進数)となり、長さは0AHと
なり、値は「テストモジュール」となる。今、モジュー
ルボデイに対する生成ルーチンを考える。このルーチン
は、ノード1.2を検査し、モジュールボデイが割当リ
ストまでまたは構文木中の空まで拡大しているかどうか
を定めるために内容を解析する。図示例では、ポインタ
は割当リストを参照している。モジュールボデイ生成ル
ーチンは、ポインタがノード1.2.1を参照した状態
で、割当リストに対する生成ルーチンを再帰的に呼び出
す。割当リストにい対する生成ルーチンへの呼び出しが
完了すると、そのタグが[CONT 0]であり、その
長さが呼び出しから割当リストに対する生成ルーチンへ
戻る値の長さであり、その値が呼び出し中の戻った値で
ある、一の素子のシーケンス値が構成され戻される。一
方、空まで拡大し、その後一の素子のシーケンス値とな
り、そのタグが[CONT 1]であり、その長さが0
であり、その値が存在しないモジュールボデイ(モジュ
ール中に定義が存在しないときに発生する)が戻され
る。
【0046】図4の構文木の枝に対する第1パスコンパ
イレーション処理の一部のみが記載されたが、予備中間
形態を構成する第1パスコンパイラは、第1パスコンパ
イレーションのこの部分記載により予め記載された方法
で図4に示された構文木の各ノードにおいて順次調査す
る。各ノードからの枝は、図4の構文木の左から右へビ
ジットされる。枝は、全ての下位枝がビジットされるま
で出ない。 タイプ導出 コンパイリング処理の第1パス段S2が終わった後、コ
ンパイリング処理タイプ導出段が、当業者に周知の方法
により、コンパイリング処理のステップS3を含む意味
解析段の第1部分で実行される。タイプ導出段中、コン
パイラは、パーサにより生成された構文木を移動し、フ
ォワード基準のトラックを保持し、そして全てのフォワ
ード及び外部基準を導出する。タイプ導出処理は、当業
者にとって周知である。構文木を下位へ移動する間、コ
ンパイラは外部定義表と共にローカルに対して各記号を
チェックする。タイプ導出段近傍において、全ての記号
名は、その適切な値/タイプ記号アドレスに合致しなけ
ればならない。もしいずれかの未導出基準が残存してい
る場合は、当業者にとって周知な方法で適切な警告が発
せられる。 意味チェック 意味解析ステップS3中、コンパイラはパーサにより予
め生成された構文木を移動し、タイプと値がISO国際
基準(ISO 8824,1987)中に特定された意
味と合致しているかどうか確認する。意味解析プログラ
ムは、値記号のタイプを満たす。コンパイラ処理のこの
段の出力は、ISO標準(ISO 8824,198
7)中に記載された規則に合致しないタイプ及び値に対
するエラーメッセージの発生として現れる。
イレーション処理の一部のみが記載されたが、予備中間
形態を構成する第1パスコンパイラは、第1パスコンパ
イレーションのこの部分記載により予め記載された方法
で図4に示された構文木の各ノードにおいて順次調査す
る。各ノードからの枝は、図4の構文木の左から右へビ
ジットされる。枝は、全ての下位枝がビジットされるま
で出ない。 タイプ導出 コンパイリング処理の第1パス段S2が終わった後、コ
ンパイリング処理タイプ導出段が、当業者に周知の方法
により、コンパイリング処理のステップS3を含む意味
解析段の第1部分で実行される。タイプ導出段中、コン
パイラは、パーサにより生成された構文木を移動し、フ
ォワード基準のトラックを保持し、そして全てのフォワ
ード及び外部基準を導出する。タイプ導出処理は、当業
者にとって周知である。構文木を下位へ移動する間、コ
ンパイラは外部定義表と共にローカルに対して各記号を
チェックする。タイプ導出段近傍において、全ての記号
名は、その適切な値/タイプ記号アドレスに合致しなけ
ればならない。もしいずれかの未導出基準が残存してい
る場合は、当業者にとって周知な方法で適切な警告が発
せられる。 意味チェック 意味解析ステップS3中、コンパイラはパーサにより予
め生成された構文木を移動し、タイプと値がISO国際
基準(ISO 8824,1987)中に特定された意
味と合致しているかどうか確認する。意味解析プログラ
ムは、値記号のタイプを満たす。コンパイラ処理のこの
段の出力は、ISO標準(ISO 8824,198
7)中に記載された規則に合致しないタイプ及び値に対
するエラーメッセージの発生として現れる。
【0047】意味解析は、本発明の中間形態発生に適合
される。図5中に一つが示されているようにISO標準
(ISO 8824,1987)中の生成規則「組込
値::=...」に対応した構文木中のノードに対して
は、2つの付加情報片が発生されてこの構文木へ付加さ
れる。これらの2つの情報片は、特定値の列等価及び特
定値のBER値と等しい。これら2個の情報片の発生は
簡単であり、当業者にとって周知の適切な方法で達成さ
れ得る。
される。図5中に一つが示されているようにISO標準
(ISO 8824,1987)中の生成規則「組込
値::=...」に対応した構文木中のノードに対して
は、2つの付加情報片が発生されてこの構文木へ付加さ
れる。これらの2つの情報片は、特定値の列等価及び特
定値のBER値と等しい。これら2個の情報片の発生は
簡単であり、当業者にとって周知の適切な方法で達成さ
れ得る。
【0048】このASN.1値定義表現を図示するた
め、以下の値定義を考慮する。 アルファ ブール::=真 上記定義に対する構文木は、図5に示されている。特定
値に対する(即ち、構文木中の組込値ノードに対する)
列等価は、「真」であり、第1タグのないBER値は、
2つの16進バイト01H及び01Hである。 中間形態−パス2 もし、コンパイラ処理の前述の段中にエラーが存在しな
い場合には、コンパイラDは第2パスステップS4を実
行する。前述のように、タイプ組込値の値の構成は、第
2段に据え置かれる。これは、コンパイラが意味解析段
を実行した後でなければ、必要なデータを用いることが
できないからである。第2バス中、コンパイラは、位置
ホルダ値「[CONT 30]0」を現在(実際)値と
交換する。加えて、予備中間形態ASN.1BER値が
トラバースされ、精製された中間形態が同時に構成され
る。精製された中間形態は、実際値を位置ホルダ値と交
換することを除いて、予備中間形態と同じである。実際
値は、当業者にとって周知の方法で交換可能である。
め、以下の値定義を考慮する。 アルファ ブール::=真 上記定義に対する構文木は、図5に示されている。特定
値に対する(即ち、構文木中の組込値ノードに対する)
列等価は、「真」であり、第1タグのないBER値は、
2つの16進バイト01H及び01Hである。 中間形態−パス2 もし、コンパイラ処理の前述の段中にエラーが存在しな
い場合には、コンパイラDは第2パスステップS4を実
行する。前述のように、タイプ組込値の値の構成は、第
2段に据え置かれる。これは、コンパイラが意味解析段
を実行した後でなければ、必要なデータを用いることが
できないからである。第2バス中、コンパイラは、位置
ホルダ値「[CONT 30]0」を現在(実際)値と
交換する。加えて、予備中間形態ASN.1BER値が
トラバースされ、精製された中間形態が同時に構成され
る。精製された中間形態は、実際値を位置ホルダ値と交
換することを除いて、予備中間形態と同じである。実際
値は、当業者にとって周知の方法で交換可能である。
【0049】予備中間形態のトラバースは、バイト毎の
トラバースではなく、当業者にとって周知の対応タグを
調べることによるシーケンスを開くことによる構造的ト
ラバース(ASN.1BER値は、構造値である)であ
る。予備中間形態中に「[CONT 30]0」が存在
するときにはいつも、組込値タイプのタグ[CONT
0]を持つ値が精製中間形態中に配置される。組込値タ
イプの値を構成するために必要な情報は、前記組込値ポ
インタ待ち行列中の第1ポインタにより参照される。ポ
インタは、組込値に対応する構文木中のノードを指標づ
けする。
トラバースではなく、当業者にとって周知の対応タグを
調べることによるシーケンスを開くことによる構造的ト
ラバース(ASN.1BER値は、構造値である)であ
る。予備中間形態中に「[CONT 30]0」が存在
するときにはいつも、組込値タイプのタグ[CONT
0]を持つ値が精製中間形態中に配置される。組込値タ
イプの値を構成するために必要な情報は、前記組込値ポ
インタ待ち行列中の第1ポインタにより参照される。ポ
インタは、組込値に対応する構文木中のノードを指標づ
けする。
【0050】意味解析の結果、このノード基準は2片の
情報、即ちBER値の「T」またはタグフィールドなし
の組み込み値及びASN.1値の列等価を参照する。こ
れら2つのエレメントを含むシーケンス値が構成され
る。コンパイラは、この値に[CONT 0]のタグを
割り当て、そして位置ホルダ[CONT 30]0の代
わりに精製中間形態へタグを挿入する。組込値ポインタ
待ち行列中のポインタ値を参照するポインタは、待ち行
列中で次のポインタへ進む。
情報、即ちBER値の「T」またはタグフィールドなし
の組み込み値及びASN.1値の列等価を参照する。こ
れら2つのエレメントを含むシーケンス値が構成され
る。コンパイラは、この値に[CONT 0]のタグを
割り当て、そして位置ホルダ[CONT 30]0の代
わりに精製中間形態へタグを挿入する。組込値ポインタ
待ち行列中のポインタ値を参照するポインタは、待ち行
列中で次のポインタへ進む。
【0051】第2パスの終端部において、全ての[CO
NT 30]0位置ホルダーが予備中間形態中の実際値
と交換され、待ち行列からの全てのポインタが使用さ
れ、そして組込値ポインタの待ち行列は空となる。 高水準抽象型定義に対する中間形態の詳細説明 次のASN.1モジュール例を考える。 図4は、テストモジュールのハイレベル表現の中間表現
に対する最終構文木構造を描いたものである。以下に与
えられた16進数ビット組は、メモリ中に線形記憶され
た16進数形態でのASN.1モジュールに対する中間
形態を表す。この表現は、図6及び7に示した前記抽象
タイプ定義の符号化中間形態の図示表現と関連づけて見
ると最もよく理解できる。
NT 30]0位置ホルダーが予備中間形態中の実際値
と交換され、待ち行列からの全てのポインタが使用さ
れ、そして組込値ポインタの待ち行列は空となる。 高水準抽象型定義に対する中間形態の詳細説明 次のASN.1モジュール例を考える。 図4は、テストモジュールのハイレベル表現の中間表現
に対する最終構文木構造を描いたものである。以下に与
えられた16進数ビット組は、メモリ中に線形記憶され
た16進数形態でのASN.1モジュールに対する中間
形態を表す。この表現は、図6及び7に示した前記抽象
タイプ定義の符号化中間形態の図示表現と関連づけて見
ると最もよく理解できる。
【0052】 30 38 A3 01 54 65 73 74 4D 6F 64 75 6C 65 A0 28 A0 26 A0 08 54 65 73 74 54 79 70 65 30 1C A0 1A A5 18 A0 16 30 08 A0 06 A1 04 A0 02 A0 00 30 0A A0 08 A1 06 A0 04 A1 02 A0 00 図6及び7は、中間水準16進数形態内で符号化されA
SN.1BER値として記憶された前記高水準抽象タイ
プ定義の2つの異なるネスト状関係を描いたものであ
る。図6は、ASN.1BER値のネスト状関係(TL
V形態の)を示したものである。図7は、中間形態の使
用者にとって使用できる幾つかの解釈機能の内の一を実
行するために中間形態中に記憶されたASN.1BER
値が解釈された時に、処理呼び出しの各水準で実行され
る時折ネストされた処理呼び出し及びチョイスの順序を
示すものである。これらの特別機能は、以下に述べる。
ラベル(A,B,C,...,a,b,c等)を実際の
タイプ定義名に変換するためのレジェンドを図8に示
す。図8のレジェンドは、図6及び7双方における明確
な図を表すための手段を与えるものであり、それらが対
応するタイプに対する実際の符号化された値(タグとよ
ばれる)を表すものではない。
SN.1BER値として記憶された前記高水準抽象タイ
プ定義の2つの異なるネスト状関係を描いたものであ
る。図6は、ASN.1BER値のネスト状関係(TL
V形態の)を示したものである。図7は、中間形態の使
用者にとって使用できる幾つかの解釈機能の内の一を実
行するために中間形態中に記憶されたASN.1BER
値が解釈された時に、処理呼び出しの各水準で実行され
る時折ネストされた処理呼び出し及びチョイスの順序を
示すものである。これらの特別機能は、以下に述べる。
ラベル(A,B,C,...,a,b,c等)を実際の
タイプ定義名に変換するためのレジェンドを図8に示
す。図8のレジェンドは、図6及び7双方における明確
な図を表すための手段を与えるものであり、それらが対
応するタイプに対する実際の符号化された値(タグとよ
ばれる)を表すものではない。
【0053】図6において、高水準ASN.1型定義の
図示した組の中間形態はシーケンスに対応したタグフィ
ールドで開始する。これは、モジュール定義がシーケン
ス(3016進数または30H)であるからである。内
容フィールドのレジェンド(抽象タイプ定義の残存部分
を構成する)は38Hである。抽象タイプ定義に対する
内容フィールドは、モジュール定義タイプシーケンスの
第1フィールドで開始する。第1フィールドは、モジュ
ール基準タイプである。このフィールドに対するタグは
A3Hである。理由は、モジュール基準は[3]AS
N.1項目列タイプであり、[3]または[CONT
3]はA3Hへ変換するからである。第1フィールドの
長さは10バイト(0AH)であり、これはモジュール
名前「テストモジュール」の機械符号化テキスト形態を
記憶するために使用されるバイト数に対応する。このフ
ィールドの内容は、「テストモジュール」列のASCI
I符号化形態である。第2フィールドは、モジュールボ
デイ形態である。これはシーケンスであり、割当リスト
の一フィールドでその内部でネストした。このフィール
ドに対するタグは、A0Hである。理由は、モジュール
ボデイがシーケンス{チョイス{[0]割当リスト
[1]0}}であり、割当リストチョイスは、それに伴
うタッグ[0]または[CONT0]を持つからであ
る。[CONT 0]はA0Hに変換する。このフィー
ルドは、割当タイプのシーケンスであり、その内部にネ
ストされた幾つかのエレメントを含む。図示例では、シ
ーケンスはタイプ割当(A0H)の単一エレメントのみ
をもち、その値フィールドはメモリの26Hバイトを占
める。第1フィールドは、長さ08Hのタイプ基準タイ
プ(タイプ基準::=[0]ASN.項目列であるから
タッグはA0H)、及び「テストタイプ」列のASCI
I符号化形態に等しい値により占められる。第2フィー
ルドは、シーケンスであるタイプの型であり、従ってタ
ッグ31Hをもつ。(31H)は、長さ1CHの値を持
つ。シーケンスのタイプフィールドは、その内部にネス
トされた組込タイプ(AOH)の値をもつ。この値に対
するタグフィールドは、A0Hである。というのは、型
の値はシーケンス{チョイス{[0]組込タイプ,
[1]特定タイプ}}であり、組込タイプの値はそれに
伴うタグ[0]または[CONT 0]を持つからであ
る。一方、組込タイプ値は長さ1AHの値を持つ。組込
タイプは、その内部にシーケンスタイプ(A5H)の値
をネストしている。この値は、メモリの18バイトを占
める。このチョイスに対するタグフィールドは、A5H
である。理由は、組込タイプはシーケンス{チョイス
[0]ブールタイプ、...,[5]シーケンスタイ
プ...}}であり、シーケンスタイプ値はそれに対応
するタグ[5]または[CONT5]をもつからであ
る。[CONT 5]は、機械コード化された16進数
値A5Hに対応する。シーケンスタイプ値は、その内部
にエレメントタイプリスト(A0H)の値をネストして
いる。この値は、メモリの16Hバイトを占めている。
図示した組の中間形態はシーケンスに対応したタグフィ
ールドで開始する。これは、モジュール定義がシーケン
ス(3016進数または30H)であるからである。内
容フィールドのレジェンド(抽象タイプ定義の残存部分
を構成する)は38Hである。抽象タイプ定義に対する
内容フィールドは、モジュール定義タイプシーケンスの
第1フィールドで開始する。第1フィールドは、モジュ
ール基準タイプである。このフィールドに対するタグは
A3Hである。理由は、モジュール基準は[3]AS
N.1項目列タイプであり、[3]または[CONT
3]はA3Hへ変換するからである。第1フィールドの
長さは10バイト(0AH)であり、これはモジュール
名前「テストモジュール」の機械符号化テキスト形態を
記憶するために使用されるバイト数に対応する。このフ
ィールドの内容は、「テストモジュール」列のASCI
I符号化形態である。第2フィールドは、モジュールボ
デイ形態である。これはシーケンスであり、割当リスト
の一フィールドでその内部でネストした。このフィール
ドに対するタグは、A0Hである。理由は、モジュール
ボデイがシーケンス{チョイス{[0]割当リスト
[1]0}}であり、割当リストチョイスは、それに伴
うタッグ[0]または[CONT0]を持つからであ
る。[CONT 0]はA0Hに変換する。このフィー
ルドは、割当タイプのシーケンスであり、その内部にネ
ストされた幾つかのエレメントを含む。図示例では、シ
ーケンスはタイプ割当(A0H)の単一エレメントのみ
をもち、その値フィールドはメモリの26Hバイトを占
める。第1フィールドは、長さ08Hのタイプ基準タイ
プ(タイプ基準::=[0]ASN.項目列であるから
タッグはA0H)、及び「テストタイプ」列のASCI
I符号化形態に等しい値により占められる。第2フィー
ルドは、シーケンスであるタイプの型であり、従ってタ
ッグ31Hをもつ。(31H)は、長さ1CHの値を持
つ。シーケンスのタイプフィールドは、その内部にネス
トされた組込タイプ(AOH)の値をもつ。この値に対
するタグフィールドは、A0Hである。というのは、型
の値はシーケンス{チョイス{[0]組込タイプ,
[1]特定タイプ}}であり、組込タイプの値はそれに
伴うタグ[0]または[CONT 0]を持つからであ
る。一方、組込タイプ値は長さ1AHの値を持つ。組込
タイプは、その内部にシーケンスタイプ(A5H)の値
をネストしている。この値は、メモリの18バイトを占
める。このチョイスに対するタグフィールドは、A5H
である。理由は、組込タイプはシーケンス{チョイス
[0]ブールタイプ、...,[5]シーケンスタイ
プ...}}であり、シーケンスタイプ値はそれに対応
するタグ[5]または[CONT5]をもつからであ
る。[CONT 5]は、機械コード化された16進数
値A5Hに対応する。シーケンスタイプ値は、その内部
にエレメントタイプリスト(A0H)の値をネストして
いる。この値は、メモリの16Hバイトを占めている。
【0054】本実施例においては、エレメントタイプ
(BER タグ=30H)のエレメントタイプリストシ
ーケンスの値は、2つのフィールドを含む。両フィール
ドは、エレメントタイプフィールドである。第1フィー
ルドは、長さ08Hであり、その内部に命名タイプ(A
0H)の値をネストしている。命名タイプは、その内部
にタイプ(A1H)のタイプをネストし、長さ6バイト
である。タイプ値は、長さ04Hの値である。タイプ値
は、シーケンスであり、組込タイプのタイプ値(A0
H)を含む。その値は、メモリの2バイトを占める。組
込タイプは、その内部にブールタイプ(A0H)の値を
ネストし、これは0である。
(BER タグ=30H)のエレメントタイプリストシ
ーケンスの値は、2つのフィールドを含む。両フィール
ドは、エレメントタイプフィールドである。第1フィー
ルドは、長さ08Hであり、その内部に命名タイプ(A
0H)の値をネストしている。命名タイプは、その内部
にタイプ(A1H)のタイプをネストし、長さ6バイト
である。タイプ値は、長さ04Hの値である。タイプ値
は、シーケンスであり、組込タイプのタイプ値(A0
H)を含む。その値は、メモリの2バイトを占める。組
込タイプは、その内部にブールタイプ(A0H)の値を
ネストし、これは0である。
【0055】エレメントタイプリストシーケンスの第2
フィールドは、長さ(0AH)のBER値をもつ。その
値は、第1エレメントの値にほぼ同一である。しかし、
第2フィールドにおいては、組込タイプの値は、その内
部に整数タイプ(A1H)タイプの値をネストし、その
値はメモリの2バイトを占めている。整数タイプの値
は、シーケンスである。この場合、シーケンス内のチョ
イスの[0]ゼロオプションが選択され、これがタッグ
フィールドがA0Hに等しく長さがゼロのBER値を含
む整数タイプシーケンスを特定することとなる。
フィールドは、長さ(0AH)のBER値をもつ。その
値は、第1エレメントの値にほぼ同一である。しかし、
第2フィールドにおいては、組込タイプの値は、その内
部に整数タイプ(A1H)タイプの値をネストし、その
値はメモリの2バイトを占めている。整数タイプの値
は、シーケンスである。この場合、シーケンス内のチョ
イスの[0]ゼロオプションが選択され、これがタッグ
フィールドがA0Hに等しく長さがゼロのBER値を含
む整数タイプシーケンスを特定することとなる。
【0056】図7に戻り、処理コール(大文字で示し
た)、文脈のチョイス(ブラケット番号で示した)、及
び処理戻り(低ケース文字で示した)のブラケットシー
ケンスは定義されたASN.1モジュールに対するAS
N.1BERを構築するためのコンパイラのプログラム
流れを描くために用いられている。チョイス及び名前
は、表Aに列挙された中間形態に対する構文定義に対応
している。 中間ASN.1抽象型定義によって使用可能となる解釈
機能の説明 先に述べた幾つかの解釈機能及び一の新たな機能は、符
号化ASN.1抽象タイプ定義の中間形態から実行可能
である。第1に、周知の処理を中間形態へ適用するたこ
とが可能であり、これによってタイプされたフィールド
及びサブフィールドの組としての抽象構文に対応した非
タイプバイト列を解釈することができる。第2に、抽象
構文に対応する値は、タイプされたフィールド及びサブ
フィールドへ組織化することができ、また出力装置上の
英数値として表示されることができる。これは、非タイ
プバイト列よりも人が読み取りやすい。第3に、周知の
処理は、特定の符号化された値が抽象構文に低剛するこ
とを確認するために適用され得る。第4に、符号化規則
または転送構文の一組に従う値を符号化規則または転送
構文の他の組に従う値に変換することが可能である。こ
の場合、双方の値(変換前の値と変換後の値)が、抽象
構文に従う。第5に、抽象構文に対応したランダムまた
は任意値を発生するために本発明に周知の処理を適用す
ることができる。本発明の中間符号化形態により容易化
される上記機能及び新たな機能は、X.500デイレク
トリ製品のDECバージョン等の解釈システムへ組み込
むことができる。解釈機能は、プログラムに直接コンパ
イルされ、当業者にとって周知の方法で実行時間ライブ
ラリー内のユーザに対して与えられる。ユーザ機能を与
えるこの方法は、「ソフト−スキーマ」と呼ばれる。
た)、文脈のチョイス(ブラケット番号で示した)、及
び処理戻り(低ケース文字で示した)のブラケットシー
ケンスは定義されたASN.1モジュールに対するAS
N.1BERを構築するためのコンパイラのプログラム
流れを描くために用いられている。チョイス及び名前
は、表Aに列挙された中間形態に対する構文定義に対応
している。 中間ASN.1抽象型定義によって使用可能となる解釈
機能の説明 先に述べた幾つかの解釈機能及び一の新たな機能は、符
号化ASN.1抽象タイプ定義の中間形態から実行可能
である。第1に、周知の処理を中間形態へ適用するたこ
とが可能であり、これによってタイプされたフィールド
及びサブフィールドの組としての抽象構文に対応した非
タイプバイト列を解釈することができる。第2に、抽象
構文に対応する値は、タイプされたフィールド及びサブ
フィールドへ組織化することができ、また出力装置上の
英数値として表示されることができる。これは、非タイ
プバイト列よりも人が読み取りやすい。第3に、周知の
処理は、特定の符号化された値が抽象構文に低剛するこ
とを確認するために適用され得る。第4に、符号化規則
または転送構文の一組に従う値を符号化規則または転送
構文の他の組に従う値に変換することが可能である。こ
の場合、双方の値(変換前の値と変換後の値)が、抽象
構文に従う。第5に、抽象構文に対応したランダムまた
は任意値を発生するために本発明に周知の処理を適用す
ることができる。本発明の中間符号化形態により容易化
される上記機能及び新たな機能は、X.500デイレク
トリ製品のDECバージョン等の解釈システムへ組み込
むことができる。解釈機能は、プログラムに直接コンパ
イルされ、当業者にとって周知の方法で実行時間ライブ
ラリー内のユーザに対して与えられる。ユーザ機能を与
えるこの方法は、「ソフト−スキーマ」と呼ばれる。
【0057】従来技術システムに設けられた既に周知の
解釈機能に加え、本発明はASN.1抽象タイプ定義の
中間符号化形態から原高水準テキストを解釈的に発生す
る機能を提供するものである。これにより、ユーザは、
アプリケーションがシステム上で実行されつつ、AS
N.1定義の原高水準テキスト表現を再生することが可
能となる。中間水準から再生された水準形態はユーザに
より視認可能であり、他の中間または低水準形態、或い
は他の有用な機能へコンパイルするために他の符号化シ
ステムへ転送される。これにより得られる効果は、これ
らの機能をユーザに提供するために原形態を保存する必
要がないということである。したがって、符号化の高水
準及び中間水準の形態双方を同時に保持することによっ
てメモリ(主及び副の両メモリ)内で占められるスペー
スを抑制できる。更に、2個の個別コピーが各水準に対
してASN.1定義に保持されると、他の水準では実行
されない一の水準への変更を行うことが可能となる。こ
のような場合、統一性の問題が生じ、記憶された情報の
統一性に対して悪影響を及ぼす。ASN.1定義の単一
形態の他の利点は、高水準形態がコンピュータにより使
用される中間水準形態への対応を確認できるということ
である。理由は、再生された高水準形態は中間形態から
直接派生するからである。 中間形態の逆コンパイルの説明 タイプモジュール定義のASN.1BER値から成るモ
ジュール定義に対する中間形態について考える。逆コン
パイラは、以下に述べるようにこのBER値を解析及び
検査し、定義の高水準テキスト形態を発生する。
解釈機能に加え、本発明はASN.1抽象タイプ定義の
中間符号化形態から原高水準テキストを解釈的に発生す
る機能を提供するものである。これにより、ユーザは、
アプリケーションがシステム上で実行されつつ、AS
N.1定義の原高水準テキスト表現を再生することが可
能となる。中間水準から再生された水準形態はユーザに
より視認可能であり、他の中間または低水準形態、或い
は他の有用な機能へコンパイルするために他の符号化シ
ステムへ転送される。これにより得られる効果は、これ
らの機能をユーザに提供するために原形態を保存する必
要がないということである。したがって、符号化の高水
準及び中間水準の形態双方を同時に保持することによっ
てメモリ(主及び副の両メモリ)内で占められるスペー
スを抑制できる。更に、2個の個別コピーが各水準に対
してASN.1定義に保持されると、他の水準では実行
されない一の水準への変更を行うことが可能となる。こ
のような場合、統一性の問題が生じ、記憶された情報の
統一性に対して悪影響を及ぼす。ASN.1定義の単一
形態の他の利点は、高水準形態がコンピュータにより使
用される中間水準形態への対応を確認できるということ
である。理由は、再生された高水準形態は中間形態から
直接派生するからである。 中間形態の逆コンパイルの説明 タイプモジュール定義のASN.1BER値から成るモ
ジュール定義に対する中間形態について考える。逆コン
パイラは、以下に述べるようにこのBER値を解析及び
検査し、定義の高水準テキスト形態を発生する。
【0058】逆コンパイラは、一組のルーチンを含む。
一のルーチンは、表A中に列挙された各定義に対するも
のである。これら各ルーチンは、対応中間形態が与えら
れると、互いに協働し、中間形態に対応したテキストを
生成する。これらのルーチンは、以降プリンタルーチン
と呼ぶことにする。例えば、モジュール定義に対するプ
リンタルーチンは、モジュール定義に対する中間形態に
対応した高水準ASN.1テキストを生成する。換言す
れば、ASN.1モジュールを印刷する。各プリンタは
与えられた(そのコーラーにより)中間形態値を解析
し、必要な場合には他のプリンタルーチンを再帰的に呼
び出す。
一のルーチンは、表A中に列挙された各定義に対するも
のである。これら各ルーチンは、対応中間形態が与えら
れると、互いに協働し、中間形態に対応したテキストを
生成する。これらのルーチンは、以降プリンタルーチン
と呼ぶことにする。例えば、モジュール定義に対するプ
リンタルーチンは、モジュール定義に対する中間形態に
対応した高水準ASN.1テキストを生成する。換言す
れば、ASN.1モジュールを印刷する。各プリンタは
与えられた(そのコーラーにより)中間形態値を解析
し、必要な場合には他のプリンタルーチンを再帰的に呼
び出す。
【0059】各プリンタルーチンを以下に説明する。A
SN1項目列は、ASN1項目列に対する中間形態を受
取り、英数字テキストとしてオクテット列値を発生す
る。タイプ基準、識別子、値基準、モジュール基準、
数、B列、H列、及びC列は全て同様に作用する。これ
らは、各タイプに対して中間コード化形態を受取り、こ
れら各プリンタルーチンはASN1項目列プリンタルー
チンを呼び出し、受信した中間コード化形態をASN1
項目列プリンタルーチンへ通過させる。
SN1項目列は、ASN1項目列に対する中間形態を受
取り、英数字テキストとしてオクテット列値を発生す
る。タイプ基準、識別子、値基準、モジュール基準、
数、B列、H列、及びC列は全て同様に作用する。これ
らは、各タイプに対して中間コード化形態を受取り、こ
れら各プリンタルーチンはASN1項目列プリンタルー
チンを呼び出し、受信した中間コード化形態をASN1
項目列プリンタルーチンへ通過させる。
【0060】次に、モジュール定義プリンタルーチン
は、その入力としてモジュール定義に対する中間形態
(BER値)を受信する。中間形態の記載から理解され
るように、このようにして受信された入力は2つのフィ
ールドを含むシーケンス値である。一のフィールドは、
モジュール基準タイプであり、第2のフィールドはモジ
ュールボデイタイプである。モジュール定義プリンタル
ーチンは、次に作用シリーズを実行する。
は、その入力としてモジュール定義に対する中間形態
(BER値)を受信する。中間形態の記載から理解され
るように、このようにして受信された入力は2つのフィ
ールドを含むシーケンス値である。一のフィールドは、
モジュール基準タイプであり、第2のフィールドはモジ
ュールボデイタイプである。モジュール定義プリンタル
ーチンは、次に作用シリーズを実行する。
【0061】第1に、モジュール定義プリンタはモジュ
ール基準プリンタルーチンを呼び出し、モジュール定義
シーケンスの前記第1フィールドを含むパラメータを通
過させる。制御がモジュール定義プリンタルーチンに戻
った後、このルーチンはテキスト: 「定義::=”、
「新ライン」キャラクタ、「開始」、及び「新ライン」
キャラクタ、を発生する。次に、モジュール定義プリン
タルーチンは、モジュールボデンプリンタルーチンを呼
び出し、モジュール定義シーケンスの上記第2フィール
ドを通過パラメータとしてそのプリンタルーチンへ包含
させる。制御がモジュール定義プリンタルーチンへ戻っ
た後、このルーチンはテキスト「終了」を発生する。そ
の後、モジュール定義プリンタルーチンが出て、制御が
呼び出し処理へ戻る。
ール基準プリンタルーチンを呼び出し、モジュール定義
シーケンスの前記第1フィールドを含むパラメータを通
過させる。制御がモジュール定義プリンタルーチンに戻
った後、このルーチンはテキスト: 「定義::=”、
「新ライン」キャラクタ、「開始」、及び「新ライン」
キャラクタ、を発生する。次に、モジュール定義プリン
タルーチンは、モジュールボデンプリンタルーチンを呼
び出し、モジュール定義シーケンスの上記第2フィール
ドを通過パラメータとしてそのプリンタルーチンへ包含
させる。制御がモジュール定義プリンタルーチンへ戻っ
た後、このルーチンはテキスト「終了」を発生する。そ
の後、モジュール定義プリンタルーチンが出て、制御が
呼び出し処理へ戻る。
【0062】モジュールボデイプリンタルーチンは、
「モジュールボデイ」タイプの値に対する中間形態を受
信する。このようにして、このルーチンへの入力は、一
のフィールドのみを持つシーケンス値である。このプリ
ンタルーチンは、このフィールドに対するタッグを検査
する。タグは、[CONT 0]または[CONT
1]である。もしタグが[CONT 0]に等しけれ
ば、このルーチンは割当リストプリンタルーチンを呼び
出し、このフィールドの値を割当リストプリンタルーチ
ンへ通過させる。制御がモジュールボデイプリンタルー
チンへ戻されると、制御はモジュールボデイプリンタル
ーチンコーラーへ戻される。もしタッグが[CONT
1]であると、いかなる動作も起こらず、制御はコーラ
ーへ戻される。
「モジュールボデイ」タイプの値に対する中間形態を受
信する。このようにして、このルーチンへの入力は、一
のフィールドのみを持つシーケンス値である。このプリ
ンタルーチンは、このフィールドに対するタッグを検査
する。タグは、[CONT 0]または[CONT
1]である。もしタグが[CONT 0]に等しけれ
ば、このルーチンは割当リストプリンタルーチンを呼び
出し、このフィールドの値を割当リストプリンタルーチ
ンへ通過させる。制御がモジュールボデイプリンタルー
チンへ戻されると、制御はモジュールボデイプリンタル
ーチンコーラーへ戻される。もしタッグが[CONT
1]であると、いかなる動作も起こらず、制御はコーラ
ーへ戻される。
【0063】割当リストプリンタルーチンは、割当リス
トの値に対する中間形態を受信する。このようにして、
入力は一または複数のフィールドをもつ値のシーケンス
である。構造のシーケンス中における各フィールドに対
し、割当リストプリンタルーチンがステップのシリーズ
を実行する。第1に、ルーチンは「新ライン」文字を発
生する。第2に、ルーチンは割当プリンタルーチンを呼
び出すと共に、現在解析されているフィールドを関連パ
ラメータとして通過させる。リストが完全に使い尽くさ
れた後、制御がコーラープリンタルーチンへ戻される。
トの値に対する中間形態を受信する。このようにして、
入力は一または複数のフィールドをもつ値のシーケンス
である。構造のシーケンス中における各フィールドに対
し、割当リストプリンタルーチンがステップのシリーズ
を実行する。第1に、ルーチンは「新ライン」文字を発
生する。第2に、ルーチンは割当プリンタルーチンを呼
び出すと共に、現在解析されているフィールドを関連パ
ラメータとして通過させる。リストが完全に使い尽くさ
れた後、制御がコーラープリンタルーチンへ戻される。
【0064】割当プリンタルーチンは、割当タイプの値
に対する中間形態を受信する。このように、入力はチョ
イスである。このルーチンは、通過された値に対応した
タッグを検査する。タグは[CONT 0]または[C
ONT 1]のいずれかでなければならない。もしタグ
が[CONT 0]であるならば、タイプ割当に対する
プリンタルーチンを呼びだし、入力値を呼び出されたル
ーチンへ通過させなければならない。もしタグが[CO
NT 1]であるならば、入力値の値割当に対するプリ
ンタを呼び出す。これら2つのルーチンのいずれかから
の制御が戻ると、割当プリンタルーチンが出る。
に対する中間形態を受信する。このように、入力はチョ
イスである。このルーチンは、通過された値に対応した
タッグを検査する。タグは[CONT 0]または[C
ONT 1]のいずれかでなければならない。もしタグ
が[CONT 0]であるならば、タイプ割当に対する
プリンタルーチンを呼びだし、入力値を呼び出されたル
ーチンへ通過させなければならない。もしタグが[CO
NT 1]であるならば、入力値の値割当に対するプリ
ンタを呼び出す。これら2つのルーチンのいずれかから
の制御が戻ると、割当プリンタルーチンが出る。
【0065】外部タイプ基準プリンタルーチンが外部タ
イプ基準の値に対する中間形態を受信する。従って、入
力は2つのフィールドを含むシーケンス値である。第1
フィールドは、モジュール基準タイプである。第2フィ
ールドは、タイプ基準タイプである。外部タイプ基準プ
リンタルーチンは、モジュール基準に対するプリンタル
ーチンである。呼び出されたルーチンからの制御が戻る
と、外部タイプ基準プリンタルーチンは、文字ピリオド
(.)文字を印刷する。次に、このルーチンはタイプ基
準に対するプリンタルーチンを呼び出し、第2フィール
ドを通過させる。制御が呼び出されたルーチンから戻さ
れると、外部タイプ基準プリンタルーチンがでる。外部
値基準プリンタルーチンは、外部タイプ基準プリンタル
ーチンに類似している。これら2つのプリンタルーチン
間の相違は、当業者にとって周知である。
イプ基準の値に対する中間形態を受信する。従って、入
力は2つのフィールドを含むシーケンス値である。第1
フィールドは、モジュール基準タイプである。第2フィ
ールドは、タイプ基準タイプである。外部タイプ基準プ
リンタルーチンは、モジュール基準に対するプリンタル
ーチンである。呼び出されたルーチンからの制御が戻る
と、外部タイプ基準プリンタルーチンは、文字ピリオド
(.)文字を印刷する。次に、このルーチンはタイプ基
準に対するプリンタルーチンを呼び出し、第2フィール
ドを通過させる。制御が呼び出されたルーチンから戻さ
れると、外部タイプ基準プリンタルーチンがでる。外部
値基準プリンタルーチンは、外部タイプ基準プリンタル
ーチンに類似している。これら2つのプリンタルーチン
間の相違は、当業者にとって周知である。
【0066】特定タイププリンタルーチンは、その入力
として特定タイプタイプの値に対する中間形態を受信す
る。このように、入力は一のフィールドを含むシーケン
ス値である。単一フィールドがチョイスを含む。タッグ
は[CONT 0]であれば、このルーチンは外部タイ
プ基準プリンタルーチンを呼び出し、単一フィールド値
を通過させる。タッグが[CONT 1]であると、こ
のルーチンはタイプ基準プリンタルーチンを呼び出し、
単一フィールド値を通過させる。呼び出されたプリンタ
ルーチンから戻った時、このルーチンが出て、制御は呼
び出しルーチンへ戻る。特定された値のプリンタルーチ
ンは特定タイププリンタルーチンに類似している。これ
ら両プリンタルーチン間のあらゆる相違は、当業者にと
って周知である。
として特定タイプタイプの値に対する中間形態を受信す
る。このように、入力は一のフィールドを含むシーケン
ス値である。単一フィールドがチョイスを含む。タッグ
は[CONT 0]であれば、このルーチンは外部タイ
プ基準プリンタルーチンを呼び出し、単一フィールド値
を通過させる。タッグが[CONT 1]であると、こ
のルーチンはタイプ基準プリンタルーチンを呼び出し、
単一フィールド値を通過させる。呼び出されたプリンタ
ルーチンから戻った時、このルーチンが出て、制御は呼
び出しルーチンへ戻る。特定された値のプリンタルーチ
ンは特定タイププリンタルーチンに類似している。これ
ら両プリンタルーチン間のあらゆる相違は、当業者にと
って周知である。
【0067】タイプ割当プリンタルーチンは、その入力
としてタイプ割り当てタイプの値に対する中間形態を受
信する。このように、入力は2つのフィールドを含むシ
ーケンス値である。第1フィールドは、タイプ基準タイ
プである。第2フィールドは、タイプタイプである。こ
のルーチンは、まずタイプ基準プリンタルーチンを呼び
出し、第1フィールド値を通過させる。制御がたのルー
チンに戻ると、テキスト文字「::=」が発生する。次
に、タイプ割当プリンタルーチンがタイププリンタルー
チンを呼びだし、第2フィールド値を通過させる。制御
がタイププリンタルーチンから戻ると、タイプ割当プリ
ンタルーチンが出る。
としてタイプ割り当てタイプの値に対する中間形態を受
信する。このように、入力は2つのフィールドを含むシ
ーケンス値である。第1フィールドは、タイプ基準タイ
プである。第2フィールドは、タイプタイプである。こ
のルーチンは、まずタイプ基準プリンタルーチンを呼び
出し、第1フィールド値を通過させる。制御がたのルー
チンに戻ると、テキスト文字「::=」が発生する。次
に、タイプ割当プリンタルーチンがタイププリンタルー
チンを呼びだし、第2フィールド値を通過させる。制御
がタイププリンタルーチンから戻ると、タイプ割当プリ
ンタルーチンが出る。
【0068】値割当プリンタルーチンは、その入力とし
て値割当タイプの値に対する中間形態を受信する。この
ようにして、入力は2つのフィールドを含むシーケンス
である。第1のフィールドは、値基準タイプである。第
2のフィールドは、シーケンスタイプである。このシー
ケンスは、2つのフィールドを含む。第1のフィールド
は、タイプタイプである。第2のフィールドは、値タイ
プである。値割当プリンタルーチンは、値基準プリンタ
ルーチンを呼び出し、第1フィールド値を通過させる。
呼び出されたルーチンから制御が戻ると、このルーチン
は「ブランク」文字を発生する。次に、このルーチンは
タイププリンタルーチンを呼び出し、第2フィールドの
第1サブフィールド値を通過させる。呼び出されたルー
チンから制御が戻ると、このルーチンは他の「ブラン
ク」文字を発生し、その後「::=」及び「新ライン」
文字が続く。次に、このルーチンは値プリンタルーチン
を呼び出し、第2フィールドの第2サブフィールド値を
通過させる。このルーチンから戻ると、値割当プリンタ
ルーチンが出る。
て値割当タイプの値に対する中間形態を受信する。この
ようにして、入力は2つのフィールドを含むシーケンス
である。第1のフィールドは、値基準タイプである。第
2のフィールドは、シーケンスタイプである。このシー
ケンスは、2つのフィールドを含む。第1のフィールド
は、タイプタイプである。第2のフィールドは、値タイ
プである。値割当プリンタルーチンは、値基準プリンタ
ルーチンを呼び出し、第1フィールド値を通過させる。
呼び出されたルーチンから制御が戻ると、このルーチン
は「ブランク」文字を発生する。次に、このルーチンは
タイププリンタルーチンを呼び出し、第2フィールドの
第1サブフィールド値を通過させる。呼び出されたルー
チンから制御が戻ると、このルーチンは他の「ブラン
ク」文字を発生し、その後「::=」及び「新ライン」
文字が続く。次に、このルーチンは値プリンタルーチン
を呼び出し、第2フィールドの第2サブフィールド値を
通過させる。このルーチンから戻ると、値割当プリンタ
ルーチンが出る。
【0069】タイププリンタルーチンは、入力としてタ
イプタイプの値に対する中間形態を受信する。このよう
にして、入力は単一フィールドを持つシーケンス値であ
る。単一フィールドは、チョイスを示すタッグ値を示
す。もしタッグ値が[CONT0]であるならば、この
ルーチンは組込タイププリンタルーチンを呼びだし、こ
のフィールドを通過させる。もしタッグが[CONT
1]であるならば、このルーチンが特定タイプルーチン
を呼び出してフィールドを通過させる。呼び出されたル
ーチンから戻ると、プリンタタイプルーチンが出る。
イプタイプの値に対する中間形態を受信する。このよう
にして、入力は単一フィールドを持つシーケンス値であ
る。単一フィールドは、チョイスを示すタッグ値を示
す。もしタッグ値が[CONT0]であるならば、この
ルーチンは組込タイププリンタルーチンを呼びだし、こ
のフィールドを通過させる。もしタッグが[CONT
1]であるならば、このルーチンが特定タイプルーチン
を呼び出してフィールドを通過させる。呼び出されたル
ーチンから戻ると、プリンタタイプルーチンが出る。
【0070】組込タイププリンタルーチンはその入力と
して組み込みタイプ値に対する中間形態を受信する。こ
のように、入力は一フィールドを含むシーケンス値であ
る。このフィールドに対するタッグは、16の可能文脈
([CONT 0]、[CONT 1] ... [C
ONT 15])の内の一を示す。タッグ値に基づき、
組み込みタイププリンタルーチンは示されたタッグに対
応する他のプリンタルーチンへ適切な呼び出しをかけ、
フィールド値を通過させる。
して組み込みタイプ値に対する中間形態を受信する。こ
のように、入力は一フィールドを含むシーケンス値であ
る。このフィールドに対するタッグは、16の可能文脈
([CONT 0]、[CONT 1] ... [C
ONT 15])の内の一を示す。タッグ値に基づき、
組み込みタイププリンタルーチンは示されたタッグに対
応する他のプリンタルーチンへ適切な呼び出しをかけ、
フィールド値を通過させる。
【0071】組込値プリンタルーチンは、その入力とし
て組込値タイプの値に対する中間形態を受信する。この
ように、入力は2個のフィールドを含むシーケンスタイ
プの値である。第1のフィールドのみが逆コンパイレー
ション処理中に使用される。組込値プリンタルーチン
は、組込値タイプの値の受信した中間形態値の第1フィ
ールド中の値成分中にASCII列を発生する。その
後、ルーチンは出る。
て組込値タイプの値に対する中間形態を受信する。この
ように、入力は2個のフィールドを含むシーケンスタイ
プの値である。第1のフィールドのみが逆コンパイレー
ション処理中に使用される。組込値プリンタルーチン
は、組込値タイプの値の受信した中間形態値の第1フィ
ールド中の値成分中にASCII列を発生する。その
後、ルーチンは出る。
【0072】同様のルーチンが表Aに記載した各定義に
対して与えられる。残存プリンタルーチンの作用が、表
A及びB中の中間形態に対するASN.1構文定義の記
載から直接続く。このようにして、表A及びBの教示内
容に基づいて適切なプリンタルーチンを発生することは
当業者にとって簡単な作業である。以上、本発明の好適
な実施例を説明してきた。本発明は、特許請求の範囲に
記載したように、発明を実施するためのあらゆる等価方
法及び装置を網羅するものである。
対して与えられる。残存プリンタルーチンの作用が、表
A及びB中の中間形態に対するASN.1構文定義の記
載から直接続く。このようにして、表A及びBの教示内
容に基づいて適切なプリンタルーチンを発生することは
当業者にとって簡単な作業である。以上、本発明の好適
な実施例を説明してきた。本発明は、特許請求の範囲に
記載したように、発明を実施するためのあらゆる等価方
法及び装置を網羅するものである。
【図1】コンパイル及び記憶のための演算システムを表
した模式図。
した模式図。
【図2】高水準ASN.1抽象タイプ定義を中間形態へ
変換するためのコンパイラの作用を示すフロー図。
変換するためのコンパイラの作用を示すフロー図。
【図3】中間形態における抽象タイプ定義を表すために
用いられるASN.1BER値のタイプ、長さ及び値
(TLV)フォーマットの構成例を示す図。
用いられるASN.1BER値のタイプ、長さ及び値
(TLV)フォーマットの構成例を示す図。
【図4】ASN.1タイプ定義モジュール例における構
文木を示した図。
文木を示した図。
【図5】ASN.1値定義例における構文木を示した
図。
図。
【図6】抽象タイプ定義に対するASN.1BERの中
間形態値の例を示す図。
間形態値の例を示す図。
【図7】高水準コード化抽象タイプ定義を中間形態へ変
換するためのプログラムフローを示す図。
換するためのプログラムフローを示す図。
【図8】図6及び7で用いられたラベルをそれが表す実
際の定義に変換するためのレジェンドを示す図。
際の定義に変換するためのレジェンドを示す図。
Claims (9)
- 【請求項1】 抽象構文表記法1(ASN.1)定義を
中間水準に符号化された形態から高水準テキスト形態A
SN.1定義へ変換するための変換装置において、 前記中間水準符号化形態ASN.1定義を受信及び記憶
するためのメモリ手段と、 前記中間水準符号化ASN.1定義を前記高水準テキス
ト形態ASN.1定義へ変換するための逆コンパイラ手
段と、 前記メモリ手段及び前記逆コンパイラ手段を接続するた
めのバス手段と、を含むことを特徴とする変換装置。 - 【請求項2】 高水準テキスト形態ASN.1定義及び
中間水準符号化形態ASN.1定義との間で抽象構文表
記法1(ASN.1)定義を変換するための変換装置に
おいて、 前記高水準テキスト形態ASN.1定義を受信及び記憶
するための第1メモリ手段と、 高水準テキスト形態ASN.1定義を中間水準符号化形
態ASN.1定義に変換するためのコンパイラ手段と、 中間水準符号化形態ASN.1定義を受信及び記憶する
ための第2メモリ手段と、 前記中間水準符号化形態ASN.1を前記高水準テキス
ト形態ASN.1定義へ変換するための逆コンパイラ手
段と、 前記第1及び第2メモリ手段、コンパイラ手段、及び前
記逆コンパイラ手段を接続するためのバス手段と、を含
むことを特徴とする変換装置。 - 【請求項3】 請求項2に記載の装置において、更に前
記高水準テキスト形態ASN.1定義から中間水準符号
化ASN.1定義への変換が完了したことを検出する検
出手段と、 前記検出手段に応答して前記高水準テキスト形態AS
N.1定義を前記第1メモリ手段から削除する廃棄手段
と、を含むことを特徴とする変換装置。 - 【請求項4】 抽象構文表記法1(ASN.1)定義を
中間水準符号化形態から高水準テキスト形態ASN.1
定義へ変換するためにユーザ対話型実行時間装置に使用
される変換装置において、 前記中間水準符号化形態ASN.1定義を受信及び記憶
するためのメモリ手段と、 前記中間水準符号化形態ASN.1定義を前記高水準テ
キスト形態ASN.1定義へ変換するためのユーザ要求
を受信する受信手段と、 前記中間水準符号化ASN.1定義を前記高水準テキス
ト形態ASN.1定義へ変換するための手段と、 前記メモリ手段、受信手段及び変換手段を接続するため
のバス手段と、を含むことを特徴とする変換装置。 - 【請求項5】 抽象構文表記法1(ASN.1)定義を
表現形態を変換するための方法において、 中間水準符号化形態ASN.1定義を受信するステップ
と、 受信した中間水準符号化形態ASN.1定義をメモリ内
に記憶するステップと、 中間水準符号化形態ASN.1定義を高水準テキスト形
態ASN.1定義へ変換するステップと、を含むことを
特徴とする変換方法。 - 【請求項6】 高水準テキスト形態ASN.1定義及び
中間水準符号化形態ASN.1定義との間で抽象構文表
記法1(ASN.1)を変換するための方法において、 高水準テキスト形態ASN.1定義を受信するステップ
と、 受信した高水準テキスト形態ASN.1定義を第1メモ
リ内へ記憶するステップと、 高水準テキスト形態ASN.1定義を中間水準符号化形
態ASN.1定義へ変換するステップと、 中間水準符号化ASN.1定義を受信するステップと、 受信した中間水準符号化形態ASN.1定義を第2メモ
リ内に記憶するステップと、 中間水準符号化ASN.1定義を高水準テキスト形態A
SN.1定義へ変換するステップと、を含むことを特徴
とする変換方法。 - 【請求項7】 請求項6に記載の方法において、更に前
記変換ステップの完了後、第1メモリから高水準テキス
ト形態ASN.1定義を削除するステップを含むことを
特徴とする変換方法。 - 【請求項8】 対話型実行時間適用プログラム上へのユ
ーザ要求に応答して、高水準テキスト形態と中間水準符
号化形態との間で抽象構文表記法1(ASN.1)定義
を変換する方法において、 高水準テキスト形態ASN.1定義を受信するステップ
と、 受信した高水準テキスト形態ASN.1定義を第1メモ
リ内に記憶するステップと、 高水準テキスト形態ASN.1定義を中間水準符号化形
態ASN.1定義へ変換するユーザ要求を受信するステ
ップと、 高水準テキスト形態ASN.1定義を中間水準符号化形
態ASN.1定義へ変換するステップと、 中間水準符号化形態ASN.1定義を受信するステップ
と、 受信した中間水準符号化形態ASN.1定義を第2メモ
リ内へ記憶するステップと、 中間水準符号化形態ASN.1定義を高水準テキスト形
態ASN.1定義へ変換するユーザ要求を受信するステ
ップと、 中間水準符号化形態ASN.1定義を高水準テキスト形
態ASN.1定義へ変換するステップと、を含むことを
特徴とする変換方法。 - 【請求項9】 抽象構文表記法1(ASN.1)定義の
表現形態を対話型実行時間プログラム上へのユーザ要求
に応答して変換する変換方法において、 中間水準符号化形態ASN.1定義を受信するステップ
と、 受信した中間水準符号化形態ASN.1定義をメモリ中
に記憶するステップと、 中間水準符号化形態ASN.1定義を高水準テキスト形
態ASN.1定義へ変換するユーザ要求を受信するステ
ップと、 中間水準符号化形態ASN.1定義を高水準テキスト形
態ASN.1定義へ変換するステップと、を含むことを
特徴とする変換方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US72265191A | 1991-06-28 | 1991-06-28 | |
| US07/722651 | 1991-06-28 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH05224949A true JPH05224949A (ja) | 1993-09-03 |
Family
ID=24902769
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4169623A Pending JPH05224949A (ja) | 1991-06-28 | 1992-06-26 | 高水準形態抽象構文を中間形態へ変換する方法及び装置 |
Country Status (3)
| Country | Link |
|---|---|
| EP (1) | EP0520708B1 (ja) |
| JP (1) | JPH05224949A (ja) |
| DE (1) | DE69226404T2 (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100488805B1 (ko) * | 2002-12-10 | 2005-05-12 | 한국전자통신연구원 | Asn.1 편집에서의 데이터의 처리 시스템 및 그 방법 |
| JP2014517951A (ja) * | 2011-04-13 | 2014-07-24 | コンパーニュ・アンデュストリエル・エ・フィナンシエール・ダンジェニエリ・“インジェニコ” | メッセージを多重送信する方法、ディバイス及び対応するプログラム |
Families Citing this family (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3172617B2 (ja) * | 1993-03-10 | 2001-06-04 | 三菱電機株式会社 | 論理記述変換装置及び方法並びに論理合成方法 |
| AU743193B2 (en) * | 1997-02-26 | 2002-01-17 | Nec Corporation | Decoder using a finite state machine in decoding an abstract syntex notation-message and an encoder for carrying out encoding operation at a high speed |
| DE19835905B4 (de) * | 1998-08-07 | 2005-05-19 | Siemens Ag | Verfahren zum Erstellen einer Datenbankzugriffstabelle aus Datensätzen |
| EP0981088A1 (en) * | 1998-08-17 | 2000-02-23 | Ericsson Inc. | System, method and apparatus for software testing |
| CA2249252A1 (en) * | 1998-09-30 | 2000-03-30 | 3534421 Canada Corporation | Automation of the design recovery and forward engineering of legacy applications |
| US6317873B1 (en) * | 1998-10-14 | 2001-11-13 | Alcatel Usa Sourcing, L.P. | Assembly language translator |
| US6598052B1 (en) * | 1999-02-19 | 2003-07-22 | Sun Microsystems, Inc. | Method and system for transforming a textual form of object-oriented database entries into an intermediate form configurable to populate an object-oriented database for sending to java program |
| CN100505743C (zh) * | 2003-12-12 | 2009-06-24 | 华为技术有限公司 | 通用消息解释器的实现方法 |
| US20050181787A1 (en) * | 2004-02-18 | 2005-08-18 | Judd Tom D. | Systems and methods for encoding and decoding data messages |
| DE102012209674A1 (de) * | 2012-06-08 | 2013-12-12 | Bundesdruckerei Gmbh | Verfahren zum Umwandeln von Ausgangsdaten in Zieldaten gemäß ASN.1 |
| CN105139053B (zh) * | 2015-10-15 | 2018-01-30 | 江苏本能科技有限公司 | 射频识别读写器接口协议调试装置及方法 |
| US10509784B2 (en) * | 2017-04-28 | 2019-12-17 | Splunk Inc. | Partially typed semantics optimization |
| CN112188211B (zh) * | 2020-08-21 | 2024-09-17 | 北京新媒传信科技有限公司 | 一种转码实现方法和装置 |
| CN114239492A (zh) * | 2021-12-22 | 2022-03-25 | 武汉天喻信息产业股份有限公司 | 一种der转asn.1的方法及装置 |
Family Cites Families (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS60247738A (ja) * | 1984-05-22 | 1985-12-07 | Sharp Corp | テキスト編集装置 |
| EP0243110A3 (en) * | 1986-04-21 | 1991-05-29 | Texas Instruments Incorporated | Computer system having source code re-creation capability |
| JPH0650489B2 (ja) * | 1988-02-05 | 1994-06-29 | 日本電気株式会社 | Asn.1情報データ化方式 |
-
1992
- 1992-06-19 EP EP19920305672 patent/EP0520708B1/en not_active Expired - Lifetime
- 1992-06-19 DE DE1992626404 patent/DE69226404T2/de not_active Expired - Fee Related
- 1992-06-26 JP JP4169623A patent/JPH05224949A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100488805B1 (ko) * | 2002-12-10 | 2005-05-12 | 한국전자통신연구원 | Asn.1 편집에서의 데이터의 처리 시스템 및 그 방법 |
| JP2014517951A (ja) * | 2011-04-13 | 2014-07-24 | コンパーニュ・アンデュストリエル・エ・フィナンシエール・ダンジェニエリ・“インジェニコ” | メッセージを多重送信する方法、ディバイス及び対応するプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| DE69226404T2 (de) | 1999-04-15 |
| EP0520708B1 (en) | 1998-07-29 |
| DE69226404D1 (de) | 1998-09-03 |
| EP0520708A3 (en) | 1993-12-01 |
| EP0520708A2 (en) | 1992-12-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8332828B2 (en) | System for translating diverse programming languages | |
| US7346897B2 (en) | System for translating programming languages | |
| US8656372B2 (en) | System for translating diverse programming languages | |
| US6754884B1 (en) | Programming language extensions for processing XML objects and related applications | |
| Hutton | Higher-order functions for parsing | |
| USRE38104E1 (en) | Method and apparatus for resolving data references in generated code | |
| US5371747A (en) | Debugger program which includes correlation of computer program source code with optimized object code | |
| US8156471B2 (en) | Multi-language execution method | |
| US5459868A (en) | Interpretive object-oriented facility which can access pre-compiled classes | |
| US9086931B2 (en) | System for translating diverse programming languages | |
| US9965259B2 (en) | System for translating diverse programming languages | |
| US6859810B2 (en) | Declarative specification and engine for non-isomorphic data mapping | |
| JPH05224949A (ja) | 高水準形態抽象構文を中間形態へ変換する方法及び装置 | |
| JPH0383153A (ja) | メツセージ処理システム及び方法 | |
| JP2000515281A (ja) | インターフェイス定義言語によって定義されたインターフェイス、オペレーションおよびデータ型を記述するための方法および装置 | |
| US20120167065A1 (en) | Compiler compiler system with syntax-controlled runtime and binary application programming interfaces | |
| RU2115158C1 (ru) | Способ и устройство для достоверной оценки семантических признаков в синтаксическом анализе при проходе вперед слева направо | |
| US5758163A (en) | Method and apparatus for record fields usage checking at compile time | |
| US6305011B1 (en) | Tip technology and its application to sparcompiler pascal | |
| JPH07182179A (ja) | オブジェクト指向データベース管理装置 | |
| Freiburghouse | The multics PL/1 compiler | |
| RU2103727C1 (ru) | Способ преобразования входного кода транслятора в объектный код и устройство для его осуществления | |
| EP1785848A1 (en) | Method and apparatus for semantic checking of program code | |
| Maliavko et al. | The functionally-imperative programming language El and its translator | |
| Jeffery | Build Your Own Programming Language: A programmer's guide to designing compilers, interpreters, and DSLs for solving modern computing problems |