JPS61103247A - 翻訳プログラム作成システム - Google Patents

翻訳プログラム作成システム

Info

Publication number
JPS61103247A
JPS61103247A JP60201908A JP20190885A JPS61103247A JP S61103247 A JPS61103247 A JP S61103247A JP 60201908 A JP60201908 A JP 60201908A JP 20190885 A JP20190885 A JP 20190885A JP S61103247 A JPS61103247 A JP S61103247A
Authority
JP
Japan
Prior art keywords
block
production
program
translation program
translation
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
Application number
JP60201908A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS61103247A publication Critical patent/JPS61103247A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 以下の順序で本発明を説明する。
A、産業上の利用分野 B、開示の概要 C1従来の技術 り3発明が解決しようとする問題点 E1問題点を解決するための手段 F、実施例 Fl、  全般的説明(第1図および第2図)F 2.
  用語の説明 F 3.  翻訳プログラム作成プログラムの要部の説
明(第1図および第2図) F 4.  翻訳プログラム作成プログラムの詳細な説
明(第3A図〜第6B図) G1発明の効果 A、産業上の利用分野 本発明はコンピュータシステムに係り、詳細には翻訳プ
ログラムの生成と該翻訳プログラムの検査に必要なテス
トケースの生成を自動化するコンピユータシステム内部
の装置に係る。
B、開示の概要 ユーザの原始コードを目的コードに変換しうる翻訳プロ
グラムを生成するための翻訳プログラム作成システムが
開示される。原始コードの言語は、独特の形式、すなわ
ちバッカス記法(BackusNouer  Form
s略してBNF記法)にまとめられる。原始コードのB
NF記法は、この原始コードを目的コードに変換するた
めに、翻訳プログラム作成システムによシ利用される。
BNF記法は、原始コードの言語に関連した属性仕様、
ならびに原始コードの言語文法における属性仕様の相互
作用を考慮に入れている。翻訳プログラム作成システム
は、有効なテストケース生成プログラムを含み、このプ
ログラムはユーザの原始コードの言語において可能なあ
らゆる正しいプログラムステー”□       トメ
・トを使用して、生成された翻訳プ・グラ・を検査する
。更に、翻訳プログラム作成システムは誤りのある無効
なテストケース生成プログラムをも含み、このプログラ
ムはユーザの原始コードの言語において可能なあらゆる
誤シのある無効なプログラムステートメントラ使用して
、生成された翻訳プログラムを検査する。その結果、生
成された翻訳プログラムを検査するのに必要な労力すな
わち工数が著しく減少した。
C1従来の技術 ]ンパイラおよびインタプリタは、1組の原始コードを
計算機が読取りうる1組の目的コードに変換するために
、コンピュータシステムによって利用される。一般に、
コンパイラ/インタプリタは、データ処理システムと、
該システムに記憶された翻訳プログラムとを含む。この
翻訳プログラムの制御下にあるデータ処理システムは、
ユーザの原始コードを受取り、これを計算機が読取りう
る目的コードに変換する。             
    1翻訳プログラムは、その生成後に検査を行な
う必要があシ、この検査には数人年を要することがある
翻訳プログラムを生成し且つ検査するのに要する時間を
減少するために、翻訳プログラム作成システムが開発さ
れている。これらの作成システムは、コンパイラ/イン
タプリタによシ必要とされる翻訳プロゲラ・ムを生成す
るためのものである。
しかし、従来の翻訳プログラム作成システムには、次の
ような欠点がある。
すなわち、すべての翻訳ソフトウェアは、コンパイル機
能の実行に際し、一定の基本的な規則を利用しなければ
ならない。例えば、“A+B☆C″と表示された演算で
は、”十−の演算を”☆”の演算の前または後のいずれ
で実行するかを決定せねばならない。この決定に当シ、
プログラム言語の記号ストリングを構築するための1組
の規則を利用しなければならない。この1組の規則はそ
の言語の文法として知られている。更に、前述の演算で
は、意味解析を行なうことにより、演算“十”および1
☆”によりどのような動作が指定されているかを決定す
る。すなわち、意味解析は、ユーザの原始コードの意味
を決定するのである。更に、ユーザの原始コード中にあ
る記号の意味は、その属性にニジ表現される。可能な属
性として、原始−テキスト行番号、型、次元の数、各次
元の長さ、内部的な木構造、および記憶クラスなどがあ
る。
コンパイル機能を実行する際に翻訳ソフトウェアが利用
するこれらの基本的な規則のより詳細な情報については
、ピータ・カリンガートの著簀“アセンブラ、コンパイ
ラ、およびプログラム翻訳”、コンピュータ・サイエン
ス・フレス社発行(”Assemblers、Comp
ilers、and ProgramTranslat
ion”  by Peter  Calingaer
t%Computer  5cience  Pres
ss Inc、)を参照されたい。
D1発明が解決しようとする問題点 従来の翻訳プログラム作成システムにより生成された翻
訳プログラムは、コンパイル中の原始コードの言語によ
って必要とされる属性仕様を考慮に入れていなかったし
、該原始コードの言語に関連した文法の属性仕様の相互
作用をも考慮に入れていなかった。更に、これらの翻訳
プログラム作成システムによって生成された翻訳プログ
ラム中に、前述の意味解析に関連した意味モジュール呼
出しを、人手で配置する必要があった。意味モジュール
呼出しを人手で配置することは、重大な問題を提起した
。以下にその理由を示す。すなわち、翻訳プログラム作
成システムは、最初に入力された文法がコンパイル・プ
ロセスを経て変換された文法になるという点で、コンパ
イラ自体として動作する。従来はこれらの作成システム
により生成した翻訳プログラム中に意味モジュール呼出
しを人手で配置していたために、システムが使用する変
換された文法と最初に入力した文法とを関連づける方法
がなかった。更に、翻訳プログラムを生成し、これをそ
の関連するデータ処理システムの環境に記憶すると、翻
訳プログラムを検査するの”    VC*AIF−*
ヶ。ヤ、、、7よヶあ、おい。
したがって、本発明の目的は、従来の翻訳プログラム作
成システムに関連した欠点を取除くように設計された、
改良された翻訳プログラム作成システムを提供すること
である。
本発明の他の目的は、新規なテストケース生成および検
査能力を備えた、改良された翻訳プログラム作成システ
ムを提供することである。
本発明の他の目的は、原始コードの言語を表わす言語記
述(この言語のBNF定義)に応じて翻訳プログラムを
生成する、頃良された翻訳プログラム作成システムを提
供することである。
本発明の他の目的は、原始コードの言語のBNF定義が
この言語に関連した属性仕様、ならびにこの言語の文法
中における属性仕様の相互作用を考慮に入れるようにし
た7・、改良された翻訳プログラム作成システムを提供
することである。
本発明の他の目的は、前記言語のBNF定義が意味モジ
ュール呼出しを、生成された翻訳プログラム中に正しく
かつ自動的に配置するようにした、改良された翻訳プロ
グラム作成システムを提供することである。
E1問題点を解決するための手段 本発明の前記およびその他の目的に従って、ユーザの原
始コードの言語を表わす言語記述(前記言語のBNF定
義)に応じて翻訳プログラムを生成する、改良された翻
訳プログラム作成システムが提供される。この翻訳プロ
グラム作成システムは、入力言語記述に応じて翻訳プロ
グラムを生成するように、データ処理システムに記憶さ
れた翻訳プログラム作成プログラムによって特徴づけら
れる。生成された翻訳プログラムは、例えば、ユーザの
原始コードを対応する目的コードに変換するためにコン
パイラによって使用される。目的コードはコンピュータ
システムによう使用され、該コードにより定義された一
定の機能の実行を制御する。前記言語のBNF定義のフ
ォーマットは一意的であって、ユーザの原始コードの言
語で必要な一定の属性仕様と、該原始コードに関連した
文法中の属性仕様の相互作用とを考慮に入れている。
更に、この翻訳プログラム作成システムは、生成された
翻訳プログラム中に意味モジュール呼出しを自動的に配
置する。更に、本発明の翻訳プログラム作成システムは
、テストケースを生成し質問する能力も有する。この翻
訳プログラム作成システムは、正確な1組の言語ステー
トメントおよび、誤りのある1組のステートメントを含
むデータベースを有する。正確なステートメントは本発
明の翻訳プログラム作成システムにより生成され、前記
コンパイラによって使用される生成済みの翻訳プログラ
ムを検査するためと、その検査結果を分析するために利
用される。誤りのあるステートメントは、生成済みの翻
訳プログラムを検査して、その検査の結果、適切なエラ
ーメツセージのすべてが生成されるかどうかを判定する
ために利用される。この翻訳プログラム作成システムは
翻訳プログラム作成プログラムを含み、該プログラムは
そのデータ処理システムに関連して、ユーザの原始コー
ドのBNF定義に応じてコ/パイッ/インタプリタによ
シ使用される翻訳プログラムを生成する。
F、実施例 F 1.  全般的説明(第1図および第2図)第1図
は本発明による翻訳プログラム作成システム10を示す
。翻訳プログラム作成システム10は以下で説明するよ
うに、主としてソフトウェアで実現される。しかしなが
ら、このソフトウェアは・本発明の独特の機能を実行す
るため(Cハードウェアシステムによって利用される。
翻訳プログラム作成システム1oば、本発明の独特の機
能を実行するためにハードウェアでも実現することがで
きる。翻訳プログラム作成システム1oは、データ処理
システムと該データ処理システム内に記憶された翻訳プ
ログラム作成プログラム10alを含む。データ処理シ
ステムは、システムバスと、該システムバスに接続され
翻訳プログラム作成プログラム10ai(コンパイル・
マシントモいう)およびコンパイラ/インタプリタシス
テム10a2(実行マシンともいう)t−記憶する主記
憶10aと、システムバスに接続されたプロセノ−’)
−10’trと、システムバスに接続されユーザの原始
コードのBNF定義をソフトウェア形式で記憶するAT
BNFデータ入力および記憶手段10cと、システムバ
スに接続されユーザの原始コードを入力するユーザコマ
ンド入力手段10dと、システムバスに接続され1組の
結果を印刷するプリンター0eとを含む。前述のデータ
処理システムの機能を実行するのに利用しうる代表的な
データ処理システムは、IBM社のマニュアル“IBM
システム/670動作原理” (” I B M  S
ys tem/370Principles  of 
 0peration=)、FormNo、GA22−
