JP2727987B2 - データ型検査装置 - Google Patents

データ型検査装置

Info

Publication number
JP2727987B2
JP2727987B2 JP6310258A JP31025894A JP2727987B2 JP 2727987 B2 JP2727987 B2 JP 2727987B2 JP 6310258 A JP6310258 A JP 6310258A JP 31025894 A JP31025894 A JP 31025894A JP 2727987 B2 JP2727987 B2 JP 2727987B2
Authority
JP
Japan
Prior art keywords
type
data
name
data type
extractor
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.)
Expired - Lifetime
Application number
JP6310258A
Other languages
English (en)
Other versions
JPH08166885A (ja
Inventor
敏夫 登内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
Nippon Electric Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP6310258A priority Critical patent/JP2727987B2/ja
Publication of JPH08166885A publication Critical patent/JPH08166885A/ja
Application granted granted Critical
Publication of JP2727987B2 publication Critical patent/JP2727987B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、任意の集合をデータ型
として扱える形式言語のためのデータ型検査装置に関す
るものである。
【0002】
【従来の技術】形式言語は、例えばプログラミング言語
のような形式が明確に規定された言語であり、このよう
な形式言語に関して、データ型の検査を行うデータ型検
査装置が従来から提案されている(文献:「Compilers:
Principles,Techiques,ad Tools」、Aho 他著、Addiso
n-Weslay出版)。
【0003】図6は従来のデータ型検査装置のブロック
図である。1は形式言語で記述された文章を単語単位に
分解する読み取り器、2は読み取り器1から出力された
単語列の構文解釈を行い構文木を作成する文法解釈器、
3は構文木のうちデータ型を宣言する宣言文からデータ
名を抽出する名前抽出器、4は宣言文からデータ型を抽
出する型抽出器、5は構文木のうち実行文から型検査が
必要な文を抽出する文抽出器、7は抽出されたデータ名
及びデータ型からデータ名と対応するデータ型とが登録
された名前表を作成する名前表作成器、8は文抽出器5
により抽出された文の型検査を名前表に基づいて行う型
検査器、9は型検査器8で型エラーが発見されたときに
エラー表示を行うエラー表示器である。
【0004】次に、このようなデータ型検査装置の動作
を説明する。読み取り器1は、形式言語で記述された文
章を単語単位に分解し、単語列を作成する。文法解釈器
2は、あらかじめ決められている形式言語の文法に従っ
て単語列の解釈を行い、構文木を作成する。構文木と
は、単語を節とし、単語間の文法的依存関係を枝とする
データ構造である。次に、名前抽出器3は、構文木で示
されるデータ宣言文からデータ名を取り出す。データ宣
言文とは、例えば「int x;」のようにデータxが
int型(整数型)であることを宣言する文である。
【0005】また、型抽出器4は、構文木で示されるデ
ータ宣言文からデータ型(上記の例ではint)を取り
出し、文抽出器5は、構文木で示される実行文から型検
査が必要な文を取り出す。そして、名前表作成器7は、
抽出されたデータ名及びデータ型から名前表を作成す
る。次いで、型検査器8は、名前表作成器7で作成され
た名前表を参照しながら、文抽出器5によって抽出され
た文の型検査を行い、型の不一致があれば、エラー表示
器9にエラー内容を表示させる。
【0006】このようなデータ型検査装置では、あらか
じめ決まったデータ型しか検査することができない。し
たがって、例えば「{y:int|y<5 and y
>1}」という宣言文(この例では、データyは整数型
で、1より大きく、かつ5よりも小さいと宣言してい
る)のように、任意の集合をデータ型として扱える形式
言語の型検査を行うことはできない。
【0007】
【発明が解決しようとする課題】以上のように、従来の
データ型検査装置では、あらかじめ決まったデータ型し
か認められていないため、例えばZ言語のように、任意
の集合をデータ型として扱えるような形式言語の型検査
を行うことができないという問題点があった。また、文
字で記述された形式言語しか扱うことができないため、
図形などの非文字データで記述された形式言語の型検査
を行うことができないという問題点があった。本発明
は、上記課題を解決するためになされたもので、任意の
集合をデータ型として扱える形式言語の型検査を行うこ
とができるデータ型検査装置を提供することを目的とす
る。
【0008】
【課題を解決するための手段】本発明は、形式言語で記
述された文章を単語単位に分解する読み取り器と、この
読み取り器から出力された単語列の構文解釈を行い構文
木を作成する文法解釈器と、構文木のうちデータ型を宣
言する宣言文からデータ名を抽出し、集合に名前を与え
る宣言文から集合名を抽出する名前抽出器と、宣言文か
らデータ型を抽出し、集合名と対応する集合とが登録さ
れたデータ型表に基づいて、定義済みの集合名を使って
データ型を宣言する宣言文からデータ型を抽出し、集合
に名前を与える宣言文から集合を抽出する型抽出器と、
型検査を可能にするために、型抽出器から出力されたデ
ータ型をこのデータ型を包含する所定のデータ型に変換
する型弱化器と、構文木のうち実行文から型検査が必要
な文を抽出する文抽出器と、データ名及びデータ型が抽
出されたときに、データ名と対応するデータ型とが登録
された名前表を作成し、集合名及び集合が抽出されたと
きに、データ型表を作成する名前表作成器と、文抽出器
によって抽出された文の型検査を名前表に基づいて行う
型検査器と、この型検査器で型エラーが発見されたとき
にエラー表示を行うエラー表示器とを有するものであ
る。
【0009】また、型弱化器は、データ型の表現形式が
集合に含まれる要素の基本型とその要素が満たすべき制
約で記述されたZF表現の場合、基本型を所定のデータ
型とし、集合に含まれる要素が並べられた列挙表現の場
合、各要素がもつデータ型のうち最も広いものを所定の
データ型とし、集合名を使ってデータ型を定義する集合
名表現の場合、データ型として型抽出器から得られた集
合がZF表現のときは基本型を所定のデータ型とし、デ
ータ型として型抽出器から得られた集合が列挙表現のと
きは各要素がもつデータ型のうち最も広いものを所定の
データ型とするものである。
【0010】
【作用】本発明によれば、集合に名前を与える宣言文が
入力されると、集合名及び集合が抽出されてデータ型表
が作成され、集合名を使ってデータ型を宣言する宣言文
が入力されると、名前抽出器がデータ名を抽出して型抽
出器がデータ型表に基づいてデータ型を抽出し、型弱化
器がデータ型を所定のデータ型に変換し、名前表作成器
が名前表を作成する。また、データ型を宣言する宣言文
が入力されると、データ名及びデータ型が抽出され、デ
ータ型が所定のデータ型に変換され、名前表が作成され
る。そして、型検査器が、文抽出器によって抽出された
文の型検査を名前表に基づいて行う。
【0011】また、型弱化器は、データ型の表現形式が
ZF表現の場合、基本型を所定のデータ型とし、列挙表
現の場合、各要素のデータ型のうち最も広いものを所定
のデータ型とし、集合名表現の場合、データ型として得
られた集合から所定のデータ型を決定することにより、
集合で表されるデータ型を型検査が可能なデータ型に変
換する。また、文字変換器は、非文字データで記述され
た形式言語を文字データに変換する。
【0012】
【実施例】図1は本発明の1実施例を示すデータ型検査
装置のブロック図、図2はこのデータ型検査装置の動作
を説明するためのフローチャート図であり、図6と同一
の構成要素には同一の符号を付してある。3aは名前抽
出器3と同様にデータ名を抽出し、集合に名前を与える
データ宣言文から集合名を抽出する名前抽出器、4aは
型抽出器4と同様にデータ型を抽出し、定義済みの集合
名を使ってデータ型を宣言する宣言文から後述するデー
タ型表に基づいてデータ型を抽出し、集合に名前を与え
る宣言文から集合を抽出する型抽出器である。
【0013】また、6は型抽出器4aから出力されたデ
ータ型をこのデータ型を包含する所定のデータ型に変換
する型弱化器、7aは名前表作成器7と同様に名前表を
作成すると共に、集合名及び集合が抽出されたときに、
集合名と対応する集合とが登録されたデータ型表を作成
する名前表作成器である。
【0014】次に、このようなデータ型検査装置の動作
を説明する。形式言語で記述された文章を入力とする読
み取り器1は、まず後述する型検査がすべて終了したか
どうかを判定する(ステップ100)。型検査が終了し
ていない場合は、入力された文章を単語単位に分解し、
単語列を作成する(ステップ102)。文法解釈器2
は、あらかじめ決められている形式言語の文法に従って
単語列の解釈を行い、構文木を作成する(ステップ10
3)。
【0015】そして、構文木のうちデータ宣言文は、名
前抽出器3a、型抽出器4aに出力され、実行文は文抽
出器5に出力される(ステップ104)。ところで、デ
ータ型の表現には、例えば「int x;」のように、
あらかじめ定められているデータ型による表現形式(以
下、定型表現とする)と、任意の集合をデータ型として
扱う表現形式とがある。
【0016】このような任意の集合をデータ型として扱
う表現形式としては、ZF表現、列挙表現、集合名表現
という3つがある。ZF表現は、例えば「{y:int
|y<5 and y>1}」のように、集合に含まれ
る要素の基本的な型と、その要素が満たすべき制約の2
つから構成される表現である。すなわち、このデータ宣
言文により、データyはその基本的な型が整数型で、制
約が1より大きく、かつ5よりも小さいと定義されたこ
とになる。
【0017】列挙表現は、「z={2、3、4}」のよ
うに、集合に含まれる要素をすべて書き並べた表現であ
る。また、集合名表現は、データ宣言文の前の方で「D
ATATYPE1={1、3、5}」のように記述する
ことにより、{1、3、5}という集合にDATATY
PE1という集合名を与え、この宣言文より後ろで
「w:DATATYPE1;」という記述をすることに
より、すでに定義された集合名DATATYPE1を使
ってデータwのデータ型を定義するものである。
【0018】そして、名前抽出器3aは、構文木で示さ
れるデータ宣言文からデータ名(変数名)を取り出し、
また「DATATYPE1={1、3、5}」のような
集合名を定義するデータ宣言文から集合名を取り出す
(ステップ105)。すなわち、上記のようなデータ宣
言文が入力されると、データ名としてx、y、z、wが
それぞれ抽出され、集合名としてDATATYPE1が
抽出されることになる。
【0019】次に、型抽出器4aは、データ宣言文から
データ型を取り出し、また集合名を定義するデータ宣言
文から集合を取り出す(ステップ106)。つまり、型
抽出器4aは、「int x;」という宣言文が入力さ
れた場合、データ型としてintを抽出し、「{y:i
nt|y<5 and y>1}」というZF表現の場
合、{int|y<5 and y>1}」を抽出し、
「z={2、3、4}」という列挙表現の場合、{2、
3、4}を抽出する。
【0020】また、「DATATYPE1={1、3、
5}」のように集合名を定義する宣言文が入力される
と、集合{1、3、5}を取り出す。なお、「w:DA
TATYPE1;」のような集合名表現のデータ宣言文
の場合、この文だけではデータ型を抽出できないが、後
述するデータ型表を参照することによって{1、3、
5}をデータ型として抽出することができる。
【0021】続いて、型弱化器6は、型抽出器4aから
出力された以上のようなデータ型をこのデータ型を包含
する所定のデータ型に変換する(ステップ107)。な
お、集合名表現による集合については、そのまま出力す
るものとする。図3はこの型弱化器6の動作を説明する
ためのフローチャート図である。最初に、型弱化器6
は、型抽出器4aから出力されたデータ型を受け取る
と、どの表現形式をとっているかを判断する(ステップ
200)。
【0022】ステップ200において定型表現と判断し
た場合には、データ型を変換せずにそのまま出力して終
了する(ステップ205)。また、ZF表現と判断した
場合、制約を示す部分を無視して、要素の基本的な型を
示す部分(上記の例ではint)を取り出し、これをデ
ータ型として出力する(ステップ201)。
【0023】ステップ200において列挙表現と判断し
た場合には、すべての要素のデータ型を求め(ステップ
202)、求めた全データ型の和集合をとることによ
り、要素がもつデータ型のうち最も広いものを取り出
し、これを出力する(ステップ203)。上記の例で
は、型抽出器4aから出力された{2、3、4}の要素
がすべて整数型なので、型弱化器6から出力されるデー
タ型はintとなる。
【0024】また、集合名表現と判断した場合、入力さ
れたデータ型が{1、3、5}のように列挙表現の形式
をとっていれば、上記列挙表現と同じ処理を行ってデー
タ型を求める(ステップ204)。また、本実施例で
は、集合名DATATYPE1が列挙表現で定義された
例を挙げたが、ZF表現で定義することもでき、この場
合型抽出器4aで得られたデータ型もZF表現となるの
で、上記ZF表現と同じ処理を行ってデータ型を求める
(ステップ204)。こうして、型弱化器6による所定
のデータ型への変換が終了する。
【0025】次に、名前表作成器7aは、名前抽出器3
aからデータ名が入力されて型弱化器6からデータ型が
入力された場合、データ名とデータ型とが対応している
名前表を作成し、また集合名と集合が入力された場合、
集合名とこれが示す集合とが対応しているデータ型表を
作成する(ステップ108)。例えば、「int
x;」というデータ宣言文が読み取り器1に入力される
と、上述の動作により、名前抽出器3aからデータ名x
が出力され、型弱化器6からデータ型intが出力され
るので、「x→int」という対応関係が名前表に登録
される。
【0026】また、「{y:int|y<5 and
y>1}」という宣言文が入力された場合、「y→in
t」という対応関係が登録され、「z={2、3、
4}」が入力された場合、「z→int」という関係が
登録され、「w:DATATYPE1;」が入力された
場合、「w→int」という関係が名前表に登録され
る。
【0027】そして、「DATATYPE1={1、
3、5}」という集合名を定義する文が読み取り器1に
入力されたときには、名前抽出器3aから集合名DAT
ATYPE1が出力され、型弱化器6から集合{1、
3、5}が出力されるので、「DATATYPE1→
{1、3、5}」という関係がデータ型表に登録され
る。なお、集合名を定義するデータ宣言文は、「w:D
ATATYPE1;」のように定義済みの集合名を使っ
てデータ型を定義する宣言文より前に配置されるべきも
のなので、定義済みの集合名を使う宣言文が入力された
ときには、上記の対応関係が既にデータ型表に登録され
ていることになる。
【0028】したがって、型抽出器4aは、「w:DA
TATYPE1;」という宣言文が入力されたときに、
データ型表を参照することにより、集合名DATATY
PE1に対応する集合{1、3、5}を取り出し、これ
をデータ型として出力することができる。
【0029】次いで、名前抽出器7aは、以上のような
名前表、あるいはデータ型表の作成の際に、登録するデ
ータ名、あるいは集合名がすでに登録されていないかど
うか重複を検査し(ステップ109)、既に登録されて
いればエラー表示器9にエラー表示を行わせる(ステッ
プ110)。
【0030】一方、文抽出器5は、構文木で示される実
行文から型検査を行うべき文を取り出す(ステップ11
1)。次に、型検査器8は、名前表作成器7aで作成さ
れた名前表を参照しながら、文抽出器5によって抽出さ
れた文の型検査を行う(ステップ112)。そして、型
の不一致が見つかった場合、エラー表示器9にエラー内
容を表示させる(ステップ113、114)。
【0031】型の不一致とは、例えばデータ宣言文で
「int x;」と記述したにも拘らず、実行文で「x
=1.00」のように実数型の記述をしてしまったよう
な場合である。このような検査が読み取り器1に入力さ
れる全ての文について行われる。こうして、集合で表さ
れるデータ型をそれを包含する所定のデータ型に変換す
ることにより、通常の形式言語で扱う型(定型表現)に
変換できるので、任意の集合をデータ型として扱う形式
言語の型検査を行うことができる。
【0032】図4は本発明の他の実施例を示すデータ型
検査装置のブロック図、図5はこのデータ型検査装置の
動作を説明するためのフローチャート図であり、図1と
同一の構成要素には同一の符号を付してある。10は非
文字データで記述された形式言語を文字データに変換す
る文字変換器である。
【0033】本実施例と図1の例が異なるのは、読み取
り器1の前に文字変換器10が設けられていることであ
り、文字変換器10は、例えばペトリネットのように図
形等の非文字データで表現された形式言語をコード化し
て文字データに変換する(図5ステップ101)。読み
取り器1以降の動作は、図1の例と同様である。これに
より、非文字データで記述された形式言語も通常の形式
言語と同様に扱うことができる。
【0034】
【発明の効果】本発明によれば、型弱化器が型抽出器に
よって抽出されたデータ型をあらかじめ決められた所定
のデータ型に変換するので、任意の集合をデータ型とし
て扱う形式言語の型検査を行うことができる。また、集
合に名前を与える宣言文から名前表作成器がデータ型表
を作成し、集合名を使ってデータ型を宣言する宣言文か
ら型抽出器がデータ型表に基づいてデータ型を抽出する
ので、集合名を使ってデータ型を宣言する形式言語の型
検査を行うこともできる。
【0035】また、型弱化器は、データ型の表現形式が
ZF表現の場合、基本型を所定のデータ型とし、列挙表
現の場合、各要素の型のうち最も広いものを所定のデー
タ型とし、集合名表現の場合、データ型として得られた
集合から所定のデータ型を決定するので、集合で表され
るデータ型を型検査が可能なデータ型に容易に変換する
ことができる。また、非文字データで記述された形式言
語を文字データに変換する文字変換器を設けることによ
り、非文字データで記述された形式言語も文字データで
記述された形式言語と同様に型検査することができる。
【図面の簡単な説明】
【図1】 本発明の1実施例を示すデータ型検査装置の
ブロック図である。
【図2】 図1のデータ型検査装置の動作を説明するた
めのフローチャート図である。
【図3】 型弱化器の動作を説明するためのフローチャ
ート図である。
【図4】 本発明の他の実施例を示すデータ型検査装置
のブロック図である。
【図5】 図4のデータ型検査装置の動作を説明するた
めのフローチャート図である。
【図6】 従来のデータ型検査装置のブロック図であ
る。
【符号の説明】
1…読み取り器、2…文法解釈器、3a…名前抽出器、
4a…型抽出器、5…文抽出器、6…型弱化器、7a…
名前表作成器、8…型検査器、9…エラー表示器、10
…文字変換器。

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 任意の集合をデータ型として扱える形式
    言語のためのデータ型検査装置であって、 形式言語で記述された文章を単語単位に分解する読み取
    り器と、 この読み取り器から出力された単語列の構文解釈を行い
    構文木を作成する文法解釈器と、 前記構文木のうちデータ型を宣言する宣言文からデータ
    名を抽出し、集合に名前を与える宣言文から集合名を抽
    出する名前抽出器と、 前記宣言文からデータ型を抽出し、集合名と対応する集
    合とが登録されたデータ型表に基づいて、定義済みの集
    合名を使ってデータ型を宣言する宣言文からデータ型を
    抽出し、集合に名前を与える宣言文から集合を抽出する
    型抽出器と、 型検査を可能にするために、型抽出器から出力されたデ
    ータ型をこのデータ型を包含する所定のデータ型に変換
    する型弱化器と、 前記構文木のうち実行文から型検査が必要な文を抽出す
    る文抽出器と、 前記データ名及びデータ型が抽出されたときに、データ
    名と対応するデータ型とが登録された名前表を作成し、
    集合名及び集合が抽出されたときに、前記データ型表を
    作成する名前表作成器と、 文抽出器によって抽出された文の型検査を名前表に基づ
    いて行う型検査器と、 この型検査器で型エラーが発見されたときにエラー表示
    を行うエラー表示器とを有することを特徴とするデータ
    型検査装置。
  2. 【請求項2】 請求項1記載のデータ型検査装置におい
    て、 前記型弱化器は、データ型の表現形式が集合に含まれる
    要素の基本型とその要素が満たすべき制約で記述された
    ZF表現の場合、前記基本型を所定のデータ型とし、集
    合に含まれる要素が並べられた列挙表現の場合、各要素
    がもつデータ型のうち最も広いものを所定のデータ型と
    し、集合名を使ってデータ型を定義する集合名表現の場
    合、データ型として型抽出器から得られた集合がZF表
    現のときは前記基本型を所定のデータ型とし、データ型
    として型抽出器から得られた集合が列挙表現のときは各
    要素がもつデータ型のうち最も広いものを所定のデータ
    型とするものであることを特徴とするデータ型検査装
    置。
JP6310258A 1994-12-14 1994-12-14 データ型検査装置 Expired - Lifetime JP2727987B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6310258A JP2727987B2 (ja) 1994-12-14 1994-12-14 データ型検査装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6310258A JP2727987B2 (ja) 1994-12-14 1994-12-14 データ型検査装置

Publications (2)

Publication Number Publication Date
JPH08166885A JPH08166885A (ja) 1996-06-25
JP2727987B2 true JP2727987B2 (ja) 1998-03-18

Family

ID=18003087

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6310258A Expired - Lifetime JP2727987B2 (ja) 1994-12-14 1994-12-14 データ型検査装置

Country Status (1)

Country Link
JP (1) JP2727987B2 (ja)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
「LECTURE NOTES ON COMPUTER SCIENCE」VOL.512,(1991)P.180−199

Also Published As

Publication number Publication date
JPH08166885A (ja) 1996-06-25

Similar Documents

Publication Publication Date Title
JPS638864A (ja) 翻訳装置
JPS6318458A (ja) 感情情報抽出装置
JP2727987B2 (ja) データ型検査装置
JPH0344764A (ja) 機械翻訳装置
JPH02224132A (ja) メッセージパーサの自動発生システム
JPS6180362A (ja) 翻訳装置
JPS6190269A (ja) 翻訳方式
JP2675100B2 (ja) 言語変換器及び言語変換方法
JP3113257B2 (ja) 機械翻訳装置
JP3003459B2 (ja) プログラム作成支援装置
JP2794919B2 (ja) 機械翻訳装置
JP3141945B2 (ja) コンパイル装置
JP4092861B2 (ja) 自然言語パターン作成装置及び方法
JPS6190268A (ja) 翻訳方式
JPS62272357A (ja) 機械翻訳システムにおける入力文のエラ−表示方式
JP2650099B2 (ja) ドキュメント抽出装置
JP2002182913A (ja) 自動プログラミング装置、方法及び記憶媒体
JPS62264367A (ja) 日本語生成装置
Huiskens et al. Developing a tool for the description of language acquisition
Baldridge et al. Leo: an Architecture for Sharing Resources for Unification-Based Grammars.
Gomes Development of an ATLAS test language to automatic test markup language translator
JPH01112367A (ja) 機械翻訳装置
JPS6337473A (ja) 翻訳装置
JPS59125447A (ja) プログラミング言語の実行方法
JPH03290740A (ja) テストデータ自動生成システム