JPH02224146A - テストプログラム作成処理装置 - Google Patents
テストプログラム作成処理装置Info
- Publication number
- JPH02224146A JPH02224146A JP1046215A JP4621589A JPH02224146A JP H02224146 A JPH02224146 A JP H02224146A JP 1046215 A JP1046215 A JP 1046215A JP 4621589 A JP4621589 A JP 4621589A JP H02224146 A JPH02224146 A JP H02224146A
- Authority
- JP
- Japan
- Prior art keywords
- tab
- test program
- alignment
- symbol
- relative
- 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
Landscapes
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
言語処理プログラム用のテストプログラムを自動作酸す
るテストプログラム作成処理装置に関し、解読し易いテ
ストプログラムを作成できるようにすることを目的とし
、 属性文法記述に従って記述された処理対象文に対しての
乱数的な選択処理により生成される乱数文と、乱数文の
実行結果の確認のためのテストルーチンを呼び出す確認
文とを対とするテストプログラムを作成するテストプロ
グラム作成処理装置であって、属性文法記述が、絶対タ
ブ位置を基準にしてテキストの整列を指定する絶対タブ
整列記号と、相対タブ位置を基準にしてテキストの整列
を指定する相対タブ整列記号を記述するよう構成し、か
つ、テストプログラムを出力するライタが、変数として
扱われる絶対及び相対タブ位置を管理するタブ変数管理
部と、テストプログラムを出力するときに、絶対・相対
タブ整列記号の記述があるときには、タブ変数管理部が
管理するタブ位置を基準にして、整列指定のあるテキス
トを出力するテ、キスト整列出力部とを備えるよう構成
する。
るテストプログラム作成処理装置に関し、解読し易いテ
ストプログラムを作成できるようにすることを目的とし
、 属性文法記述に従って記述された処理対象文に対しての
乱数的な選択処理により生成される乱数文と、乱数文の
実行結果の確認のためのテストルーチンを呼び出す確認
文とを対とするテストプログラムを作成するテストプロ
グラム作成処理装置であって、属性文法記述が、絶対タ
ブ位置を基準にしてテキストの整列を指定する絶対タブ
整列記号と、相対タブ位置を基準にしてテキストの整列
を指定する相対タブ整列記号を記述するよう構成し、か
つ、テストプログラムを出力するライタが、変数として
扱われる絶対及び相対タブ位置を管理するタブ変数管理
部と、テストプログラムを出力するときに、絶対・相対
タブ整列記号の記述があるときには、タブ変数管理部が
管理するタブ位置を基準にして、整列指定のあるテキス
トを出力するテ、キスト整列出力部とを備えるよう構成
する。
〔産業上の利用分野〕
本発明は、言語処理プログラム用のテストプログラムを
属性文法記述から自動作成するよう処理するテストプロ
グラム作成処理装置に関し、特に、解読し易いテストプ
ログラムを作成できるようにするテストプログラム作成
処理装置に関するものである。
属性文法記述から自動作成するよう処理するテストプロ
グラム作成処理装置に関し、特に、解読し易いテストプ
ログラムを作成できるようにするテストプログラム作成
処理装置に関するものである。
作成した言語処理プログラム(COBOLやFORTR
AN等のコンパイラに限られずに、コマンドを処理する
プログラム等も含む)の機能を検査するために、マニュ
アルに基づいて検証用のテストプログラムを作成して、
その実行結果を予想したものと比較していくという手法
がとられることになる。
AN等のコンパイラに限られずに、コマンドを処理する
プログラム等も含む)の機能を検査するために、マニュ
アルに基づいて検証用のテストプログラムを作成して、
その実行結果を予想したものと比較していくという手法
がとられることになる。
しかるに、言語処理プログラムの機能の数は多く、しか
も複数の機能の組み合わせまで検査しなければならない
ことから、確認しなければならない機能の数は極めて多
くなることになる。これから、言語処理プログラムの機
能の検査のために必要とされるテストプログラムの作成
に、多大な労力が費やされているというのが現状である
。このような背景の元に、言語処理プログラム用のテス
トプログラムの自動作成処理装置の提供が望まれている
のである。
も複数の機能の組み合わせまで検査しなければならない
ことから、確認しなければならない機能の数は極めて多
くなることになる。これから、言語処理プログラムの機
能の検査のために必要とされるテストプログラムの作成
に、多大な労力が費やされているというのが現状である
。このような背景の元に、言語処理プログラム用のテス
トプログラムの自動作成処理装置の提供が望まれている
のである。
従来では、人手によって、言語処理プログラム用のテス
トプログラムが作成されていた。すなわち、プログラマ
等が、各種文法規則とその意味を記述したマニュアルか
ら要因分析を行ってテスト項目を設定して、テスト項目
にあった機能の実行とその結果の検証手続きとを記述し
たテストプログラムを作成していたのである。
トプログラムが作成されていた。すなわち、プログラマ
等が、各種文法規則とその意味を記述したマニュアルか
ら要因分析を行ってテスト項目を設定して、テスト項目
にあった機能の実行とその結果の検証手続きとを記述し
たテストプログラムを作成していたのである。
しかしながら、この要因分析やテスト項目の設定には極
めて大きな労力がかかることから、従来技術では、テス
トプログラムの作成に極めて多大な工数がとられてしま
うという問題点があった。
めて大きな労力がかかることから、従来技術では、テス
トプログラムの作成に極めて多大な工数がとられてしま
うという問題点があった。
そして、人手による方法では作成するテストプログラム
の内容に限度があることから、従来技術では、言語処理
プログラムの機能の検査を十分行っていないという問題
点もあったのである。
の内容に限度があることから、従来技術では、言語処理
プログラムの機能の検査を十分行っていないという問題
点もあったのである。
そこで、本出願人は、先に出願の[特願昭63−465
10号(昭和63年2月29日出願、“言語処理プログ
ラム検証方式”)」で、言語処理プログラム用のテスト
プログラムの自動作成処理装置の発明を案出した。次に
、第8図に従って、この特許出願の発明の概要について
説明する。
10号(昭和63年2月29日出願、“言語処理プログ
ラム検証方式”)」で、言語処理プログラム用のテスト
プログラムの自動作成処理装置の発明を案出した。次に
、第8図に従って、この特許出願の発明の概要について
説明する。
図中、1は構文・意味記述であって、言語処理プログラ
ムの処理対象文を展開規則と意味記述とからなる属性文
法記述に従って記述するもの、2はTP自動作成部であ
って、構文・意味記述1からテストプログラムを自動作
成するもの、3はTP自動作成部2が備える生成規則選
択部であって、構文・意味記述1中の展開規則に対して
乱数的な選択処理を施すことで処理対象文の一態様をな
す乱数文を作成するもの、4はTP自動作成部2が備え
る確認文挿入部であって、作成された乱数文の実行によ
り引き起こされる実行結果の確認を行うためのテストル
ーチンを呼び出す確認文を乱数文に対応付けて挿入する
もの、5はTP自動作成部2が備える記号表であって、
乱数文名等を格納するもの、6はTP自動作成部2によ
り作成される一連の検証プログラムであって、言語処理
プログラムのテストプログラムをなすもの、7は自動判
定部であって、検証プログラム6の乱数文を言語処理プ
ログラムに実行させたときの実行結果が正しいものとな
るのか否かを、その乱数文に対応付けられている確認文
により呼び出されるテストルーチンに従って自動的に判
定するもの、8は結果−覧表であって、自動判定部7の
判定結果をプリントアウトするものである。
ムの処理対象文を展開規則と意味記述とからなる属性文
法記述に従って記述するもの、2はTP自動作成部であ
って、構文・意味記述1からテストプログラムを自動作
成するもの、3はTP自動作成部2が備える生成規則選
択部であって、構文・意味記述1中の展開規則に対して
乱数的な選択処理を施すことで処理対象文の一態様をな
す乱数文を作成するもの、4はTP自動作成部2が備え
る確認文挿入部であって、作成された乱数文の実行によ
り引き起こされる実行結果の確認を行うためのテストル
ーチンを呼び出す確認文を乱数文に対応付けて挿入する
もの、5はTP自動作成部2が備える記号表であって、
乱数文名等を格納するもの、6はTP自動作成部2によ
り作成される一連の検証プログラムであって、言語処理
プログラムのテストプログラムをなすもの、7は自動判
定部であって、検証プログラム6の乱数文を言語処理プ
ログラムに実行させたときの実行結果が正しいものとな
るのか否かを、その乱数文に対応付けられている確認文
により呼び出されるテストルーチンに従って自動的に判
定するもの、8は結果−覧表であって、自動判定部7の
判定結果をプリントアウトするものである。
このように構成される先の特許出願の発明にあっては、
生成規則選択部3は、構文・意味記述1中の処理対象文
の展開規則に対して乱数的な選択処理を施すことで処理
対象文の一態様をなす乱数文を作成し、確認文挿入部4
は、乱数文の正しい実行結果を引数とする確認文を挿入
していくことで、言語処理プログラム用のテストプログ
ラムを自動生成していくよう処理することになる。
生成規則選択部3は、構文・意味記述1中の処理対象文
の展開規則に対して乱数的な選択処理を施すことで処理
対象文の一態様をなす乱数文を作成し、確認文挿入部4
は、乱数文の正しい実行結果を引数とする確認文を挿入
していくことで、言語処理プログラム用のテストプログ
ラムを自動生成していくよう処理することになる。
このような先の特許出願の発明の実用性を高めていくた
めには、作成されるテストプログラムがプログラマ等に
とって解読し易いものとなる必要がある。解読が難しい
ものとなると、テストプログラムの作成の生産性が著し
く低下することになるからである。
めには、作成されるテストプログラムがプログラマ等に
とって解読し易いものとなる必要がある。解読が難しい
ものとなると、テストプログラムの作成の生産性が著し
く低下することになるからである。
本発明はかかる事情に鑑みてなされたものであって、本
出願人が出願した先の特許出願のテストプログラム作成
処理装置に対して、解読し易いテストプログラムを作成
できるようにする手段を講じていくことで、実用性を高
めて更に有効なものとなるようにしていくことを目的と
する。
出願人が出願した先の特許出願のテストプログラム作成
処理装置に対して、解読し易いテストプログラムを作成
できるようにする手段を講じていくことで、実用性を高
めて更に有効なものとなるようにしていくことを目的と
する。
第1図は本発明の原理構成図である。
図中、10は属性文法記述であって、検査対象となる言
語処理プログラムの処理対象文についての属性文法を記
述するとともに、この処理対象文の実行結果の確認を行
うテストルーチンの呼び出しのための確認文を記述する
ものである。この属性文法記述10は、作成されるテス
トプログラムのテキストを整列させるために、少なくと
も、絶対タブ位置を基準にしてテキストの整列を指定す
る絶対タブ整列記号と、相対タブ位置を基準にしてテキ
ストの整列を指定する相対タブ整列記号を記述すること
になる。11は属性文法記述10をなす展開規則であっ
て、処理対象文の展開規則を記述するもの、12は属性
文法記述10をなす意味記述であって、処理対象文中の
意味内容を記述するもの、20は本発明を具備するテス
トプログラム作成処理装置であって、言語処理プログラ
ム用のテストプログラムを自動作成するもの、21はリ
ーグであって、属性文法記述10を内部形式に変換する
もの、22は翻訳処理器であって、リーダ21により変
換された内部形式を展開して内部形式テストプログラム
を作成する展開処理部23と、内部形式テストプログラ
ムの作成にあたって必要となる意味記述12の実行依頼
を行う意味記述処理依頼部26とを備えるもの、24は
展開処理部23が備える乱数発生部であって、展開規則
に関しての選択処理に必要となる乱数を発生させるもの
、25は展開処理部23が備える構造体変数管理部であ
って、内部形式テストプログラムの展開処理のために必
要となる変数データを構造的に管理するもの、27は意
味記述解釈器であって、意味記述処理依頼部26からの
起動依頼に応じて処理要求のある意味記述12を実行す
るもの、28はライタであって、翻訳処理器22により
作成された内部形式テストプログラムを実行可能なテス
トプログラムとしてファイル等に出力するもの、281
はライタ28が備えるタブ変数管理部であって、絶対タ
ブ整列記号に従って変数として扱われる絶対タブ位置と
、相対タブ整列記号に従って変数として扱われる相対タ
ブ位置とを管理するもの、282はライタ28が備える
テキスト整列出力部であって、出力するテストプログラ
ムのテキストに、絶対タブ整列記号若しくは相対タブ整
列記号の記述があるときには、タブ変数管理部281が
管理するタブ位置を出力開始位置の基準にして、整列指
定のあるテキストを出力するもの、30は出力されたテ
ストプログラムである。
語処理プログラムの処理対象文についての属性文法を記
述するとともに、この処理対象文の実行結果の確認を行
うテストルーチンの呼び出しのための確認文を記述する
ものである。この属性文法記述10は、作成されるテス
トプログラムのテキストを整列させるために、少なくと
も、絶対タブ位置を基準にしてテキストの整列を指定す
る絶対タブ整列記号と、相対タブ位置を基準にしてテキ
ストの整列を指定する相対タブ整列記号を記述すること
になる。11は属性文法記述10をなす展開規則であっ
て、処理対象文の展開規則を記述するもの、12は属性
文法記述10をなす意味記述であって、処理対象文中の
意味内容を記述するもの、20は本発明を具備するテス
トプログラム作成処理装置であって、言語処理プログラ
ム用のテストプログラムを自動作成するもの、21はリ
ーグであって、属性文法記述10を内部形式に変換する
もの、22は翻訳処理器であって、リーダ21により変
換された内部形式を展開して内部形式テストプログラム
を作成する展開処理部23と、内部形式テストプログラ
ムの作成にあたって必要となる意味記述12の実行依頼
を行う意味記述処理依頼部26とを備えるもの、24は
展開処理部23が備える乱数発生部であって、展開規則
に関しての選択処理に必要となる乱数を発生させるもの
、25は展開処理部23が備える構造体変数管理部であ
って、内部形式テストプログラムの展開処理のために必
要となる変数データを構造的に管理するもの、27は意
味記述解釈器であって、意味記述処理依頼部26からの
起動依頼に応じて処理要求のある意味記述12を実行す
るもの、28はライタであって、翻訳処理器22により
作成された内部形式テストプログラムを実行可能なテス
トプログラムとしてファイル等に出力するもの、281
はライタ28が備えるタブ変数管理部であって、絶対タ
ブ整列記号に従って変数として扱われる絶対タブ位置と
、相対タブ整列記号に従って変数として扱われる相対タ
ブ位置とを管理するもの、282はライタ28が備える
テキスト整列出力部であって、出力するテストプログラ
ムのテキストに、絶対タブ整列記号若しくは相対タブ整
列記号の記述があるときには、タブ変数管理部281が
管理するタブ位置を出力開始位置の基準にして、整列指
定のあるテキストを出力するもの、30は出力されたテ
ストプログラムである。
ここで、絶対タブ位置とは、出力行の先頭の桁からのカ
ラム数を表す位置情報であり、相対タブ位置とは、展開
規則11の親となる非終端記号(展開されてテキストと
なる記号)の記述基準位置からのカラム桁数を表す位置
情報である。
ラム数を表す位置情報であり、相対タブ位置とは、展開
規則11の親となる非終端記号(展開されてテキストと
なる記号)の記述基準位置からのカラム桁数を表す位置
情報である。
本発明では、リーダ21の処理に従って、属性文法記述
lOを翻訳処理器22が解釈し易い形式である内部形式
に変換する。この内部形式を受は取ると、展開処理部2
3は、展開規則11に従って再帰的に展開を実行してい
くことで、内部形式テストプログラムへの展開を実行す
る。この展開時に意味記述12の実行が必要となる場合
には、意味記述処理依頼部26が、意味記述解釈器27
を起動していくよう処理し、このようにして起動される
意味記述解釈器27は、構造体変数管理部25の変数値
を新たなものに更新していく処理を実行する。そして、
展開処理部23は、この更新された変数値を参照しなが
ら内部形式テストプログラムへの展開を実行していくと
ともに、この展開にあたって必要となる展開規則11中
に含まれる選択性の規則に関しては、乱数発生部24が
発生する乱数値に従って選択対象の選択や値の選択を実
行していく。
lOを翻訳処理器22が解釈し易い形式である内部形式
に変換する。この内部形式を受は取ると、展開処理部2
3は、展開規則11に従って再帰的に展開を実行してい
くことで、内部形式テストプログラムへの展開を実行す
る。この展開時に意味記述12の実行が必要となる場合
には、意味記述処理依頼部26が、意味記述解釈器27
を起動していくよう処理し、このようにして起動される
意味記述解釈器27は、構造体変数管理部25の変数値
を新たなものに更新していく処理を実行する。そして、
展開処理部23は、この更新された変数値を参照しなが
ら内部形式テストプログラムへの展開を実行していくと
ともに、この展開にあたって必要となる展開規則11中
に含まれる選択性の規則に関しては、乱数発生部24が
発生する乱数値に従って選択対象の選択や値の選択を実
行していく。
そして、内部形式テストプログラムへの展開処理が終了
すると、属性文法記述10に記述されている確認文中の
パラメータ部分に、処理対象文の一態様として翻訳され
た乱数文の実行結果に関しての値が設定され、言語処理
プログラム用のテストプログラムの基本単位に相当する
内部形式プログラムの作成が終了することになる。内部
形式プログラムの作成が終了すると、ライタ28は、内
部形式テストプログラムを実行可能なテストプログラム
30として出力して処理を終了する。
すると、属性文法記述10に記述されている確認文中の
パラメータ部分に、処理対象文の一態様として翻訳され
た乱数文の実行結果に関しての値が設定され、言語処理
プログラム用のテストプログラムの基本単位に相当する
内部形式プログラムの作成が終了することになる。内部
形式プログラムの作成が終了すると、ライタ28は、内
部形式テストプログラムを実行可能なテストプログラム
30として出力して処理を終了する。
このテストプログラムの自動作成処理にあって、本発明
では、属性文法記述10が、絶対タブ位置にカーソルを
移動する指定を行う”1iiATAB”とか、絶対タブ
の値を例えば2つ増やして、その位置にカーソルを移動
する指定を行う”1iATAB+”とが、絶対タブの値
を例えば2つ減らして、その位置にカーソルを移動する
指定を行うaATAB−”とかいうような絶対タブ位置
を基準にしてテキストの整列の指定を行う絶対タブ整列
記号と、相対タブ位置にカーソルを移動する指定を行う
−TAB“とか、相対タブの値を例えば2つ増やして、
その位置にカーソルを移動する指定を行う”1jTAB
+”とが、相対タブの値を例えば2つ減らして、その位
置にカーソルを移動する指定を行う“1jTAB−″と
かいうような相対タブ位置を基準にしてテキストの整列
の指定を行う相対タブ整列記号とを記述することになる
。
では、属性文法記述10が、絶対タブ位置にカーソルを
移動する指定を行う”1iiATAB”とか、絶対タブ
の値を例えば2つ増やして、その位置にカーソルを移動
する指定を行う”1iATAB+”とが、絶対タブの値
を例えば2つ減らして、その位置にカーソルを移動する
指定を行うaATAB−”とかいうような絶対タブ位置
を基準にしてテキストの整列の指定を行う絶対タブ整列
記号と、相対タブ位置にカーソルを移動する指定を行う
−TAB“とか、相対タブの値を例えば2つ増やして、
その位置にカーソルを移動する指定を行う”1jTAB
+”とが、相対タブの値を例えば2つ減らして、その位
置にカーソルを移動する指定を行う“1jTAB−″と
かいうような相対タブ位置を基準にしてテキストの整列
の指定を行う相対タブ整列記号とを記述することになる
。
例えば、IF文の属性文法記述10中に記述される相対
タブ整列記号で例示するならば、IF文−”IP”条件
”訂A8+” ”TIIPN”文1 ”aTA8” ”ELSE’文2″aTAB−” ”END−IF’& 条件→A=:=1& 文工→IFB・−一1 TIIEN IF C=:;I THEN F=1 ELSE G=1 END−IF ELSE D=1 END−IF& 文2→E・1& と記述するのである。ここで、「=」は、展開規則定義
を表すもので、これから、この属性文法記述10は、I
F文の展開規則定義であるIF文−IP” 条件m1j
TAB+””TI−IEN”文1 ”1ilTAB””
IELSE”文2 ”1jTAB−””END−IF’
& の中の「条件」、「文l」、「文2」に、それぞれの展
開規則定義を代入すべきことを意味している。ここで、
「”」で区切られる記号は、それ以上展開されない終端
記号を表し、絶対タブ整列記号と相対タブ整列記号も特
殊な終端記号として用いられることになる。また、「&
」は文末を表す記号である。但し、「条件」、「文1」
、「文2」の展開規則定義に記述される記号はすべて終
端記号であるが、記述の便宜上「”」を省略しである。
タブ整列記号で例示するならば、IF文−”IP”条件
”訂A8+” ”TIIPN”文1 ”aTA8” ”ELSE’文2″aTAB−” ”END−IF’& 条件→A=:=1& 文工→IFB・−一1 TIIEN IF C=:;I THEN F=1 ELSE G=1 END−IF ELSE D=1 END−IF& 文2→E・1& と記述するのである。ここで、「=」は、展開規則定義
を表すもので、これから、この属性文法記述10は、I
F文の展開規則定義であるIF文−IP” 条件m1j
TAB+””TI−IEN”文1 ”1ilTAB””
IELSE”文2 ”1jTAB−””END−IF’
& の中の「条件」、「文l」、「文2」に、それぞれの展
開規則定義を代入すべきことを意味している。ここで、
「”」で区切られる記号は、それ以上展開されない終端
記号を表し、絶対タブ整列記号と相対タブ整列記号も特
殊な終端記号として用いられることになる。また、「&
」は文末を表す記号である。但し、「条件」、「文1」
、「文2」の展開規則定義に記述される記号はすべて終
端記号であるが、記述の便宜上「”」を省略しである。
ライタ28のタブ変数管理部281は、属性文法記述1
0中に絶対タブ整列記号と相対タブ整列記号が記述され
るときには、それらの絶対タブ整列記号と相対タブ整列
記号に従って更新されることになる絶対タブ位置と相対
タブ位置を管理するよう処理する。上述の例で説明する
ならば、最初に記述される相対タブ整列記号の”aTA
B+”に従って、それまでに管理していた相対タブ位置
を2力ラム数分加算して管理し、続いて、次に記述され
る相対タブ整列記号の”1NTAB”に従って、それま
でに管理していた相対タブ位置を保持して管理し、続い
て、最後に記述される相対タブ整列記号の”aTAB−
”に従って、それまでに管理していた相対タブ位置を2
力ラム数分減算して管理するよう処理するのである。
0中に絶対タブ整列記号と相対タブ整列記号が記述され
るときには、それらの絶対タブ整列記号と相対タブ整列
記号に従って更新されることになる絶対タブ位置と相対
タブ位置を管理するよう処理する。上述の例で説明する
ならば、最初に記述される相対タブ整列記号の”aTA
B+”に従って、それまでに管理していた相対タブ位置
を2力ラム数分加算して管理し、続いて、次に記述され
る相対タブ整列記号の”1NTAB”に従って、それま
でに管理していた相対タブ位置を保持して管理し、続い
て、最後に記述される相対タブ整列記号の”aTAB−
”に従って、それまでに管理していた相対タブ位置を2
力ラム数分減算して管理するよう処理するのである。
このように、タブ変数管理部281が属性文法記述lO
の記述に従って変化していく絶対タブ位置と相対タブ位
置を管理していくときにあって、ライタ28のテキスト
整列出力部282は、絶対タブ整列記号があるときには
、ダブ変数管理部281が管理する絶対タブ位置を出力
開始位置にして、整列指定のあるテキストを出力してい
くとともに、相対タブ整列記号があるときには、ダブ変
数管理部281が管理する相対タブ位置を出力開始位置
にして、整列指定のあるテキストを出力していくよう処
理する。上述の例で説明するならば、最初に記述される
相対タブ整列記号の”aTAB+”を検出すると、次の
出力対象である「“THEN”文l」のテキストについ
ては、タブ変数管理部281を参照することで、2つ右
にシフト(変数値の増加する方向を右としている)した
位置を基準にして出力し、続いて、次に記述される相対
タブ整列記号の”aTAB”を検出すると、次の出力対
象である[”ELSf!″文2」のテキストについては
、タブ変数管理部281を参照することで、前回の出力
開始位置を基準に°して出力し、続いて、最後に記述さ
れる相対タブ整列記号の”1ljTAB−”を検出する
と、次の出力対象である[”END−IP’ Jのテキ
ストについては、タブ変数管理部281を参照すること
で、前回の出力位置から2つ左にシフトした位置を基準
にして出力するよう処理するのである。
の記述に従って変化していく絶対タブ位置と相対タブ位
置を管理していくときにあって、ライタ28のテキスト
整列出力部282は、絶対タブ整列記号があるときには
、ダブ変数管理部281が管理する絶対タブ位置を出力
開始位置にして、整列指定のあるテキストを出力してい
くとともに、相対タブ整列記号があるときには、ダブ変
数管理部281が管理する相対タブ位置を出力開始位置
にして、整列指定のあるテキストを出力していくよう処
理する。上述の例で説明するならば、最初に記述される
相対タブ整列記号の”aTAB+”を検出すると、次の
出力対象である「“THEN”文l」のテキストについ
ては、タブ変数管理部281を参照することで、2つ右
にシフト(変数値の増加する方向を右としている)した
位置を基準にして出力し、続いて、次に記述される相対
タブ整列記号の”aTAB”を検出すると、次の出力対
象である[”ELSf!″文2」のテキストについては
、タブ変数管理部281を参照することで、前回の出力
開始位置を基準に°して出力し、続いて、最後に記述さ
れる相対タブ整列記号の”1ljTAB−”を検出する
と、次の出力対象である[”END−IP’ Jのテキ
ストについては、タブ変数管理部281を参照すること
で、前回の出力位置から2つ左にシフトした位置を基準
にして出力するよう処理するのである。
このテキスト整列出力部282の処理により、上述のI
F文の属性文法記述10は、下記のように、a7だで示
す2つ分の段差のスペースができるとともに、′↑”が
指すrTIIENJと“↓”が指すrELSEJとの出
力位置が揃うことから、見易いテストプログラム30と
して出力されることになる。
F文の属性文法記述10は、下記のように、a7だで示
す2つ分の段差のスペースができるとともに、′↑”が
指すrTIIENJと“↓”が指すrELSEJとの出
力位置が揃うことから、見易いテストプログラム30と
して出力されることになる。
IF A=:=1
//THEN IF B−:=1
↑ THEN IF C=:冨1
THEN p=t
ELSE c=t
END−IF
ELSE o、、t
↓
END−IF
//ELSE E=1
END−IF
このように、本発明を用いなければ、ただ単にテキスト
がつなげられて出力されることで、非常に見にくいテス
トプログラム30が出力されることになるのに対して、
本発明を用いることで、非常に見易(解読し易いテスト
プログラム30が出力できるようになるのである。
がつなげられて出力されることで、非常に見にくいテス
トプログラム30が出力されることになるのに対して、
本発明を用いることで、非常に見易(解読し易いテスト
プログラム30が出力できるようになるのである。
以下、実施例に従って本発明の詳細な説明する。
第2図に、本発明により自動作成されるテストプログラ
ムの使用方法の説明図を示す。図中、第1図で説明した
ものと同じものについては、同一の記号で示しである。
ムの使用方法の説明図を示す。図中、第1図で説明した
ものと同じものについては、同一の記号で示しである。
40は検査対象となる言語処理プログラムであって、属
性文法記述10に記述されることになる処理対象文のコ
ンパイル処理を実行するもの、41はテスト用オブジェ
クトプログラムであって、言語処理プログラム40によ
りコンパイルされたテストプログラム30のオブジェク
トプログラムであるもの、42はリンカであって、テス
ト用オブジェクトプログラム41とライブラリ43のプ
ログラムとのリンクを実行するもの、44はリンカ42
によってテスト用オブジェクトプログラム41とリンク
されることになるCHECKプログラムであって、テス
トプログラム30中に記述される乱数文の実行結果の確
認を行うテストルーチンであるもの、45は実行単位を
なすロードモジュール、46はロードモジュール45の
実行結果を表す実行結果出力である。
性文法記述10に記述されることになる処理対象文のコ
ンパイル処理を実行するもの、41はテスト用オブジェ
クトプログラムであって、言語処理プログラム40によ
りコンパイルされたテストプログラム30のオブジェク
トプログラムであるもの、42はリンカであって、テス
ト用オブジェクトプログラム41とライブラリ43のプ
ログラムとのリンクを実行するもの、44はリンカ42
によってテスト用オブジェクトプログラム41とリンク
されることになるCHECKプログラムであって、テス
トプログラム30中に記述される乱数文の実行結果の確
認を行うテストルーチンであるもの、45は実行単位を
なすロードモジュール、46はロードモジュール45の
実行結果を表す実行結果出力である。
この図に示すように、本発明に係るテストプログラム作
成処理装置20は、言語処理プログラム40の機能の検
証のために必要となるテストプログラム30を作成する
ために用意されるものであり、この必要とされるテスト
プログラム30を、マニュアルに従って記述される属性
文法記述IOから自動作成するよう処理することになる
。
成処理装置20は、言語処理プログラム40の機能の検
証のために必要となるテストプログラム30を作成する
ために用意されるものであり、この必要とされるテスト
プログラム30を、マニュアルに従って記述される属性
文法記述IOから自動作成するよう処理することになる
。
第3図に、「代入文」に関しての属性文法記述10の一
実施例を示す。この属性文法記述10は、様々な形式の
「代入文」を複数個作成して、言語処理プログラム40
がそれらの「代入文」についての計算処理を行ったとき
に、正しい数値を算出するのか否かをテストするために
プログラマ等により作成される。第4図に、この属性文
法記述lOから自動作成されることになるテストプログ
ラム30の一実施例を示す、このテストプログラム30
は、「代入文」の−態様である乱数文(「代入文」の展
開規則に対しての乱数的な選択処理により生成される)
と、CHECKプログラム44を呼び出すための確認文
との対を基本単位にして、この基本単位を複数つなげる
ことで構成される。
実施例を示す。この属性文法記述10は、様々な形式の
「代入文」を複数個作成して、言語処理プログラム40
がそれらの「代入文」についての計算処理を行ったとき
に、正しい数値を算出するのか否かをテストするために
プログラマ等により作成される。第4図に、この属性文
法記述lOから自動作成されることになるテストプログ
ラム30の一実施例を示す、このテストプログラム30
は、「代入文」の−態様である乱数文(「代入文」の展
開規則に対しての乱数的な選択処理により生成される)
と、CHECKプログラム44を呼び出すための確認文
との対を基本単位にして、この基本単位を複数つなげる
ことで構成される。
具体的に説明するならば、第4図中の
AAE=−299*448
CALL CHECK(1,AAE、−133952
)がテストプログラム30の基本単位をなすものである
。この基本単位の意味するところは、AAE=−299
*448 という乱数文を言語処理プログラム40で処理させると
、変数名のrAAEJのところに、1 3 3 9 5
2(=−299本448)の値がセットされていれば
正しい処理がなされたことになるので、この変数名と値
とを引数にして、CHECKプログラム44の呼び出し
を行うCALL CHECK(1,AAE、−133
952)という確認文を、この乱数文と対にして作成す
るのである。
)がテストプログラム30の基本単位をなすものである
。この基本単位の意味するところは、AAE=−299
*448 という乱数文を言語処理プログラム40で処理させると
、変数名のrAAEJのところに、1 3 3 9 5
2(=−299本448)の値がセットされていれば
正しい処理がなされたことになるので、この変数名と値
とを引数にして、CHECKプログラム44の呼び出し
を行うCALL CHECK(1,AAE、−133
952)という確認文を、この乱数文と対にして作成す
るのである。
本発明の詳細な説明に入る前に、第3図の属性文法記述
10を例にしながら、本発明に係るテストプログラム作
成処理装置20が実行することになるテストプログラム
30の自動作成処理について説明する。ここで、テスト
プログラム作成処理装置20のシステム構成は第1図で
説明したものと同一である。
10を例にしながら、本発明に係るテストプログラム作
成処理装置20が実行することになるテストプログラム
30の自動作成処理について説明する。ここで、テスト
プログラム作成処理装置20のシステム構成は第1図で
説明したものと同一である。
リーダ21は、第3図の属性文法記述10を読み取ると
、この読み取った属性文法記述10を内部形式に変換す
る。この変換された属性文法記述lOを受は取ると、翻
訳処理器22は、出発記号の「¥文法記述」に続く (設定 項番値 l) に従って、システム変数の「項番値」という変数名のと
ころに、′l”をセットする。この設定処理は、翻訳処
理器22が「設定」という記号を解釈したときに、意味
記述解釈器27が管理する「設定」という名の関数に起
動をかけることで実行されることになる。この意味記述
解釈器27は、具体的には、例えばLISPシステムで
構成されて、定義されている関数の呼び出しがかかると
、その関数の処理を実行して処理値を翻訳処理器22に
返すよう処理することになる。
、この読み取った属性文法記述10を内部形式に変換す
る。この変換された属性文法記述lOを受は取ると、翻
訳処理器22は、出発記号の「¥文法記述」に続く (設定 項番値 l) に従って、システム変数の「項番値」という変数名のと
ころに、′l”をセットする。この設定処理は、翻訳処
理器22が「設定」という記号を解釈したときに、意味
記述解釈器27が管理する「設定」という名の関数に起
動をかけることで実行されることになる。この意味記述
解釈器27は、具体的には、例えばLISPシステムで
構成されて、定義されている関数の呼び出しがかかると
、その関数の処理を実行して処理値を翻訳処理器22に
返すよう処理することになる。
翻訳処理器22は、続いて記述される
く“aNL ” 代入文 5 10> &により、
所定の数(この例では、5から10までの間の乱数値で
指定される)の「代入文」についてのテストプログラム
30を、1つずつ改行して作成する必要があることを知
る。ここで、raNLJは、作成する代入文のテキスト
を改行して出力せよという指定を表す記号である。この
「代入文」は「#」で区切られていないので、「“」で
区切られる終端記号とは異なって、展開されていくこと
でテキストに翻訳されていくという非終端記号である。
所定の数(この例では、5から10までの間の乱数値で
指定される)の「代入文」についてのテストプログラム
30を、1つずつ改行して作成する必要があることを知
る。ここで、raNLJは、作成する代入文のテキスト
を改行して出力せよという指定を表す記号である。この
「代入文」は「#」で区切られていないので、「“」で
区切られる終端記号とは異なって、展開されていくこと
でテキストに翻訳されていくという非終端記号である。
このような非終端記号は、別の位置にどのようにテキス
トに展開していけばよいかが記述されているので、翻訳
処理器22は、その展開規則11に従って展開処理を実
行する。
トに展開していけばよいかが記述されているので、翻訳
処理器22は、その展開規則11に従って展開処理を実
行する。
この例では、続いて、
変数 “=“ 式
と「代入文」の定義がされており、更に、この定義中の
「変数」の定義が図中の0部分で展開されていて、「式
」の定義が図中の■部分で展開されている。この■及び
■部分の「1」の記号は、いずれか1つのものを乱数に
従って選択することを表している。これから、翻訳処理
器22は、乱数処理に従って「代入文」の「変数」とし
て、例えばrAAEJの変数名を選択し、「代入文」の
「式」として、例えば「数1本数2」の弐を選択する。
「変数」の定義が図中の0部分で展開されていて、「式
」の定義が図中の■部分で展開されている。この■及び
■部分の「1」の記号は、いずれか1つのものを乱数に
従って選択することを表している。これから、翻訳処理
器22は、乱数処理に従って「代入文」の「変数」とし
て、例えばrAAEJの変数名を選択し、「代入文」の
「式」として、例えば「数1本数2」の弐を選択する。
このとき実行する乱数による選択対象の選択処理は、具
体的には、乱数発生部24が、選択対象の前に記述され
ている選択値(この例では、すべて“100”である)
の総和(この例では、“500”である)の内にある乱
数値を発生させて、その発生した乱数値が属する選択値
の選択対象を選ぶことで行うことになる。また、「数1
本数2」のように、更に展開されるものについては、そ
の展開規則に従って展開を続行していく。この例では、
「数1本数2」は、更に0部分で展開されているので、
その展開に従って、例えば、「数値1」として’−29
9”を選択し、「数値2」として“448”を選択する
ことになる。
体的には、乱数発生部24が、選択対象の前に記述され
ている選択値(この例では、すべて“100”である)
の総和(この例では、“500”である)の内にある乱
数値を発生させて、その発生した乱数値が属する選択値
の選択対象を選ぶことで行うことになる。また、「数1
本数2」のように、更に展開されるものについては、そ
の展開規則に従って展開を続行していく。この例では、
「数1本数2」は、更に0部分で展開されているので、
その展開に従って、例えば、「数値1」として’−29
9”を選択し、「数値2」として“448”を選択する
ことになる。
このようにして、第4図のテストプログラム30の先頭
に位置する代入文の一態様であるAAE=−29914
48 というテキストが作成されることになる。
に位置する代入文の一態様であるAAE=−29914
48 というテキストが作成されることになる。
「代入文」の定義に続いて記述される
「代入 変数 (値 式)j
により、翻訳処理器22は、意味記述解釈器27が管理
する「代入」という名の関数に起動をかけることで、テ
スト対象言語変数の「変数」のところに、「式」の値を
設定するよう処理する。いまの場合、「変数」としては
rAAEJが選択されているので、このrAAEJとい
う変数名のところに「式」の値を設定する。この「式」
の値は、具体的には、■部分の選択規則の[数1*数2
Jの後に続いて記述されている 「値設定(*(値 数1)(値 数2))jで算出され
る。この算出処理も、意味記述解釈器27により実行さ
れて、いまの場合では、「数値1」の値である−299
”と、「数値2」の値である“448′との乗算値であ
る“−133952”が、この「式」の値として算出さ
れる。これから、rAAEJという変数名のところに、
“−133952“が設定されることになる。
する「代入」という名の関数に起動をかけることで、テ
スト対象言語変数の「変数」のところに、「式」の値を
設定するよう処理する。いまの場合、「変数」としては
rAAEJが選択されているので、このrAAEJとい
う変数名のところに「式」の値を設定する。この「式」
の値は、具体的には、■部分の選択規則の[数1*数2
Jの後に続いて記述されている 「値設定(*(値 数1)(値 数2))jで算出され
る。この算出処理も、意味記述解釈器27により実行さ
れて、いまの場合では、「数値1」の値である−299
”と、「数値2」の値である“448′との乗算値であ
る“−133952”が、この「式」の値として算出さ
れる。これから、rAAEJという変数名のところに、
“−133952“が設定されることになる。
「代入文」の定義の最後では、「確認」を展開すること
が要求されている。この「確認」がいかなるものである
かは、図中の0部分で展開されている。これから、翻訳
処理器22は、この0部分の展開規則に従って、「項番
」の値の“1”と、「変数」のrAAEJと、「変数値
」の“−133952”とを引数として、CHECKプ
ログラム44の呼び出しを行う CALL CHECK(1,AAE、−133952
)という6141文の展開を実行する。このようにして
、AAE=−299*44B CALL CHECK(1,AAE、433952
)という内部形式テストプログラムの作成が終了するこ
とになる。そして、最後に、0部分の更新規則に従って
、意味記述解釈器27に起動をかけて、次の乱数文のた
めに、システム変数の「項番値」の変数名の値を1つ歩
進させる処理を行うよう処理する。
が要求されている。この「確認」がいかなるものである
かは、図中の0部分で展開されている。これから、翻訳
処理器22は、この0部分の展開規則に従って、「項番
」の値の“1”と、「変数」のrAAEJと、「変数値
」の“−133952”とを引数として、CHECKプ
ログラム44の呼び出しを行う CALL CHECK(1,AAE、−133952
)という6141文の展開を実行する。このようにして
、AAE=−299*44B CALL CHECK(1,AAE、433952
)という内部形式テストプログラムの作成が終了するこ
とになる。そして、最後に、0部分の更新規則に従って
、意味記述解釈器27に起動をかけて、次の乱数文のた
めに、システム変数の「項番値」の変数名の値を1つ歩
進させる処理を行うよう処理する。
翻訳処理器22は、以下同様の処理を繰り返していくこ
とで、第4図に示したような内部形式テストプログラム
の作成を実行することになる。そして、属性文法記述1
0に対応する内部形式テストプログラムの作成が終了す
ると、ライク28は、この作成した内部形式テストプロ
グラムを実行可能なテストプログラムとして出力してテ
ストプログラム30の作成処理を終了する。
とで、第4図に示したような内部形式テストプログラム
の作成を実行することになる。そして、属性文法記述1
0に対応する内部形式テストプログラムの作成が終了す
ると、ライク28は、この作成した内部形式テストプロ
グラムを実行可能なテストプログラムとして出力してテ
ストプログラム30の作成処理を終了する。
このように、翻訳処理器22は、属性文法記述10中の
展開規則11に従って再帰的に展開を実行していくこと
で、内部形式テストプログラムへの展開を実行す゛る。
展開規則11に従って再帰的に展開を実行していくこと
で、内部形式テストプログラムへの展開を実行す゛る。
この展開時に、属性文法記述lO中の意味記述12の実
行が必要となる場合には、意味記述解釈器27を起動し
ていくよう処理し、この起動される意味記述解釈器27
は、構造体変数管理部25の変数データを新たなものに
更新していく処理を実行する。そして、翻訳処理器22
は、内部形式テストプログラムへの展開を、この更新さ
れた変数データを参照しながら実行してい(とともに、
展開にあたって必要となる展開規則11中に含まれる選
択性の規則に関しては、乱数発生部24により発生され
る乱数値に従って選択対象を選択することで行うことに
なる。
行が必要となる場合には、意味記述解釈器27を起動し
ていくよう処理し、この起動される意味記述解釈器27
は、構造体変数管理部25の変数データを新たなものに
更新していく処理を実行する。そして、翻訳処理器22
は、内部形式テストプログラムへの展開を、この更新さ
れた変数データを参照しながら実行してい(とともに、
展開にあたって必要となる展開規則11中に含まれる選
択性の規則に関しては、乱数発生部24により発生され
る乱数値に従って選択対象を選択することで行うことに
なる。
次に、本発明の特徴部分について説明する。本発明では
、第1図でも説明したように、属性文法記述10にテス
トプログラム30のテキストを整列させるための記号(
以下、整列終端記号と称する)を記述できるようにする
とともに、テストプログラム作成処理装置20が、この
記述される整列終端記号を解読して、その指定の整列方
式に従ってテストプログラム30のテキストを出力する
よう構成することで、解読し易いテストプログラム30
の作成を実現することを特徴とするものである。
、第1図でも説明したように、属性文法記述10にテス
トプログラム30のテキストを整列させるための記号(
以下、整列終端記号と称する)を記述できるようにする
とともに、テストプログラム作成処理装置20が、この
記述される整列終端記号を解読して、その指定の整列方
式に従ってテストプログラム30のテキストを出力する
よう構成することで、解読し易いテストプログラム30
の作成を実現することを特徴とするものである。
第5図に、本発明が用意する整列終端記号の一実施例を
示す。次に、この図に示す各整列終端記号の整列の指定
内容について説明する。
示す。次に、この図に示す各整列終端記号の整列の指定
内容について説明する。
r’aNL’Jは、次行の先頭にカーソルを戻すことを
指定するという整列終端記号である。これから、この整
列終端記号の後に続くテキストについては、次行の先頭
位置から出力されることで改行された形式で出力される
ことになる。1行に出力できるテキストの長さは、例え
ば80桁というようなカラム数の長さである。
指定するという整列終端記号である。これから、この整
列終端記号の後に続くテキストについては、次行の先頭
位置から出力されることで改行された形式で出力される
ことになる。1行に出力できるテキストの長さは、例え
ば80桁というようなカラム数の長さである。
[aATAB’ Jは、第1図でも説明したように、絶
対タブ位置にカーソルを移動することを指定するという
整列終端記号である。ここで、この絶対タブ位置とは、
出力する行の先頭の桁からのカラム数を表すものである
。この整列終端記号の後に続くテキストについては、タ
ブ変数管理部281が管理する“絶対タブ位置”を出力
開始位置にして出力されることになる。
対タブ位置にカーソルを移動することを指定するという
整列終端記号である。ここで、この絶対タブ位置とは、
出力する行の先頭の桁からのカラム数を表すものである
。この整列終端記号の後に続くテキストについては、タ
ブ変数管理部281が管理する“絶対タブ位置”を出力
開始位置にして出力されることになる。
r ”aATAB+”」は、第1図でも説明したように
、絶対タブの値を例えば2力ラム数分増やして、その位
置にカーソルを移動することを指定するという整列終端
記号である。これから、この整列終端記号があると、タ
ブ変数管理部281が管理する“絶対タブ位置”は、2
力ラム数分増加した値に更新され、そして、この整列終
端記号の後に続(テキストについては、この更新された
タブ変数管理部281の“絶対タブ位置”を出力開始位
置にして出力されることになる。
、絶対タブの値を例えば2力ラム数分増やして、その位
置にカーソルを移動することを指定するという整列終端
記号である。これから、この整列終端記号があると、タ
ブ変数管理部281が管理する“絶対タブ位置”は、2
力ラム数分増加した値に更新され、そして、この整列終
端記号の後に続(テキストについては、この更新された
タブ変数管理部281の“絶対タブ位置”を出力開始位
置にして出力されることになる。
r”aATAB−−は、第1図でも説明したように、絶
対タブの値を例えば2カラム数分減らして、その位置に
カーソルを移動することを指定するという整列終端記号
である。これから、この整列終端記号があると、タブ変
数管理部281が管理する′絶対タブ位置”は、2力ラ
ム数分減少した値に更新され、そして、この整列終端記
号の後に続くテキストについては、この更新されたタブ
変数管理部281の“絶対タブ位置“を出力開始位置に
して出力されることになる。
対タブの値を例えば2カラム数分減らして、その位置に
カーソルを移動することを指定するという整列終端記号
である。これから、この整列終端記号があると、タブ変
数管理部281が管理する′絶対タブ位置”は、2力ラ
ム数分減少した値に更新され、そして、この整列終端記
号の後に続くテキストについては、この更新されたタブ
変数管理部281の“絶対タブ位置“を出力開始位置に
して出力されることになる。
「”aRNL”」は、親の非終端記号の記述基準位置(
例えば、記述開始位置)にカーソルを移動することを指
定するという整列終端記号である。この整列終端記号の
ために、タブ変数管理部281は、親の非終端記号の記
述開始位置を管理することになる。この整列終端記号の
後に続くテキストについては、親の非終端記号の記述開
始位置を出力開始位置にして出力されることになる。こ
こで、親の非終端記号とは、展開の木構造の上位に位置
する非終端記号をいうものである。
例えば、記述開始位置)にカーソルを移動することを指
定するという整列終端記号である。この整列終端記号の
ために、タブ変数管理部281は、親の非終端記号の記
述開始位置を管理することになる。この整列終端記号の
後に続くテキストについては、親の非終端記号の記述開
始位置を出力開始位置にして出力されることになる。こ
こで、親の非終端記号とは、展開の木構造の上位に位置
する非終端記号をいうものである。
r’aTAB″」は、第1図でも説明したように、相対
タブ位置にカーソルを移動することを指定するという整
列終端記号である。ここで、この相対タブ位置とは、親
の非終端記号の記述基準位置からのカラム数を表すもの
である。・「aATAB″」がタブ変数管理部281が
管理する“絶対タブ位置”を出力開始位置とするのに対
して、このビaTAB”」は、タブ変数管理部281が
管理する“相対タブ位置“を出力開始位置とすることに
なる。
タブ位置にカーソルを移動することを指定するという整
列終端記号である。ここで、この相対タブ位置とは、親
の非終端記号の記述基準位置からのカラム数を表すもの
である。・「aATAB″」がタブ変数管理部281が
管理する“絶対タブ位置”を出力開始位置とするのに対
して、このビaTAB”」は、タブ変数管理部281が
管理する“相対タブ位置“を出力開始位置とすることに
なる。
「”aTAB+”」は、第1図でも説明したように、相
対タブの値を例えば2力ラム数分増やして、その位置に
カーソルを移動することを指定するという整列終端記号
である。「”aATAB+“」との違いは、絶対タブで
はなくて、相対タブが基準となることである。また、「
”1jTAB−”」は、第1図でも説明したように、相
対タブの値を例えば2カラム数分減らして、その位置に
カーソルを移動することを指定するという整列終端記号
である。「”aATAB−”」との違いは、絶対タブで
はなくて、相対タブが基準となることである。これらの
「”aTAB+”」とr’1jTAB−”」とをIF文
に関してのテキストの出力のために用いると、入れ子ご
とに段付けした出力が可能になって、テストプログラム
30が極めて見易くできることになる。
対タブの値を例えば2力ラム数分増やして、その位置に
カーソルを移動することを指定するという整列終端記号
である。「”aATAB+“」との違いは、絶対タブで
はなくて、相対タブが基準となることである。また、「
”1jTAB−”」は、第1図でも説明したように、相
対タブの値を例えば2カラム数分減らして、その位置に
カーソルを移動することを指定するという整列終端記号
である。「”aATAB−”」との違いは、絶対タブで
はなくて、相対タブが基準となることである。これらの
「”aTAB+”」とr’1jTAB−”」とをIF文
に関してのテキストの出力のために用いると、入れ子ご
とに段付けした出力が可能になって、テストプログラム
30が極めて見易くできることになる。
「”51B−RNじ」は、残りの展開規則によるテキス
トが1行におさまりそうならブランクを出力し、おさま
りそうでないなら「aRNピ」と同じ作用をさせるとい
うことを指定するという整列終端記号である。また、[
”1ilB−↑AB″」は、残りの展開規則によるテキ
ストが1行におさまりそうならブランクを出力し、おさ
まりそうでないなら「”aTAB”」と同じ作用をさせ
るということを指定するという整列終端記号である。ま
た、r’1il−TAB”」は、残りの展開規則による
テキストが1行におさまりそうなら何もせず、おさまり
そうでないならr”1ilTAB“」と同じ作用をさせ
るということを指定するという整列終端記号である。
トが1行におさまりそうならブランクを出力し、おさま
りそうでないなら「aRNピ」と同じ作用をさせるとい
うことを指定するという整列終端記号である。また、[
”1ilB−↑AB″」は、残りの展開規則によるテキ
ストが1行におさまりそうならブランクを出力し、おさ
まりそうでないなら「”aTAB”」と同じ作用をさせ
るということを指定するという整列終端記号である。ま
た、r’1il−TAB”」は、残りの展開規則による
テキストが1行におさまりそうなら何もせず、おさまり
そうでないならr”1ilTAB“」と同じ作用をさせ
るということを指定するという整列終端記号である。
第3図の属性文法記述lOで説明したように、属性文法
記述10中の終端記号は、非終端記号と異なり、それ以
上展開されることはない。これから、属性文法記述10
中に記述されるこれらの整列終端記号は、リーダ21に
より変換された内部形式のまま、翻訳処理器22を介し
てライタ28に渡されることになる。ライタ28は、属
性文法記述lOに記述されるこれらの整列終端記号を検
出すると、その種別を判別して、その種別に応じたテキ
ストの整列処理を実行する。
記述10中の終端記号は、非終端記号と異なり、それ以
上展開されることはない。これから、属性文法記述10
中に記述されるこれらの整列終端記号は、リーダ21に
より変換された内部形式のまま、翻訳処理器22を介し
てライタ28に渡されることになる。ライタ28は、属
性文法記述lOに記述されるこれらの整列終端記号を検
出すると、その種別を判別して、その種別に応じたテキ
ストの整列処理を実行する。
すなわち、「“aNL−であれば、出カポインドをポイ
ントしていくカーソルを出力行の先頭の桁位置に設定す
ることで、次の出力対象のテキストの出力開始位置が、
出力行の先頭の桁位置となるようセットするのである。
ントしていくカーソルを出力行の先頭の桁位置に設定す
ることで、次の出力対象のテキストの出力開始位置が、
出力行の先頭の桁位置となるようセットするのである。
また、ビ輔TAB”」であれば、タブ変数管理部281
が管理している“絶対タブ位置”を参照して、そのカラ
ム位置にカーソルを設定することで、次の出力対象のテ
キストの出力開始位置がこの位置となるようセットする
のである。また、「”1ilTAB+−であれば、タブ
変数管理部281が管理している“相対タブ位置”を参
照して、その位置に2力ラム数分加算したカラム位置に
カーソルを設定することで、次の出力対象のテキストの
出力開始位置がこの加算された位置となるようにセット
するとともに、タブ変数管理部281の“相対タブ位置
”をこの加算された位置に更新していくよう処理するの
である。
が管理している“絶対タブ位置”を参照して、そのカラ
ム位置にカーソルを設定することで、次の出力対象のテ
キストの出力開始位置がこの位置となるようセットする
のである。また、「”1ilTAB+−であれば、タブ
変数管理部281が管理している“相対タブ位置”を参
照して、その位置に2力ラム数分加算したカラム位置に
カーソルを設定することで、次の出力対象のテキストの
出力開始位置がこの加算された位置となるようにセット
するとともに、タブ変数管理部281の“相対タブ位置
”をこの加算された位置に更新していくよう処理するの
である。
なお、このr”2TAB+−の処理にあって、先にタブ
変数管理部281の“相対タブ位置”を更新してから、
その更新されたタブ変数管理部281の“相対タブ位置
”を参照していくよう処理することであっても実質的な
違いはない。
変数管理部281の“相対タブ位置”を更新してから、
その更新されたタブ変数管理部281の“相対タブ位置
”を参照していくよう処理することであっても実質的な
違いはない。
また、「”aB−RNL’ Jであれば、残りのテキス
トが1行におさまりそうなら、r”aB−RNL″」の
記述部分にブランクを出力し、おさまりそうでなくなっ
たときには、タブ変数管理部281が管理している“親
の非終端記号の記述開始位置”を参照して、その位置に
カーソルを設定することで、おさまらない記述部分がこ
の位置から出力されるように処理するのである。そして
、ライク28は、他の整列終端記号についても、その整
列の指定内容に応じて同様な処理を実行していくことに
なる。
トが1行におさまりそうなら、r”aB−RNL″」の
記述部分にブランクを出力し、おさまりそうでなくなっ
たときには、タブ変数管理部281が管理している“親
の非終端記号の記述開始位置”を参照して、その位置に
カーソルを設定することで、おさまらない記述部分がこ
の位置から出力されるように処理するのである。そして
、ライク28は、他の整列終端記号についても、その整
列の指定内容に応じて同様な処理を実行していくことに
なる。
第6図に、[aTAB”J 、 r”、1jRNビJ
、 r”aB−RNL” Jによる整列形式の違いを説
明するための説明図を示す。ここで、第6図(a)は、 A * →’1jTAB+” <”1iTAB″
A 5 〉 &A→’AAAAAAAAAA”& というように記述したときに出力される「A*」のテキ
ストを、また、第6図(b)は、A *−”1ilTA
B+”く”51RNL″ A 5〉&A→”AAAAA
AAAAA”& というように記述したときに出力される「A*」のテキ
ストを、また、第6図(C)は、A *−e”aTAB
+“< ”aB−RNL’ A 5 > &A→”
AAAAAAAAAA”& というように記述したときに出力される「A*」のテキ
ストを示している。ここで、「〈・・・・・・〉」の部
分は、rAJのテキストを5回繰り返して出力せよとい
うことを表している。また、図中では、■の位置が“親
の非終端記号の記述開始位置”であるとし、[”2TA
B+−の記述に従って、それより2力ラム分右に移動し
た■の位置に、“相対タブ位置”があるとしている。
、 r”aB−RNL” Jによる整列形式の違いを説
明するための説明図を示す。ここで、第6図(a)は、 A * →’1jTAB+” <”1iTAB″
A 5 〉 &A→’AAAAAAAAAA”& というように記述したときに出力される「A*」のテキ
ストを、また、第6図(b)は、A *−”1ilTA
B+”く”51RNL″ A 5〉&A→”AAAAA
AAAAA”& というように記述したときに出力される「A*」のテキ
ストを、また、第6図(C)は、A *−e”aTAB
+“< ”aB−RNL’ A 5 > &A→”
AAAAAAAAAA”& というように記述したときに出力される「A*」のテキ
ストを示している。ここで、「〈・・・・・・〉」の部
分は、rAJのテキストを5回繰り返して出力せよとい
うことを表している。また、図中では、■の位置が“親
の非終端記号の記述開始位置”であるとし、[”2TA
B+−の記述に従って、それより2力ラム分右に移動し
た■の位置に、“相対タブ位置”があるとしている。
この図に示すように、第6図(a)では5回の繰り返し
記述部分に「“aTAB”」が記述されているので、「
八*」のテキストは、相対タブ位置である■の位置を出
力開始位置として出力されることになる。また、第6図
(b)ではビaRNL’ Jが記述されているので、「
A*」のテキストは、親の記述開始位置である■の位置
を出力開始位置として出力されることになる。また、第
6図(C)ではビaB−RNL″」が記述されているの
で、1行におさまらない記述部分は、親の出力開始位置
である■の位置を出力開始位置として出力されることに
なる。
記述部分に「“aTAB”」が記述されているので、「
八*」のテキストは、相対タブ位置である■の位置を出
力開始位置として出力されることになる。また、第6図
(b)ではビaRNL’ Jが記述されているので、「
A*」のテキストは、親の記述開始位置である■の位置
を出力開始位置として出力されることになる。また、第
6図(C)ではビaB−RNL″」が記述されているの
で、1行におさまらない記述部分は、親の出力開始位置
である■の位置を出力開始位置として出力されることに
なる。
本発明では、相対タブ位置を基準にテキストの整列を指
定する整列終端記号の他に、絶対タブ位置を基準にテキ
ストの整列を指定する整列終端記号を備えるよう構成し
た。このように構成したのは、絶対タブ位置による整列
記述は、それ以前の出力のされかたや、親の非終端記号
の記述開始位置や、それまでに至る階層構造等に関係な
く、絶対的な位置を展開規則の中で指定できるからであ
る。例えば、第7図では、4つの異なる属性文法記述1
0を示したが、これらの属性文法記述lOは、記述形式
が異なっても、絶対タブ位置の整列終端記号を用いてい
るので、全く同一の出力形式で出力されることになる。
定する整列終端記号の他に、絶対タブ位置を基準にテキ
ストの整列を指定する整列終端記号を備えるよう構成し
た。このように構成したのは、絶対タブ位置による整列
記述は、それ以前の出力のされかたや、親の非終端記号
の記述開始位置や、それまでに至る階層構造等に関係な
く、絶対的な位置を展開規則の中で指定できるからであ
る。例えば、第7図では、4つの異なる属性文法記述1
0を示したが、これらの属性文法記述lOは、記述形式
が異なっても、絶対タブ位置の整列終端記号を用いてい
るので、全く同一の出力形式で出力されることになる。
また、本発明の有効性を更に高めるために、相対タブ位
置を指定する記述を認めるとともに、この記述により指
定された値をタブ変数管理部281の“相対タブ位置”
に設定できるようにする関数を用意することで、相対タ
ブ位置を任意に設定できるようにすることが好ましいこ
とである。
置を指定する記述を認めるとともに、この記述により指
定された値をタブ変数管理部281の“相対タブ位置”
に設定できるようにする関数を用意することで、相対タ
ブ位置を任意に設定できるようにすることが好ましいこ
とである。
このように、本発明によれば、属性文法記述から言語処
理プログラム用のテストプログラムを自動作成するテス
トプログラム作成処理装置にあって、作成されるテスト
プログラムが極めて解読し易いものとなる。これから、
テストプログラムの作成効率が著しく高められることに
なるとともに、テストの質も向上できるようになるので
ある。
理プログラム用のテストプログラムを自動作成するテス
トプログラム作成処理装置にあって、作成されるテスト
プログラムが極めて解読し易いものとなる。これから、
テストプログラムの作成効率が著しく高められることに
なるとともに、テストの質も向上できるようになるので
ある。
図中、lOは属性文法記述、11は展開規則、12は意
味記述、20はテストプログラム作成処理装置、21は
リーグ、22は翻訳処理器、23は展開処理部、24は
乱数発生部、25は構造体変数管理部、26は意味記述
処理依頼部、27は意味記述解釈器、28はライタ、2
81はタブ変数管理部、282はテキスト整列出力部、
30はテストプログラムである。
味記述、20はテストプログラム作成処理装置、21は
リーグ、22は翻訳処理器、23は展開処理部、24は
乱数発生部、25は構造体変数管理部、26は意味記述
処理依頼部、27は意味記述解釈器、28はライタ、2
81はタブ変数管理部、282はテキスト整列出力部、
30はテストプログラムである。
第1図は本発明の原理構成図、
第2図は本発明により自動作成されるテストプログラム
の使用方法を説明する説明図、第3図は属性文法記述の
一実施例図、 第4図は第3図の属性文法記述から作成されるテストプ
ログラムの説明図、 第5図はテキストを整列出力するために用意される整列
終端記号の説明図、 第6図及び第7図は整列終端記号の説明図、第8図は先
に出願の発明の説明図である。
の使用方法を説明する説明図、第3図は属性文法記述の
一実施例図、 第4図は第3図の属性文法記述から作成されるテストプ
ログラムの説明図、 第5図はテキストを整列出力するために用意される整列
終端記号の説明図、 第6図及び第7図は整列終端記号の説明図、第8図は先
に出願の発明の説明図である。
Claims (1)
- 【特許請求の範囲】 展開規則と意味記述とからなる属性文法記述(10)に
従って記述された言語処理プログラムの処理対象文に対
して、展開規則に関しての乱数的な選択処理を施すこと
で該処理対象文の一態様をなす乱数文を生成するととも
に、該乱数文の実行結果の確認を行うテストルーチンの
呼び出しのための確認文を、該属性文法記述中に該処理
対象文と対応付けて記述することで該乱数文と対にして
生成して、言語処理プログラム用のテストプログラムと
なすテストプログラム作成処理装置であって、上記属性
文法記述(10)が、上記テストプログラムのテキスト
を整列させるために、少なくとも、出力行の絶対タブ位
置を基準にしてテキストの整列を指定する絶対タブ整列
記号と、親となる非終端記号の記述基準位置からの相対
タブ位置を基準にしてテキストの整列を指定する相対タ
ブ整列記号を記述するよう構成し、 かつ、作成されたテストプログラムを出力するライタ(
28)が、上記絶対タブ整列記号に従って変数として扱
われる上記絶対タブ位置と、上記相対タブ整列記号に従
って変数として扱われる上記相対タブ位置とを管理する
タブ変数管理部(281)と、上記テストプログラムを
出力するときに、上記属性文法記述(10)中に、上記
絶対タブ整列記号若しくは上記相対タブ整列記号の記述
があるときには、上記タブ変数管理部(281)が管理
する該当のタブ位置を基準にして、整列指定のあるテキ
ストを出力するよう処理するテキスト整列出力部(28
2)とを備えることを、 特徴とするテストプログラム作成処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1046215A JPH02224146A (ja) | 1989-02-27 | 1989-02-27 | テストプログラム作成処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP1046215A JPH02224146A (ja) | 1989-02-27 | 1989-02-27 | テストプログラム作成処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02224146A true JPH02224146A (ja) | 1990-09-06 |
Family
ID=12740881
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1046215A Pending JPH02224146A (ja) | 1989-02-27 | 1989-02-27 | テストプログラム作成処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH02224146A (ja) |
-
1989
- 1989-02-27 JP JP1046215A patent/JPH02224146A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Van den Brand et al. | Generation of components for software renovation factories from context-free grammars | |
| Donzeau-Gouge et al. | Programming environments based on structured editors: The MENTOR experience | |
| US6038378A (en) | Method and apparatus for testing implementations of software specifications | |
| US5870590A (en) | Method and apparatus for generating an extended finite state machine architecture for a software specification | |
| US5371747A (en) | Debugger program which includes correlation of computer program source code with optimized object code | |
| US5202996A (en) | Software structuring system and method by data table translation | |
| Sánchez-Cuadrado et al. | Bottom-up meta-modelling: An interactive approach | |
| Paige et al. | Principles for modeling language design | |
| Habermann et al. | Gandalf: Software development environments | |
| JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
| US20030115571A1 (en) | Construction of a software application from a plurality of programming languages | |
| Sellink et al. | An architecture for automated software maintenance | |
| Zhong et al. | An approach for API synthesis using large language models | |
| Freeman | Essential TypeScript 5 | |
| Shtern | Core C++: A software engineering Approach | |
| JPH02224146A (ja) | テストプログラム作成処理装置 | |
| EP0218258A3 (en) | Software structuring system and method by data table translation | |
| Mossin | Partial evaluation of general parsers | |
| Monteiro et al. | An illustrative example of refactoring object‐oriented source code with aspect‐oriented mechanisms | |
| Bülow | Proof visualization for the lean 4 theorem prover | |
| Wu et al. | Design and implementation of an interpreter using software engineering concepts | |
| JPH02224143A (ja) | テストプログラム作成処理装置 | |
| Boyland et al. | Attributed transformational code generation for dynamic compilers | |
| JPH0628165A (ja) | コーディング規則に基づくコード自動診断装置 | |
| JPH02224148A (ja) | テストプログラム作成処理装置 |