7000、に示されている。
第2図は第1図の翻訳プログラム作成プログラム10’
alの構成を示す。第2図において、翻訳プログラム作
成プログラム10a1は、AT BNFプロセッサ10
a1A、コード生成プログラム10alB、”良いテス
トケース”生成プログラム10alCおよび”悪いテス
トケース”生成プログラム10alDを含む。
前述のように、ユーザの原始コードは、該原始コードの
入力言語記述、すなわちこのコードのBNF定義によシ
表現される。BNF定義の言語は一意的かつ明確であシ
、その詳細はウィリアム・マツキーマンほかの著書1コ
ンピユータ生成プログラム”、フレンチイス嗜ホール社
(WilliamMckeeman  et  aL 
@A ComputerGenerator”、、Pr
entice Hal l )に記載サレテイル。BN
F定義の言語は、ダビット・グリースの著書1デイジタ
ルコンピユータのコンパイラ構造″ジョン・ウィリー・
アンド・サンズ社(David  Gries  −C
ompiler Con5tructionfor D
igital  Computers’s JohnW
iley  and  Song、Inc)にも記載さ
れている。
第2図において、ATBNFデータ入デーよび記憶手段
10cは、ユーザの原始コードをソフトウェアプログラ
ム形式で記憶する。ユーザの原始コード自体は、第2図
のユーザコマンド大刀手段10d中の記憶装置に記憶さ
れる。コンパイラ/インタプリタシステム10a2はユ
ーザの原始コードを受取シ、コンパイラの場合には、こ
の原始コードを目的コードに変換するとともに、これを
第2図に示す゛ユーザの結果″18として供給する。
次に、第1図および第2図に示す本発明の動作について
説明する。
第1図および第2図分参照するに、ユーザの原始コード
のBNF定義は、ATBNFデータ入力および記憶手段
10ci介して翻訳プログラム作成システム10に入力
され、そして主記憶10aに記憶される。翻訳プログラ
ム作成プログラム10a1の一部分であるATBNFプ
ロセッサ10aIAはBNF定義を受取シ、該定義をコ
ンパイルすることによシ、このBNF定義をコード生成
プログラム10aIBが読取シうる形式に変換する。そ
の結果、変換されたBNF定義(すなわち、変換された
文法定義)が生成される。コード生成プログラム10a
1Bは変換されたBNF定義をATBNFプロセッサ1
qaIAから受取シ、翻訳プログラムを生成する。翻訳
プログラムは主記憶10aに記憶され、コンパイラ/イ
ンタプリタシステム10a2の一部分を形成する。コン
パイラ/インタプリタシステム10a2は、前記翻訳プ
ログラムを利用して、ユーザコマンド入力手段IDd’
i介して入力されたユーザの原始コードを目的コードに
変換する。この目的コードは第2図の“ユーザ″の結果
18によシ表わされる。
1良いテストケース”生成プログラム10a1Cは、本
質的に、ユーザの原始言語で記述された多くのプログラ
ムステートメント例を含むデータベースである。プログ
ラムステートメント例は正しい形式で記述されるので、
有効なプログラムステートメントを表わす。このデータ
ベース内に含まれたプログラムステートメントの数およ
び種類に関し、可能な正しいプログラムステートメント
または言語例が少くとも1回生じる。
す:       “悪いテ〜トケーへ”生成プ・グラ
ム1o・1Dもデータベースであるが、このデータベー
スはユーザの原始言語で記述した多くの正しくないか、
さもなければ無効なプログラムステートメントを含む。
このデータベース内に含まれたプログラムステートメン
トの数と種類に関し、可能な正しくない、無効なプログ
ラムステートメントまたは言語例が少くとも1回生じる
翻訳プログラムが主記憶10aのコンパイラ/インタプ
リタシステム10a2の部分に記憶されると、ATBN
Fプロセッサ10alAは、5良いテストケース″生成
プログラム10a1Cに対し、記憶されている正しいプ
ログラムステートメントを使用して翻訳プログラムを質
関し検査するように命令する。翻訳プログラムは正しい
プログラムステートメントを受取って、これを目的コー
ドに変換する。それによシ、第2図の゛良い結果″20
に示す1組の結果が生じる。かくて、ユーザは”良い結
果”20を分析することにより、翻訳プログラムおよび
コンパイラが正しく動作していることを確認することが
できる。
次にATBNFプロセッサ10aIAは“悪いテストケ
ース”生成プログラム10alDに対し、記憶された、
正しくない無効なプログラムステートメントを利用して
翻訳プログラムを質関し検査するように命令する。翻訳
プログラムは正しくないプログラムステートメントを目
的コードに変換しようと試みる。しかしながら、コンパ
イラ−/インタプリタシステム10a2は、目的コード
の代りに、コイパイル動作を受ける無効な正しくないプ
ログラムステートメントを表わす多数のエラーメツセー
ジを生成する。これらのエラーメツセージは第2図の“
悪い結果”22として示されている。次にユーザは゛悪
い”結果22を分析することにより、すべての正しくな
い無効なプログラムステートメントにそれぞれ対応する
適切なエラーメツセージがすべて、コンパイラ/インタ
プリタシステム10a2によシ生成されていることを確
認する。このようにして、翻訳プログラムおよび関連ス
るコンパイラ/インタプリタシステム10a2が正しく
動作しているかどうかを判定することができる。
F 2.  用語の説明 次に、翻訳プログラム作成プログ−) ムi 0 a 
1の構造および動作の詳細な説明(後述)の理解を容易
にするため、当業者が用いる棟々の用語の意味について
説明する。
文(sentence)を図解する場合、この文の構造
すなわち構文が表わされる。しかしながら、図解された
文は、その文自体の意味を表わさない。
このような文の構文的記述を文法と呼ぶ。一般的な規則
として、図解された文では主部と述部が使用される。こ
のような一般的な規則は、下記の数学的記号: く文>::=<主部〉〈述部〉 により記述することができる。ただし、記号”::=″
は”その左側の部分がその右側の部分にj:#)構成さ
れうる″ことを意味する。文の文法はこのような規則を
2以上含むことがある。代替的K、もしこれと同様の1
組の規則が(前述の数学的記号の形式を利用して)考案
され、コンピュータ言語を原始コード形式で記述するな
らば、′これらの規則は、コンピュータ言語の原始コー
ドを生゛成するだめに用いることができる。これらの規
則は、生成規則と呼ばれることが多い。“記号”および
゛トークン″は同義語として使用され、その各々は有限
で、非空の1組の要素を表わす。記号またはトークンの
列はストリングと呼ばれる。特定の文法規則が与えられ
ると、規則の左の部分として現わバる記号は非終端(n
onterminal)記号と呼ばれ、その他の記号は
終端(terminal)記号と呼ばれる。例えば、(
d i g i t > : : ” 5の規則では、
非終端記号は“(d i g i t )″であり、終
端記号は“6″である。非終端記号はブラケット記号<
9.〉により識別される。もしU=x、U=y、および
U=zであれば、これらの等式の意味を、より簡単な表
現: U::=xlylz で表わすことができる。この表現を利用すると、成る言
語の文法を下記の形式で記述することができる。
′11< n u。、。r)::=3゜。
<no>    ::=(no>(digit>l(d
igit)<digit)::=0111213141
51前述の言語形式’1BNF記法と定義する。前述の
数字の例は文法定義におけるデータ属性の仕様および変
換の必要性を示す。−例として、“2″および“5”の
数列は通常、数25とみなされる。
同様に、含まれている文字が数字だけの場合、このよう
な結合(association)は有効である。
従って、2とそれに続く5は25と解されるが、2とそ
れに続くzはふつうは数字2zにはならない。更に、こ
れらの数字は、コンピュータプログラムが処理可能な形
式に符号化されねばならない。
属性情報は、表記A(数字)を使用することにより文法
定義中で指定される。この表記Aは、当該言語中のこの
点で必要とされるデータ属性が数字でなければならない
という宣言である。
2つの文字を、コンピュータが識別可能な1つの数字へ
変換することは、F(XXX)により指定される。ただ
し、XXXは変換を行なうルーチ     1ン名であ
る。処理可能な形式に変更されたくnumber)のた
めの文法は、次のようになる。   ・(numbsr
:):: =F(cty=0)(no><no>::=
(no>F(ctr2=cty)<:digit、>A
(num)F(ctr=ct72☆10+ctr)  
I  (digit>A(num)(digit)::
=  ”0” F(cty=0)F(attr=num
)1″1=  F(ctr=1)F(attr=num
)  !”2’  F(ctr=2)F(attr=n
um)  !”5’  F(cty=3)F(attr
=num)  !”4”  F(ctr=4)F(at
ty=num)  j”5″ F(ctr=5)F(a
tt、y=num)  jこのように変更された文法は
ATBNF仕様の数字文法であり、属性仕様および機能
変換(意味)情報の両者を含む。ここでコンピュータプ
ログラムは、数字ストリングに関連した値が変数”ct
r”中にあるという定義に応じて作成されることに注意
されたい。
前述の各項の意味についてのより詳細な情報は、タヒツ
ド・グライスの著書、”ディジタルコンピュータのコン
パイラ構造”、ジョン・ウィリー・アンドΦサンズ社(
David Gries、−CompilerCons
truction  for Digital  Co
mputer”、John Wiley and 5o
nss Inc、 )に記述されている。
F6.翻訳プログラム作成プログラムの要部の説明(第
1図及び第2図) 次に、本発明の翻訳プログラム作成システム10を構成
する翻訳プログラム作成プログラム10a1の最も重要
な要素を説明する。
(a)  !Jストの抽象データ構造はBNF’記法の
ような言語仕様を含む。
(b)  アレイの抽象データ構造は”生成する(pr
oduce)’%  ”後続する(follow)”s
および“終了する(end−with)”の中間の関係
を含む。これらの構造は、翻訳プログラムを生成する方
法?翻訳プログラム作成システム10に知らせる。
(C)  キューおよびデキューの抽象データ構造は、
翻訳プログラムおよびテストケースの生成されたコード
ストリングを含む。
(d)  スタック向き計算機の抽象データ構造は、翻
訳プログラムの実現目標として作用する。
翻訳プログラム作成プログラム10a1は、次のように
動作する。すなわち、翻訳プログラム作成システム10
は、ATBNFデータ入力および記憶手段10cfc介
して、ユーザの原始コードのBNF定義を表わす1組の
生成規則を与えられる。
これらの生成規則は、原始コードの構文記述、該生成規
則で用いた記号の属性制約、および言語処理時に呼出さ
れる処理モジュールの宣言(意味情報)fc含む。翻訳
プログラム作成プログラム10a1のATBNF’プロ
セッサ10a1Aは、言語変換およびステートメントの
属性くくり出しくfactoring )手法の組合せ
によシ、BNF定義の複雑さを減じ、かくて処理が容易
な変換されたBNF定義を生成する。この変換は、ユー
ザの′1・    ヮヨ3−1.。8工お、、j□1お
、。工、ワ−ル仕様の存在に起因する。変換されたBN
F定義からなる簡略化された生成規則は、翻訳グログラ
ム作成プログラム10a1のコード生成プログラム10
aIBによシ読取られる。その結果、生成規則の選択値
が計算される。これらの選択値は選択すべき生成規則を
一意的に決定するものであって、当該言語内の終端記号
および適用可能な属性制約の定義から成る。コード生成
プログラム10a1Bは、ユーザの原始コードを処理す
る翻訳プログラムを生成する。生成された翻訳プログラ
ムは下記の5項目の特性を有する。
fa)  翻訳プログラムの各生成規則は、ブロック構
造手順を生成する。この手順の終りにするりダーンステ
ートメントは、呼出しプログラムに制御を戻す。
(b)  言語内の終端文字を含む生成規則選択値は、
文字ストリング中の値を検査するIF’ステートメント
を生成する。
(c) @#M@O’Af!J!#に’1Ru8hh“
551   。
うなデータ属性を含む生成規則選択値は、属性スタック
に記憶された属性値を検査するだめのIFステートメン
トを生成する。
Cd)  非終端文字を指定する翻訳プログラムは、生
成規則基に関連するコード化された名前を有する手順へ
のCALLステートメントを生成する。
(e)  意味ルーチン呼出しを含む翻訳プログラムの
言語仕様の部分は、指定された動作を実行するためにモ
ジュールのCALLステートメント呼出しに変換される
。翻訳プログラムの生成を完了した後、翻訳プログラム
作成プログラム10a1は2組のテストケースを生成す
る。第1組のテストケースは、1良いテストケース”生
成プログラム10aICにより生成され、指定されたユ
ーザの原始言語で有効な言語ステートメントから成る。
関連する言語は通常、大きさが束縛されていないから・
生成プロセスは、あらゆる言語例が少なくとも1回確実
に生じる゛ように強制される。この第1組テストケース
は生成された翻訳プログラムにより処理される。もしあ
らゆる検査ランが成功すれば、生成された翻訳プログラ
ムは、指定された原始言mtサブセットとして含む言語
を処理する。
第2組のテストケースは、6悪いテストケース“生成プ
ログラム10aIDにより生成され、指定された原始言
語では有効ではない言語ステートメントを含む。このテ
ストケース生成プロセスは、あらゆる非言語例か少なく
とも1回確実に生じるように強制される。この第2組の
テストケースは、生成された翻訳プログラムにより処理
される。もし、この第2組のあらゆるテストケースが翻
訳プログラムによって拒絶されるならば、指定された非
言語のサブセットが翻訳プログラムにょシ正確に拒絶さ
れたことになる。これらの2つの検査の結果、翻訳プロ
グラムは指定された原始言語を、しかも指定された言語
だけを実現することになる。
F4 翻訳プログラム作成プログラムの詳細な説明(第
6A図〜第6B図) 次に、本発明の翻訳プログラム作成プログラム10a1
の構造および機能動作の詳細について説明する。
第5A図乃至第3P図は翻訳プログラム作成プログラム
10a1におけるATBNFプロセッサ10a1Aの機
能を表わす詳IwEを流れ図である。
そのうち、第3A図はATBNFプロセッサ10alA
の全体的な流れ図を示す。第3A図の個々のブロックの
詳細な流れ図は第6B図乃至第6P図に示されている。
第6A図において、翻訳プログラム作成プログラム10
a1におけるATBNFプロセッサ10aIAの部分は
、図示の順序に従って次のように動作する。すなわち、
ユーザの原始コードのBNF定義を受取る場合、ブロッ
ク61で“コーナー(corner)”と“使用”の関
係を確立する。ブロック66では、第N次の再帰性(r
ecursion)を除去する。ブロック65では、単
純な再帰性を除去する。ブロック37では、冗長なコー
ドストリングを除去する。ブロック69では、関係“生
成規則を生成する“を計算する。
ブロック41では、関係”で直接開始する”を構築する
。ブロック43aでは、BDWの推移的閉包(tran
sitive  closure)を計算する。
’%l      ブロック45aおよび45bでは、
関係“に直接後続する″および”で終了する″を順次に
計算する。ブロック43bでは、関係“の終了”を計算
する。ブロック47では、関係“に後続する”を順次に
計算する。ブロック49では、生成規則セレクタを生成
する。ブロック51によって示されるように、衝突(c
onf l ic t )が存在する場合は、ブロック
56で、事例を計算し、ブロック35に戻って前述のプ
ロセスを順次に反復実行する。一方、衝突が存在しない
場合は、コードを生成する、すなわちユーザの原始コー
ドの変換されたBNF’定義を生成する。
第6B図は、第5A図のブロック61で“コーナー”と
“使用″を確立するのに必要なステップを表わす流れ図
である。第3B図のブロック51aでは、最初の生成規
則を指定する。すべての生成規則が処理されていない場
合、ブロック31bの各ステップを実行する。一方、す
べての生成規則が処理されている場合は、ブロック31
cを実行する。
第6C図は、第6A図のブロック36で第N次の再帰性
を除去するのに必要なステップを表わす流れ図である。
第6C図のブロック55dでは最初の非終端記号を指定
する。すべての非終端記号が処理されていない場合、ブ
ロック53 e tD各スステップ実行する。一方、す
べての非終端記号が処理されている場合は、ブロック5
5fで、最初の生成規則を指定する。すべての生成規則
が処理されていない場合、ブロック36gの各ステップ
を実行する。一方、すべての生成規則が処理されている
場合は、3つのブロック33a155cおよび33bの
サブルーチンを順次に呼出して実行する。これらのサブ
ルーチン、すなわちブロック53aのSORTXFM、
ブロック53cのBUI LDS EC,およびプ0ツ
ク33b(DHOLDXFMは、第N次の再帰性を除去
するプロセスで利用される。第3D図は、ブロック63
c(第6C図)のBUI LDUS PCサブルーチン
の詳細流れ図を示す。
第3E図は、プayり36b(第6c図)ノHOLDX
FMサブルーチンの詳細流れ図を示す。
このサブルーチンは、最初の生成規則を指定するブロッ
ク63b1で始まる。すべての生成規則が処理されてい
る場合、このサブルーチンはブロック33b2で終了す
る。一方、すべての生成規則が処理されていない場合は
、ブロック33b6で、生成規則を一時領域に置く。若
し、この生成規則が所要の生成規則なら、ブロック35
b4で、これを出力領域に置き、ブロック66b5で、
次の生成規則に進む。すべての生成規則が処理されるま
で、ブロック63b6.36b4、および63b5が反
復実行される。若し、この生成規則が所要の生成規則で
ないが、1回だけ使用されているなら、ブロック36b
5にスキップする。若し、この生成規則が1回だけ使用
されているものではないなら、ブロック36b6で最初
のトークンを指定し、そしてブロック33b7ですべて
のトークンが検査されているかどうかを調べる。若し、
すべてのトークンが検査され、かつ生成規則が短かすぎ
るなら、ブロック63b8でPをナルに変更する。次い
で、ブロック33b9では、結果を出力領域に加え、ブ
ロック36b5にスキップする。若し、この生成規則が
短かすぎないなら、ステップ36b9では結果を出力領
域に加え、ステップ63b5にスキップする。ブロック
66b7によって示されるように、すべてのトークンが
検査されていないが、当該トークンが1回使用されてい
るなら、ブロック35b10ではトークン使用を定義に
置換え、ステップ33b11で次のトークンに進み、そ
してブロック63b7にスキップする。若し、このトー
クンが1回も使用されていないなら、ブロック33b1
1にスキップして、次のトークンに進み、次いでブロッ
ク66b7にスキップする。
第3F図は、第6A図のブロック49で生成規則セレク
タを生成するのに必要なステップを表わす流れ図である
。第6F図のブロック49aでは、最初の生成規則を指
定する。すべての生成規則が処理されている場合、この
サブルーチンは終了す埼      る。一方、すべて
の生成規則が処理されていない場合、ブロック49bで
はその生成規則基および右の部分”を引出す。ブロック
49cでは“右の部分″の最初のト=クンを指定する。
若し、すべてのトークンが処理されているなら、ブロッ
ク49dを実行し、さもなければ、ブロック49eの各
ステップを実行する。
第6G図は、第3A図のブロック56で事例を計算する
のに必要なステップを表わす流れ図である。事例を計算
するだめには、6つのサブルーチンを実行せねばならな
い。これらのサブルーチンの中の2つは、ブロック55
thのlN5TANCEサブルーチン、およびブロック
55bのCHKCONFLICTサブルーチンである。
ブロック53aおよび53bの詳細な動作の流れ図は、
第3H図および第31図にそれぞれ示されている。
もう1つのサブルーチンSORTXFM(ブロック36
a)は第3C図に示されている。
第3H図において、lN5TANCEサブルーチンは先
ず、ブロック53a1で最初の生成規則を指定する。す
べての生成規則が処理されている      1場合、
ブロック56a2で終了する。一方、すべての生成規則
が処理されていないが、当該生成規則に衝突がないなら
、ブロック53a3でこの生成規則を出力に置き、ステ
ップ56a4で次の生成規則に進むとともに、前述のす
べての生成規則の処理を判定するブロックに戻る。これ
らの動作は、すべての生成規則が処理されるまで反復実
行される。一方、当該生成規則が衝突を有する場合は、
ブロック53a5で最初の非終端記号を探し、見つから
なかった場合は、ブロック56a6でこの生成規則を出
力に置き、そしてブロック53a4にスキップする。一
方、最、初の非終端記号が見つかった場合は、ブロック
56a7で最初の生成規則を指定する。次に、すべての
生成規則が検査されている場合、ブロック53a4にス
キップする。一方、すべての生成規則が検査されておら
ず、[7かも当該生成規則の名前が非終端記号なら、ブ
ロック53a8で定義を置換え、ブロック53a9で結
果を出力に置き、そしてブロック56a10で、次の生
成規則に進むが、若し当該生成規則の名前が非終端記号
ではないなら、ブロック53a10にスキップする。
第31図のCHKCONFLICTサブルーチンは、ブ
ロック53b1で、i’(最初の非終端記号の名前にセ
ットする。すべての非終端記号が検査されている場合、
このサブルーチンはブロック53b2で終了する。一方
、すべての非終端記号が検査されていない場合は、ブロ
ック53b5で、名前iを有する生成規則のすべての発
生に対するセレクタを引出す。若し、任意の終端記号が
2回以上使用されているならば、ブロック53b4では
衝突を有する生成規則のりストに: i k加え、ブロ
ック53b5ではiを次の非終端記号の名前にセットし
、そしてすべての非終端記号を検査したかどうかを判定
するブロックに戻る。若し、任意の終端記号が2回以上
使用されていなければ、ブロック53b5にスキップす
る。以上の動作はすべての非終端記号が検査されるまで
反復実行される。
第3J(a1図は、第6A図のブロック65で、単純な
再帰性を除去するRECURSサブルーチンの詳細な流
れ図である。第3J(a)図のブロック65bは、最初
の生成規則と指定する。すべての生成規則が処理されて
い2場合、ブロック35cは一時リストの最初の生成規
則を指定する。一方、すべての生成規則が処理されてい
ない場合は、ブロック35dで最初の生成規則の名前を
取得する。
若し、それが左再帰的でなければ、ブロック35eでこ
の生成規則全一時リストの末尾に加え、そして次の生成
規則に進む。最初の生成規則が左再帰的であるが、短か
い生成規則ではない場合(ブロック35f)、ブロック
35gでこの生成規則を一時リストの前部に置くととも
に、次の生成規則に進む。しかしながら、最初の生成規
則が左再帰的であるが、短かい生成規則であるなら(ブ
ロック35f)、直接、次の生成規則に進む。ブロック
35cの後で、すべての生成゛規則が処理されている場
合、このサブルーチンから抜は出す。一方、すべての生
成規則が処理されていない場合は、当1・1     
該生成規則を一時リストから除去する。若し、この生成
規則が左再帰的であれば、ブロック35hで、一時的な
名前Tを取得し、ブロック35iで生成規則(T−AT
)を出力するとともに、T−ナルを出力し、ブロック3
5aで、一時リストに残っている生成規則を修正する。
一方、当該生成規則が左再帰的ではないなら、ブロック
65jでこの生成規則を出力の末尾に加える。ブロック
35aまたは35jに続いて、すべての生成規則が処理
されているかどうかを再び判定する。
第3J(b)図は、第5J(a)図のブロック35aの
A P P ENDサブルーチンの動作を示す。ブロッ
ク35a1は最初の生成規則を指定する。すべての生成
規則が処理されていない場合、ブロック65a2では一
致する生成規則をXと命名して、ブロック35a3では
XとATを置換し、そして次の生成規則に進む。すべて
の生成規則が処理されている場合、このサブルーチンは
終了する。
第6に図は、第3A図のブロック37で冗長なコードス
トリングを除去するFACTORサブルーチンの流れ図
である。ブロック57aは最初の生成規則を指定し、ブ
ロック57bはこの生成規則を引出す。若し、当該生成
規則が空であるが(ブロック37c)、すべての生成規
則が処理されていなければ(ブロック37d)、当該生
成規則を比較に置き(ブロック57e)、比較点=Qと
しくブロック37f)、ブロック57bに戻って生成規
則を引出す。若1〜、この生成規則が空ではなく(ブロ
ック57c)、そしてすべての生成規則が処理されてい
るならば、ブロック37gで比較を出力し、ブロックろ
7hで終了する。一方、すべての生成規則が処理されて
おらず、関係“比較するものめシ”が真で(ブロック3
71)、しかも関係”前と同じ”もまた真である場合に
は(ブロック37j)、ブロック57にでT←共通部分
を出力する。次いで、ブロック37bに戻り、生成規則
を引出す。若し、関係゛比較するものあり”が偽なら(
ブロック37i)、比較を出力し、生成規則を比較に置
く(ブロック67e)。若し、関係“前と同じ″が偽で
あれば(ブロック67j)、ブロック3711で一時的
な名前を取得し、ブロック57mでT−比較の共通部を
出力し、ブロック37nでは比較の一意的部分−比較、
Tを生成し、ブロック57pではT−生成規則の共通部
を出力し、ブロック57qでは共通部の長さを変更【7
てブロック37bに戻シ、そして生成規則を引出す。
第3L図は、第6A図のブロック69で関係“生成規則
を生成する“を計算するC0LLECTTOPサブルー
チンの流れ図である。ブロック39aでは関係“生成す
る”の最初のアレイを構築し、最初の生成規則を指定す
る。すべての生成規則が処理されている場合、ブロック
39bでは推移的閉包を計算して終了する。若し、すべ
ての生成規則が処理されていないなら、ブロック59c
では最初のトークンを生成する命名された生成規則を記
録し、そしてブロック39dでは次の生成規則に進む。
第3M図は、第3A図のブロック41で関係“で直接開
始する”を構築するBUILDBDWサブルーチンの流
れ図である。まず最初の生成規則を指定する。すべての
生成規則が処理されていない場合(ブロック41b)、
ブロック41aでは最初のトークンを生成する命名され
た生成規則を記録し、そしてブロック41cでは次の生
成規則に進む。一方、すべての生成規則が処理されてい
る場合は、このサブルーチンはブロック41dで終了す
る。
第3N図は、第6A図のブロック45aおよび45bで
、BDWの推移的閉包および関係“の終了#を計算する
CLO8UREサブルーチンの流れ図である。ブロック
45(1)でz=Xとし、ブロック43(2)でY=Z
とする。ブロック43f3)ではz=i+x−yを計算
する。若し、y=zなら、このサブルーチンは終!する
。若し、Yが2に等しくないなら、ブロック43(21
に戻り、前述の動作を反復実行する。
第30図は、第3A図のブロック45bで関係“で終了
する”を計算するBUILDEOサブルーチンの流れ図
である。このサブルーチンでは、まず最初の生成規則を
指定する。すべての生成規)%、      則が処理
されていない場合、ブロック45 (b) 1では最後
のトークンで終了する命名された生成規則を記録し、そ
してブロック45tb)2で次の生成規則に進む。前述
の動作は、すべての生成規則が処理されるまで反復実行
され、すべての生成規則が処理されると、このサブルー
チンは終了する。
第6P図は、第5A図のブロック45aで、関係“に直
接後続する“を計算するBUILDFBサブルーチンの
流れ図である。まず最初の生成規則を指定する。すべて
の生成規則が処理されていない場合、ブロック45 (
a) 1では名前に後続するトークンを指定する。若し
、当該生成規則にトークンが後続しなければ(ブロック
45(a)2)、ブロック45(aHで次の生成規則に
進む。さもなければ、ブロック45(a)4で後続トー
クンのあるトークンを記録し、ブロック45ta)5で
、次のトークンに進み、ブロック45(a)2を反復す
る。すべての生成規則が処理された場合は、このサブル
ーチンは終了する。
第4A図は翻訳7°°′う”作成′°′う”io   
     。
ai(第2図)におけるコード生成プログラム10aI
Bの全体的な流れ図を示す。この部分を構成する動作ス
テップは、出力ファイルをオープンするブロック55、
すべての生成規則が処理されている場合に出力ファイル
をクローズするブロック57、およびすべての生成規則
が処理されていない場合に当該生成規則のコードを生成
するブロック59を含む。ブロック59の動作はすべて
の生成規則が処理されるまで反復実行され、すべての生
成規則が処理されると出力ファイルはクローズされる。
ブロック59の詳細な動作を、第4B図の流れ図に示す
第4B図を参照するに、ブロック59jで関係“環境生
成規則”が真の場合、PGENサブルーチンは終了する
(ブロック59k)。さもなければ、当該項目(エント
リ)が最初の項目である場合(ブロック59c)、ブロ
ック59dで“非最初”をセットする。若し、当該項目
が最初の項目でなく(ブロック59e)、前の生成規則
基が真であるか(ブロック59e)、または“非最初“
をセットしたときは、ブロック59fで再帰性が含まれ
ているかどうかを調べる。再帰性が含まれている場合、
ブロック59gで、リターンおよび手順(PROC)終
了を出力し、そしてブロック59hで手順名を出力する
。一方、再帰性が含まれていない場合は、ブロック59
hで手順名を出力する。次のブロック59iで、ゴール
ステートメントを検査し、これが真ではない場合、ブロ
ック59aのGENIFサブルーチンでIFステートメ
ントを生成し、次いで、ブロック59bのGENCAL
LサブルーチンでCALLステートメントを生成する。
一方、ゴールステートメントが真の場合は、ブロック5
9bにスキップしてGENCALLサブルーチンを実行
する。また、前の生成規則基が真ではなく(ブロック5
9e)、再帰的な生成規則も真ですま°ない場合(ブロ
ック59L)、ブロック59mでプリントタブ変位(d
isplacement )をセットし、ブロック59
bのGENCALLサブルーチンを実行する。若し、前
の生成規則基は真ではないが、再帰的な生成規則が真な
ら、ただちにブロック59bのGENCALLサブルー
チンを実行する。GENCALLサブルーチンが完了す
ると、ブロック59cのGENELSEサブルーチンを
実行して、残つている結果を出力し、PGENサブルー
チンは終了する。
第4B図のGENIFサブルーチン(ブロック59a)
、GENCALLサブルーチン(ブロック59b)およ
びGENELSEサブルーチン(ブロック59c)の詳
細な動作を、第4C図、第4D図および第4E図でそれ
ぞれ説明する。
第4C図を参照するに、GENIFサブルーチンのブロ
ック59a1では、選択文字を引出す。
ブロック59a2で再帰性が含まれている場合、ブロッ
ク59a3では”Do  WHILE’構造を出力し、
ブロック59a4で終了する。一方、再帰性が含まれて
いない場合、ブロック59a5では“IF″構造を出力
し、ブロック59a6でタブ変位を計算し、ブロック5
9a7で終了する。
第4D図を参照するに、GENCALLサブル“111
       −チンのブロック59b1で、”再帰的
またはゴール”が真ではない場合、ブロック59b2で
゛DO″構造を出力し、ブロック59b3で、生成規則
中の最初のトークンを指定する。若し、”再帰的または
ゴール”が真なら、ブロック59b6にスキップする。
ブロック59b4で、すべてのトークンが処理されてい
る場合、ブロック59b5では”IF  属性 ELS
E  エラー”を出力し、ブロック59b6で”]1m
ND″を出力し、ブロック59b7で終了する。一方、
すべてのトークンが処理されていない、場合、“言語終
端記号”が真ではなく(ブロック59b8)、しかも属
性検査も真ではないなら(ブロック59b9)、ブロッ
ク59blOで、機能の呼出しを出力し、ブロック59
b 15で次のトークンを指定する。一方、言語終端記
号が真の場合は、ブロック59b12で”IF  文字
走査 ELSE  エラー”を出力し、ブロック59b
13で次のトークンを指定する。若し、言語終端記号は
真ではないが、属性検査が真であるなら、ブロック59
b11でタブ変位を計算し、ブロック5’9b15で次
のトークンを指定する。ブロック59b13で次のトー
クンを指定した後、ブロック59b4に戻、す、前述の
動作を反復実行する。
第4E図を参照するに、GENELSEサブルーチンの
ブロック59c1で、再帰性が含まれている場合、ブロ
ック59c2で終了する。再帰性が含まれておらず、か
つ関係“ゴール記号”が真ではない場合(ブロック59
c5)、ブロック59c4で“ELS Eエラー呼出し
”を出力し、ブロック59c5で新しいタブ変位を計算
し、ブロック59c6で手順の最終リターン終了を出力
し、ブロック59c7で終了する。若し、関係“ゴール
記号”が真なら、ブロック59c6にスキップする。
第5図ri翻訳プログラム作成プログラム10a1にお
ける“良いテストケース”生成プログラム10aIC部
分の全体的な流れ図を示す。
テストケースの生成は、言語定義を記述する収集された
内部データを使用するような初期設定プロセスに依存す
る。例えば、コンパイラ/インタプリタの実行時間環境
で使用すべき生成規則を決定するために、選択値が用い
られる。更に、生成規則に関係する他の4デ一タ項目、
すなわち大域的な使用ベクトル(UG L局所的な使用
ベクトル(UL)、生成規則の使用ウェイトのベクトル
(UW)、および大域的な障害使用ベクトル(UF)が
生成される。UGはテストケース生成プロセス中の使用
程度、ULは特定のテストケース生成中の成る生成規則
の使用程度、UWは特定の生成規則を使用すべきか、ま
たは使用すべきではない程度、UPは特定の生成規則に
ついて障害テストケースが生成されている程度を示す。
第5図のブロック60は初期設定ステップであって、ベ
クトルUG、ULおよびUFを0に初期設定する。
第5図のブロック62は、ベクトルUWO値を計算する
。ATBNFプロセッサ10aIA(第2図)はベクト
ルUWを利用して、テストケースのコピーを生じる再帰
性の程度を制限する。再帰的な生成規則のUW項目はト
ークン(終端記号、非終端記号、属性および変換)の数
に等しい。非再帰的な生成規則てはUW項目1が与えら
れる。
このように、コンパイラ/インタプリタの実行を検査す
るために生成されるテストケースの数は、扱いやすい大
きさに維持される。
ブロック64は、〈ゴール〉記号を有する再帰的プロセ
ス5を呼出す。良いテストケースは、くゴール〉記号で
始まる生成規則の走査を開始するような、再帰的プロセ
スによって生成される。
ブロック36u、生成規則の記号を走査する。
各再帰手続ごとに、すべての生成規則のリストラ走査し
、どの生成規則が一致する名前を有するかを調べる(ブ
ロック67a)。一致する名前が見つからない場合、B
NF言語定義中にエラーがあるので、ブロック37bで
エラーメツセージを出し、テストケース生成プロセスを
中止する(ブロック67c)。
一方、一致する名前が見つかった場合、ブロック68で
は最小のUGおよびULベクトルを有する最初の一致す
る生成規則を見つける。すなわち、1.1、     
識別された組の生成規則から、最小のUGおよびULベ
クトルを有するような生成規則を選択するのである。最
小のものが2つある場合は、最初に見つかった方を使用
する。
ブロック40では、ベクトルUGおよびUIJ−ベクト
ルUWの値だけ増加する。すなわち、当該生成規則のU
GおよびULはベクトルUWの対応する項目により増加
されるのであり、そして新しい生成規則がトークンごと
に走査される。
ブロック42は、最初のトークンを指定するようにポイ
ンタを初期設定する。若し、当該トークンが属性または
変換であれば、選択的にこのトークンをテストケース仕
様に入れる。このトークンが終端記号である場合(ブロ
ック45 (11)、これを同様にテストケース仕様に
入れる。一方、このトークンが非終端記号の場合(ブロ
ック4 !+ (2) )、新しいトークンを開始点と
して用いて再帰的プロセスを呼出す。
ブロック44では、次のトークンに進む。トークンを検
査し、走査を再開始する再帰的プロセスは、各生成規則
の終りに来るまで、すなわちすべてのトークンが処理さ
れるまで続く。すべてのトークンが処理されると、ベク
トルULがUWだけ減少され、そして生成規則を指定す
るトークンを参照することによりプロセスを再開する。
テストケース生成プロセスのすべての再帰的ステップが
完了した場合、すべての生成規則が大域的に使用されて
いないことがありうる。この−場合、テストケースのプ
ロセスは、UGの項目を不変のままにして再開する。U
Gを検査し再開するこのプロセスは、UGのすべての項
目が0に等しくなるまで続く。
ベクトルUGがすべての項目について非0であるという
ことは、言語仕様のあらゆる生成規則が少なくとも1回
使用されたことを保証し、それと同時に、当該生成規則
の動作環境が実行時間環境で機能することを保証する。
第6A図および第6B図は、翻訳プログラム作成プログ
ラム10 a−1(第2図)における悪いテストケース
生成プログラム10alDの流れ図を示すつ 第6A図のブロック46では、ベクトルUG、UL、U
F’i0に初期設定し、ブロック48ではベクトルUW
の値を計算する。これらのブロックの動作は、第5図の
ブロック30および32の場合と同じでるる。第5図の
ブロック30および32に関連した前述の説明は第6A
図のブロック46および48にもあては“造る。
ブロック50では、再帰的プロセス13′fr、〈コー
ル〉記号により呼出す。同様に、障害テストケースも、
〈ゴール〉記号で生成規則の走査を開始する再帰的プロ
セスにより生成される。
ブロック52では、生成規則の記号を走査する。
各再帰ごとに、すべての生成規則のリストを走査して、
どの生成規則(およびオプション)が一致する名前を有
するかを判定する。一致する名前が見つからない場合、
言語定義中にエラーが存在するので、このテストケース
生成プロセスを中止する。ブロック54では、最小のU
Gkよび[JLベクトルを有する最初の一致する生成規
則を見つける。すなわち、識別された1組の生成規則か
ら、最小のUGおよびULベクトルを有する生成規則が
選択されるのである。最小のものが2つあった場合には
、最初に見つけた方を使用する。
ブロック56では、生成規則UFが0に等しいかどうか
を調べる。これは障害を表わすベクトルを検査して、こ
の名前を有する生成規則が障害テストケースを生成する
ために既に使用されたか否かを調べるためである。既に
使用されていない場合、当該生成規則のベクトル項目(
UF)をUWだけ増加して、障害テストケースを生成す
る。
ブロック58では、違法な終端記号を選択する。
生成規則の最初の位置では生じえない生成規則セレクタ
から文字または属性を決定することにより、障害テスト
ケースが生成される。若し、このような文字または属性
が存在すれば、かかる文字または属性を追加の障害テス
トケースとして出力行に付加する。一方、このような文
字または属性が存在しない場合は、この生成規則の範囲
では障害状態に到達しないことになる。
〜17°0−)p6cJcId・00ゝ1び01に07
を加える。すなわち、当該生成規則のベクトルUGおよ
びULはベクトルUWの対応する項目だけ増加されるの
であシ、そして新しい生成規則がトークンごとに走査さ
れるのである。トークンが変換ノ場合、選択的にトーク
/をテストケース仕様に入れる。
第6A図のブロック68では、ベク)ルUFOどれかが
0であるかどうかを調べる。テストケース生成プロセス
のすべての再帰的ステップが完了する場合、障害テスト
ケース生成プロセスですべての生成規則が大域的に使用
されていない(UFの少なくとも1つの項目が依然0で
ある)ことがありうる。この場合、テストケース生成プ
ロセスはUFの項目を不変のままにして再開する。UF
の検査および再開プロセスは、UFのすべての項目が非
0になるまで続行する。
第6B図では、まずポインタを最初のトークンに初期設
定する。すべてのトークンが処理されている場合(ブロ
ック61)、ブロック6(SAではベクトルULをUW
だけ減少し、リターンする。
一方、すべてのトークンが処理されていない場合   
  iは、ブロック66でトークンを検査し、このトー
    □クンが非終端記号の場合はブロック62でト
ークンによりプロセス16を呼出す。すなわち、新しい
トークンを開始点として使用することによシ、再帰的プ
ロセスが呼出される。
若し、トークンが非終端記号ではないなら(ブロック6
3)、ブロック65でトークンを調べ、このトークンが
終端記号または属性である場合は、エラーを引起こすよ
うな属性または文字が生成され、ブロック64で非一致
終端記号または属性を選択する。一方、このトークンが
属性である場合は、出力行が生成され、有効な文字が属
性に続く。
トークンが終端記号でも属性でもない場合、ブロック6
7でこのトークンがディスプレイであるかどうかを調べ
る。ディスプレイである場合は、ブロック66Bでトー
クンを出力領域に加える。
トークンを検査し、走査を再開する再帰的プロセスは、
生成規則の終りに達するまで続行する。生成規則の終り
に達すると、前述のように、ULがUWだけ減少され、
生成規則を指定するトークンを参照してこのプロセスが
再開する。
UF’があらゆる項目に対し非0であるという事実は、
言語仕様のあらゆる生成規則が少なくとも1回は使用さ
れていること、そしてプロセッサが指定された言語だけ
をサポートすることを保証し、それと同時に、生成規則
の動作環境がエラー人力の存在する実行時間環境で役立
つことを保証する。
本発明の翻訳プログラム作成システム10と比較すると
、従来の翻訳プログラム作成システムは、データ属性仕
様またはそれらの文法上の相互作用を考慮に入れていな
かった。従来のシステムは、意味モジュール呼出しの人
手による配置を必要としたので、その実行時間環境で翻
訳プログラム実現を検査し確認するテストケースを生成
するためのサポートヲ与えていなかった。翻訳プログラ
ム作成プログラム10a1を含む、本発明の翻訳プログ
ラム作成システム10は、並列的なインタプリタ/実行
装置環境を形成するのに容易に変更可能なように構築さ
れ、かつ、言語に関する十分な構文、意味および属性情
報を含み、仕様がいったんBNF形式の言語仕様に変換
されると、アプリケーションプログラムおよびオペレー
ティングシステムの生成を可能にする。
G0発明の効果 以上詳述したように、本発明の翻訳プログラム作成シス
テムによれば、生成された翻訳プログラムの検査に必要
な時間を大幅に減少することができる。
【図面の簡単な説明】
第1図はデータ処理システムおよび翻訳プログラム作成
を含む本発明の翻訳プログラム作成システムを示すブロ
ック図、第2図は翻訳プログラムを生成するように第1
図のデータ処理システムに記憶された翻訳プログラム作
成プログラムと、この翻訳プログラムを使用してユーザ
の原始コードから目的コードを生成するようにデータ処
理システムに記憶されたコンパイラ/インタプリタシス
テムの構成図、第6A図は第2図のATBNFプロセッ
サ部分を表わす流れ図、第3B図は第3A図の)1) 
      ブロック31の詳細な流れ図、第6C図は
第6A図のブロック33の詳細な流れ図、第6D図は第
3C図のブロック35cの詳細な流れ図、第6E図は第
3C図のブロック33bの詳細な流れ図、第3F図は第
6A図のブロック49の詳細な流れ図、第3G図は第5
A図のブロック56の詳細な流れ図、第3H図は第6G
図のブロック53aの詳細な流れ図、第31図は第3G
図のブロック53bの詳細な流れ図、第3J(a1図は
第5A図のブロック55の詳細な流れ図、第5J(b)
図は1d5J(a)図のブロック55aの詳細な流れ図
、第3に図は第3A図のブロック37の詳細な流れ図、
第3L図は第6A図のブロック69の詳細な流れ図、第
3M図は第6A図のブロック41の詳細な流れ図、第5
N図は第6A図のブロック45mおよび43bの詳細な
流れ図、第30図は第6A図のブロック45bの詳細な
流れ図、第3P図は第6A図のブロック45aの詳細な
流れ図、第4A図は第2図のコード生成プログラム部分
を表わす流れ図、第4B図は第4A図のブロック59の
詳細な      j流れ図、第4C図は第4B図のブ
ロック59aの詳細な流れ図、5gAD図は第4B図の
ブロック59bの詳細な流れ図、第4E図は第4B図の
ブロック59cの詳細な流れ図、第5図は第2図の良い
テストケース生成プログラム部分を表わす流れ図、第6
A図および第6B図は第2図の悪いテストケース生成プ
ログラム部分を表わす流°れ図である。 10・・・・翻訳プログラム作成システム、10a・・
・・主記憶、10a1・・・・翻訳プログラム作成プロ
グラム、10alA・・・・ATBNFプロセッサ、1
0aIB・・・・コード生成プログラム、10a1C・
・・・良いテストケース生成プログラム、10a1D・
・・・悪いテストケース生成プログラム、10a2・・
・・コンパイラ/インタプリタシステム、10b・・・
・プロセッサ、10c・・・・ATBNFデータ入力お
よび記憶手段、10d・・・・ユーザコマンド入力手段
、10e・・・・プリンタ。

Claims (1)

  1. 【特許請求の範囲】 ユーザの原始コードを目的コードに変換する翻訳プログ
    ラムを生成するための翻訳プログラム作成システムであ
    つて、 ユーザの原始コードに関連した適切な特性を表わすプロ
    グラムを前記翻訳プログラム作成システムに導入するた
    めの入力手段と、 前記プログラムに応答して前記翻訳プログラムを生成す
    るための生成手段とを備え、 該生成手段は、前記ユーザの原始コードに対応する有効
    な複数のプログラム・ステートメントを利用して前記翻
    訳プログラムをテストするための有効テスト・ケース生
    成手段と、前記ユーザの原始コードに対応する無効な複
    数のプログラム・ステートメントを利用して前記翻訳プ
    ログラムをテストするための無効テスト・ケース生成手
    段を含んでいる翻訳プログラム作成システム。
JP60201908A 1984-10-24 1985-09-13 翻訳プログラム作成システム Pending JPS61103247A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/664,264 US4729096A (en) 1984-10-24 1984-10-24 Method and apparatus for generating a translator program for a compiler/interpreter and for testing the resulting translator program
US664264 1984-10-24

Publications (1)

Publication Number Publication Date
JPS61103247A true JPS61103247A (ja) 1986-05-21

Family

ID=24665300

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60201908A Pending JPS61103247A (ja) 1984-10-24 1985-09-13 翻訳プログラム作成システム

Country Status (4)

Country Link
US (1) US4729096A (ja)
EP (1) EP0179334A3 (ja)
JP (1) JPS61103247A (ja)
CA (1) CA1223663A (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2624753B2 (ja) * 1988-03-18 1997-06-25 株式会社日立製作所 上位仕様書作成方法
US4931928A (en) * 1988-11-09 1990-06-05 Greenfeld Norton R Apparatus for analyzing source code
US5202977A (en) * 1990-07-13 1993-04-13 Premenos Corp. Edi translation system using plurality of communication processes and de-enveloping procedure corresponding to transmitted communication process
GB2246883B (en) * 1990-08-07 1995-01-11 Matsushita Electric Ind Co Ltd Inference processor
US5263162A (en) * 1990-11-07 1993-11-16 Hewlett-Packard Company Method of validating a label translation configuration by parsing a real expression describing the translation configuration
DE69218682T2 (de) * 1991-02-01 1997-09-18 Digital Equipment Corp Verfahren zum austesten eines softwareprogramms
US5487147A (en) * 1991-09-05 1996-01-23 International Business Machines Corporation Generation of error messages and error recovery for an LL(1) parser
IL99927A0 (en) * 1991-11-01 1992-08-18 Ibm Israel Restriction checker generator
US5355493A (en) * 1991-11-20 1994-10-11 International Business Machines Corporation System for encoding units of entity/relationship data to include prefixes with codes for length, action, and unit identifier
US5357452A (en) * 1992-06-30 1994-10-18 Sun Microsystems, Inc. Automatic generation of auto-checking testing functions
US5359546A (en) * 1992-06-30 1994-10-25 Sun Microsystems, Inc. Automatic generation of test drivers
JPH0668219A (ja) * 1992-08-17 1994-03-11 Fuji Xerox Co Ltd 色彩値処理装置
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
US5842205A (en) * 1993-12-02 1998-11-24 Vie Systems, Inc. Method and process of inter-machine communication and generalized method for program preparation therefor
DE4416704A1 (de) * 1994-05-11 1995-11-16 Siemens Ag Integrationstestverfahren für ein objektorientiertes Programm
US5572668A (en) * 1995-02-07 1996-11-05 Oracle Corporation Method and apparatus for universal national language support program testing
US5600790A (en) * 1995-02-10 1997-02-04 Research In Motion Limited Method and system for loading and confirming correct operation of an application program in a target system
US5712972A (en) * 1995-06-07 1998-01-27 Sony Corporation Identification of faults in data paths and functional units of a central processing unit by a systematic execution of test instructions
US5913023A (en) * 1997-06-30 1999-06-15 Siemens Corporate Research, Inc. Method for automated generation of tests for software
US6425118B1 (en) * 1997-07-18 2002-07-23 Compaq Computer Corporation System for automatically generating tests to ensure binary compatibility between software components produced by a source-to-source computer language translator
US6317871B1 (en) 1997-07-18 2001-11-13 Compaq Computer Corporation System for ensuring the accuracy of file structures in a source-to-source computer program translator
US6321376B1 (en) * 1997-10-27 2001-11-20 Ftl Systems, Inc. Apparatus and method for semi-automated generation and application of language conformity tests
US6063132A (en) * 1998-06-26 2000-05-16 International Business Machines Corporation Method for verifying design rule checking software
US6530039B1 (en) * 1999-06-14 2003-03-04 Microsoft Corporation Porting engine for testing of multi-lingual software
US6389385B1 (en) 1999-07-02 2002-05-14 International Business Machines Corporation System and method for translating source code
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6931629B1 (en) * 1999-12-30 2005-08-16 Intel Corporation Method and apparatus for generation of validation tests
US6725218B1 (en) 2000-04-28 2004-04-20 Cisco Technology, Inc. Computerized database system and method
US6681386B1 (en) * 2000-05-22 2004-01-20 International Business Machines Corporation Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment
US7085723B2 (en) * 2001-01-12 2006-08-01 International Business Machines Corporation System and method for determining utterance context in a multi-context speech application
US6950793B2 (en) 2001-01-12 2005-09-27 International Business Machines Corporation System and method for deriving natural language representation of formal belief structures
US7257537B2 (en) * 2001-01-12 2007-08-14 International Business Machines Corporation Method and apparatus for performing dialog management in a computer conversational interface
US7127402B2 (en) * 2001-01-12 2006-10-24 International Business Machines Corporation Method and apparatus for converting utterance representations into actions in a conversational system
US7249018B2 (en) * 2001-01-12 2007-07-24 International Business Machines Corporation System and method for relating syntax and semantics for a conversational speech application
SE0202019D0 (sv) * 2002-06-28 2002-06-28 Abb As Revalidation of a compiler for safety control
US7222712B2 (en) * 2003-03-24 2007-05-29 Valtech International, Llc Document validator with locking cassette
US7607120B2 (en) * 2004-04-20 2009-10-20 Hewlett-Packard Development Company, L.P. Method and apparatus for creating data transformation routines for binary data
US7873947B1 (en) * 2005-03-17 2011-01-18 Arun Lakhotia Phylogeny generation
US8095912B2 (en) * 2005-10-06 2012-01-10 Microsoft Corporation Testing a context-free language compiler
US7599944B2 (en) * 2005-12-16 2009-10-06 Microsoft Corporation Electronic data interchange (EDI) schema simplification interface
US7447707B2 (en) * 2005-12-16 2008-11-04 Microsoft Corporation Automatic schema discovery for electronic data interchange (EDI) at runtime
US7647500B2 (en) * 2005-12-16 2010-01-12 Microsoft Corporation Synchronous validation and acknowledgment of electronic data interchange (EDI)
US7650353B2 (en) * 2005-12-16 2010-01-19 Microsoft Corporation XML specification for electronic data interchange (EDI)
US7620645B2 (en) * 2006-02-24 2009-11-17 Microsoft Corporation Scalable algorithm for sharing EDI schemas
US7703099B2 (en) * 2006-02-24 2010-04-20 Microsoft Corporation Scalable transformation and configuration of EDI interchanges
US7685208B2 (en) * 2006-02-24 2010-03-23 Microsoft Corporation XML payload specification for modeling EDI schemas
US7984373B2 (en) * 2006-02-24 2011-07-19 Microsoft Corporation EDI instance based transaction set definition
US8156148B2 (en) * 2006-02-24 2012-04-10 Microsoft Corporation Scalable algorithm for sharing EDI schemas
US8346555B2 (en) * 2006-08-22 2013-01-01 Nuance Communications, Inc. Automatic grammar tuning using statistical language model generation
US7823103B2 (en) 2006-10-24 2010-10-26 International Business Machines Corporation Method and system of introducing hierarchy into design rule checking test cases and rotation of test case data
US20080244511A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Developing a writing system analyzer using syntax-directed translation
WO2013104504A1 (en) * 2012-01-12 2013-07-18 Thomson Licensing Method and device for compiling a source program
US8904354B2 (en) 2012-12-31 2014-12-02 Ca, Inc. Rule based syntax software test case generator
CN109739507A (zh) * 2018-12-28 2019-05-10 睿驰达新能源汽车科技(北京)有限公司 一种代码持续集成方法和代码持续交付方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1479122A (en) * 1975-12-11 1977-07-06 Ibm Method of operating a computer to produce test case programmes
GB1510240A (en) * 1976-11-25 1978-05-10 Ibm Method of operating a computer to produce test case programmes

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING=1982 *

Also Published As

Publication number Publication date
CA1223663A (en) 1987-06-30
US4729096A (en) 1988-03-01
EP0179334A2 (en) 1986-04-30
EP0179334A3 (en) 1988-07-27

Similar Documents

Publication Publication Date Title
JPS61103247A (ja) 翻訳プログラム作成システム
Murphy et al. Lightweight lexical source model extraction
US6038378A (en) Method and apparatus for testing implementations of software specifications
Kahn et al. Metal: A formalism to specify formalisms
EP0735466A2 (en) Method and apparatus for displaying locations of errors detected inside software macro calls
JPH1078959A (ja) エッジデータ構造を統一する方法
JP3230467B2 (ja) Gdmoトランスレータ及びgdmoトランスレーション方法並びにgdmoトランスレータプログラムを記録した記録媒体
JP4951416B2 (ja) プログラム検証方法、プログラム検証装置
CN115017516A (zh) 一种基于符号执行的模糊测试方法
RU2115159C1 (ru) Способ и устройство для проверки использования полей записей во время компиляции
RU2115158C1 (ru) Способ и устройство для достоверной оценки семантических признаков в синтаксическом анализе при проходе вперед слева направо
JP2879099B1 (ja) 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置
Turcotte et al. Designing types for R, empirically
Mauny Functional programming using CAML Light
Møller et al. Static validation of XSL Transformations
Johnstone et al. Evaluating GLR parsing algorithms
CN110737431B (zh) 软件开发方法、开发平台、终端设备及存储介质
KR20230040516A (ko) 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법
Lopez-Rojas OMCCp: A MetaModelica Based Parser Generator Applied to Modelica
Neighbors et al. Draco 1.3 users manual
JPH08194611A (ja) プログラム修正による影響範囲を解析する装置
KR100279731B1 (ko) 칠 언어에 대한 제어 흐름 표시방법
JP3141945B2 (ja) コンパイル装置
Mullens The design and implementation of a machine-independent general system theoretic language.
Nilsen A stream data type that supports goal-directed pattern matching on unbounded sequences of values