JPH06348465A - プログラム作成支援装置 - Google Patents
プログラム作成支援装置Info
- Publication number
- JPH06348465A JPH06348465A JP5138303A JP13830393A JPH06348465A JP H06348465 A JPH06348465 A JP H06348465A JP 5138303 A JP5138303 A JP 5138303A JP 13830393 A JP13830393 A JP 13830393A JP H06348465 A JPH06348465 A JP H06348465A
- Authority
- JP
- Japan
- Prior art keywords
- program
- source code
- rule
- generating
- vocabulary
- 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.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 コード生成ルールを変更するだけでソースコ
ード生成手段を任意のプログラミング言語向けに変更す
ることを可能とし、さらに、ソースコード解析手段とソ
ースコード生成手段の語彙/文法に関する一貫性の保証
を得る。 【構成】 プログラムを編集するプログラム編集手段、
編集したプログラムの動作を検証するプログラム検証手
段、ソースコードを解析し中間表現に変換するソースコ
ード解析手段、中間表現からソースコードを生成するソ
ースコード生成手段、中間表現を格納する中間表現格納
手段、構文解析ルールを読み込み、規定されたプログラ
ミング言語で記述されたソースコードを解析し、中間表
現に変換するソースコードを自動生成する構文解析器生
成手段、コード生成ルールを読み込み、中間表現から、
ソースコードを出力するソースコード生成手段を自動的
に生成するコード生成器生成手段、構文解析ルールから
語彙/文法ルールを抽出する語彙/文法ルール抽出手段
から成る。
ード生成手段を任意のプログラミング言語向けに変更す
ることを可能とし、さらに、ソースコード解析手段とソ
ースコード生成手段の語彙/文法に関する一貫性の保証
を得る。 【構成】 プログラムを編集するプログラム編集手段、
編集したプログラムの動作を検証するプログラム検証手
段、ソースコードを解析し中間表現に変換するソースコ
ード解析手段、中間表現からソースコードを生成するソ
ースコード生成手段、中間表現を格納する中間表現格納
手段、構文解析ルールを読み込み、規定されたプログラ
ミング言語で記述されたソースコードを解析し、中間表
現に変換するソースコードを自動生成する構文解析器生
成手段、コード生成ルールを読み込み、中間表現から、
ソースコードを出力するソースコード生成手段を自動的
に生成するコード生成器生成手段、構文解析ルールから
語彙/文法ルールを抽出する語彙/文法ルール抽出手段
から成る。
Description
【0001】
【産業上の利用分野】この発明は、プログラムの作成及
び編集を対話的に行なうのを支援するプログラム作成支
援装置に関するものであり、特にプログラムの対象とす
るプログラミング言語の文法を容易に変更可能とするこ
とにより、多言語の対応を可能としたり、プログラミン
グ言語の改定に対応し易いことを特徴とする。
び編集を対話的に行なうのを支援するプログラム作成支
援装置に関するものであり、特にプログラムの対象とす
るプログラミング言語の文法を容易に変更可能とするこ
とにより、多言語の対応を可能としたり、プログラミン
グ言語の改定に対応し易いことを特徴とする。
【0002】
【従来の技術】図11は、例えば情報処理学会誌第31
巻第8号1030頁に示された従来のプログラム作成支
援装置を示す構成図である。図において、1はプログラ
ムを対話的に作成および編集するプログラム編集手段、
2は作成および編集したプログラムの動作を対話的に検
証するプログラム検証手段、3は作成および編集された
プログラムのソースコードを解析し中間表現に変換する
ソースコード解析手段、4は中間表現からプログラムの
ソースコードを生成するソースコード生成手段、5は中
間表現を格納する中間表現格納手段、6はこのプログラ
ム作成支援装置によって作成されたプログラムのソース
コードである。
巻第8号1030頁に示された従来のプログラム作成支
援装置を示す構成図である。図において、1はプログラ
ムを対話的に作成および編集するプログラム編集手段、
2は作成および編集したプログラムの動作を対話的に検
証するプログラム検証手段、3は作成および編集された
プログラムのソースコードを解析し中間表現に変換する
ソースコード解析手段、4は中間表現からプログラムの
ソースコードを生成するソースコード生成手段、5は中
間表現を格納する中間表現格納手段、6はこのプログラ
ム作成支援装置によって作成されたプログラムのソース
コードである。
【0003】本プログラム作成支援装置では、使用者、
即ちプログラム作成者は、プログラム編集手段1を用い
ることによってプログラムのソースコード6を直接テキ
ストエディタで編集するよりも効率的で理解しやすい形
式での編集手段が与えられ、また、作成したプログラム
の動作を検証するための手段としてプログラム検証手段
2が与えられる。使用者がプログラム編集手段1で作成
したプログラムは、一旦中間表現格納手段5に、ある中
間表現の形式で格納され、ソースコード生成手段4によ
りプログラムのソースコード6へ変換される。プログラ
ムのソースコード6を編集する際には、ソースコード解
析手段3により中間表現に変換し、中間表現格納手段5
に格納する。中間表現格納手段5に格納されたプログラ
ムの中間表現に対して、プログラム編集手段1及びプロ
グラム検証手段2を用いることにより編集を行い、再び
ソースコード生成手段4によってプログラムのソースコ
ード6を得る。
即ちプログラム作成者は、プログラム編集手段1を用い
ることによってプログラムのソースコード6を直接テキ
ストエディタで編集するよりも効率的で理解しやすい形
式での編集手段が与えられ、また、作成したプログラム
の動作を検証するための手段としてプログラム検証手段
2が与えられる。使用者がプログラム編集手段1で作成
したプログラムは、一旦中間表現格納手段5に、ある中
間表現の形式で格納され、ソースコード生成手段4によ
りプログラムのソースコード6へ変換される。プログラ
ムのソースコード6を編集する際には、ソースコード解
析手段3により中間表現に変換し、中間表現格納手段5
に格納する。中間表現格納手段5に格納されたプログラ
ムの中間表現に対して、プログラム編集手段1及びプロ
グラム検証手段2を用いることにより編集を行い、再び
ソースコード生成手段4によってプログラムのソースコ
ード6を得る。
【0004】このようなプログラム作成支援装置では、
通常ソースコード解析手段3及びソースコード生成手段
4は、ある特定のプログラミング言語に特化されている
ため、他のプログラミング言語に対して同様のプログラ
ム作成支援を行いたい場合や、または、プログラミング
言語の改良等が発生した場合などはソースコード解析手
段3及びソースコード生成手段4を他のプログラミング
言語または新しいバージョンのプログラミング言語用に
変更する必要がある。
通常ソースコード解析手段3及びソースコード生成手段
4は、ある特定のプログラミング言語に特化されている
ため、他のプログラミング言語に対して同様のプログラ
ム作成支援を行いたい場合や、または、プログラミング
言語の改良等が発生した場合などはソースコード解析手
段3及びソースコード生成手段4を他のプログラミング
言語または新しいバージョンのプログラミング言語用に
変更する必要がある。
【0005】このようにプログラム作成支援装置を他の
プログラミング言語または新しいバージョンのプログラ
ミング言語用に変更する作業を軽減するためには、例え
ば1970年産業図書株式会社発行の「コンパイラ・コ
ンパイラ」(井上謙蔵著)第7章で述べられているコン
パイラ・コンパイラ技術を適用することが考えられる。
図11は、コンパイラ・コンパイラ技術を適用してソー
スコード解析手段の変更を容易にする例である。
プログラミング言語または新しいバージョンのプログラ
ミング言語用に変更する作業を軽減するためには、例え
ば1970年産業図書株式会社発行の「コンパイラ・コ
ンパイラ」(井上謙蔵著)第7章で述べられているコン
パイラ・コンパイラ技術を適用することが考えられる。
図11は、コンパイラ・コンパイラ技術を適用してソー
スコード解析手段の変更を容易にする例である。
【0006】図12において、構文解析器生成手段8
は、語彙/文法ルールおよび解析のための意味定義から
なる構文解析ルール7を読み込み、構文解析ルール7に
規定されたプログラミング言語で記述されたプログラム
のソースコード6を解析し、中間表現に変換するソース
コードを自動生成する。これによって、ソースコード解
析手段3は、構文解析ルール7のみを変更するのみで、
他のプログラム言語または新しいバージョンのプログラ
ム言語用に変更することができる。しかし、一方で、ソ
ースコード生成手段の変更に関しては、構文解析器生成
手段8に対応するツールがないため、従来より人手によ
って作り替える必要があった。
は、語彙/文法ルールおよび解析のための意味定義から
なる構文解析ルール7を読み込み、構文解析ルール7に
規定されたプログラミング言語で記述されたプログラム
のソースコード6を解析し、中間表現に変換するソース
コードを自動生成する。これによって、ソースコード解
析手段3は、構文解析ルール7のみを変更するのみで、
他のプログラム言語または新しいバージョンのプログラ
ム言語用に変更することができる。しかし、一方で、ソ
ースコード生成手段の変更に関しては、構文解析器生成
手段8に対応するツールがないため、従来より人手によ
って作り替える必要があった。
【0007】
【発明が解決しようとする課題】従来のプログラム作成
支援装置は、以上のようにソースコード生成手段を容易
に作成する手段が存在しないため、プログラミング言語
の変更に対するソースコード生成手段の変更のための労
力が大きいという問題、および、ソースコード解析手段
3とソースコード生成手段4の語彙/文法に関する一貫
性の保証が困難であるという問題があった。
支援装置は、以上のようにソースコード生成手段を容易
に作成する手段が存在しないため、プログラミング言語
の変更に対するソースコード生成手段の変更のための労
力が大きいという問題、および、ソースコード解析手段
3とソースコード生成手段4の語彙/文法に関する一貫
性の保証が困難であるという問題があった。
【0008】この発明は上記のような問題点を解消する
ためになされたもので、ソースコード生成手段を作成す
るための手段を設けることによってコード生成ルールを
変更するだけでソースコード生成手段を任意のプログラ
ミング言語向けに変更することを可能とし、さらに、コ
ード生成ルールの中の語彙/文法ルールに構文解析ルー
ルの中の語彙/文法ルールをそのまま利用することによ
りソースコード解析手段とソースコード生成手段の語彙
/文法に関する一貫性の保証を得ることを目的とする。
ためになされたもので、ソースコード生成手段を作成す
るための手段を設けることによってコード生成ルールを
変更するだけでソースコード生成手段を任意のプログラ
ミング言語向けに変更することを可能とし、さらに、コ
ード生成ルールの中の語彙/文法ルールに構文解析ルー
ルの中の語彙/文法ルールをそのまま利用することによ
りソースコード解析手段とソースコード生成手段の語彙
/文法に関する一貫性の保証を得ることを目的とする。
【0009】
【課題を解決するための手段】請求項1に記載の発明に
係わるプログラム作成支援装置は、下記の要素を有する
ものである。 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段
係わるプログラム作成支援装置は、下記の要素を有する
ものである。 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段
【0010】請求項2に記載の発明に係わるプログラム
支援装置は、下記の要素を有するものである。 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段 (i)前記構文解析ルールからソースコード生成手段を
生成するためのコード生成ルールで利用可能な語彙/文
法ルールを抽出する語彙/文法ルール抽出手段
支援装置は、下記の要素を有するものである。 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段 (i)前記構文解析ルールからソースコード生成手段を
生成するためのコード生成ルールで利用可能な語彙/文
法ルールを抽出する語彙/文法ルール抽出手段
【0011】
【作用】請求項1に記載の発明に係わるプログラム作成
支援装置においては、語彙/文法ルールを内含したコー
ド生成ルールからソースコード生成手段を自動的に生成
するコード生成器生成手段を備えるようにしたことに特
徴がある。このことによりソースコードを記述するプロ
グラム言語の変更の際には、語彙/文法ルールのみを変
更することで容易に対応できる。
支援装置においては、語彙/文法ルールを内含したコー
ド生成ルールからソースコード生成手段を自動的に生成
するコード生成器生成手段を備えるようにしたことに特
徴がある。このことによりソースコードを記述するプロ
グラム言語の変更の際には、語彙/文法ルールのみを変
更することで容易に対応できる。
【0012】請求項2に記載の発明に係わるプログラム
作成支援装置においては、請求項1に記載の発明にソー
スコード解析手段を生成するための構文解析ルールから
ソースコード生成手段を生成するためのコード生成ルー
ルで利用可能な語彙/文法ルールを抽出する語彙/文法
ルール抽出手段を付加したことに特徴がある。このこと
によりソースコード解析手段とソースコード生成手段
が、共通の語彙/文法ルールを有することになり言語の
一貫性を得るのが容易になる。
作成支援装置においては、請求項1に記載の発明にソー
スコード解析手段を生成するための構文解析ルールから
ソースコード生成手段を生成するためのコード生成ルー
ルで利用可能な語彙/文法ルールを抽出する語彙/文法
ルール抽出手段を付加したことに特徴がある。このこと
によりソースコード解析手段とソースコード生成手段
が、共通の語彙/文法ルールを有することになり言語の
一貫性を得るのが容易になる。
【0013】
実施例1.以下、この発明の一実施例を図について説明
する。図1は本発明の一実施例によるプログラム作成支
援装置の構成図である。図において、従来例と同一のも
のは、同一の符号を付して説明を省略する。9はプログ
ラムのソースコード6を記述するプログラミング言語の
語彙/文法ルールおよび中間表現格納手段5に格納され
ている中間表現からプログラムソースコード7を生成す
るための意味定義からなるコード生成ルール、10はコ
ード生成ルール9を読み込み、中間表現格納手段に格納
されている中間表現から、コード生成ルールに規定され
ているプログラミング言語の語彙/文法に従ったプログ
ラムソースコードを出力するソースコード生成手段を自
動的に生成するコード生成器生成手段、11は構文解析
ルール7からソースコード生成手段を生成するためのコ
ード生成ルールで利用可能な語彙/文法ルールを抽出す
る語彙/文法ルール抽出手段である。
する。図1は本発明の一実施例によるプログラム作成支
援装置の構成図である。図において、従来例と同一のも
のは、同一の符号を付して説明を省略する。9はプログ
ラムのソースコード6を記述するプログラミング言語の
語彙/文法ルールおよび中間表現格納手段5に格納され
ている中間表現からプログラムソースコード7を生成す
るための意味定義からなるコード生成ルール、10はコ
ード生成ルール9を読み込み、中間表現格納手段に格納
されている中間表現から、コード生成ルールに規定され
ているプログラミング言語の語彙/文法に従ったプログ
ラムソースコードを出力するソースコード生成手段を自
動的に生成するコード生成器生成手段、11は構文解析
ルール7からソースコード生成手段を生成するためのコ
ード生成ルールで利用可能な語彙/文法ルールを抽出す
る語彙/文法ルール抽出手段である。
【0014】次に動作について説明する。まず、図1に
おける語彙/文法ルール抽出手段を用いて、構文解析ル
ール7からコード生成ルール9を作成する動作について
説明する。図2は例えばyacc/lexと呼ばれる構
文解析器生成手段を用いた場合の構文解析ルールを表わ
したものである。図において、201は解析のための語
彙ルール、202は終端記号列、203は終端記号列に
対応するアクション、204は解析のための構文ルー
ル、205はタイプ付きトークンの定義、206はタイ
プ無しトークンの定義、207は非終端記号のタイプ定
義、208は非終端記号のエントリ、209および21
1はそれぞれ非終端記号208の展開規則、210は展
開規則209に対応する解析のための意味定義、212
は展開規則211に対応する解析のための意味定義であ
る。
おける語彙/文法ルール抽出手段を用いて、構文解析ル
ール7からコード生成ルール9を作成する動作について
説明する。図2は例えばyacc/lexと呼ばれる構
文解析器生成手段を用いた場合の構文解析ルールを表わ
したものである。図において、201は解析のための語
彙ルール、202は終端記号列、203は終端記号列に
対応するアクション、204は解析のための構文ルー
ル、205はタイプ付きトークンの定義、206はタイ
プ無しトークンの定義、207は非終端記号のタイプ定
義、208は非終端記号のエントリ、209および21
1はそれぞれ非終端記号208の展開規則、210は展
開規則209に対応する解析のための意味定義、212
は展開規則211に対応する解析のための意味定義であ
る。
【0015】図3は、図1における語彙/文法ルール抽
出手段11によって図2の構文解析ルールから抽出され
た語彙/文法ルールの例である。図において、31はタ
イプ付きトークンの出力マクロ、32はタイプ無しトー
クンの出力マクロ、33は非終端記号のタイプ定義、3
4は文法ルールである。
出手段11によって図2の構文解析ルールから抽出され
た語彙/文法ルールの例である。図において、31はタ
イプ付きトークンの出力マクロ、32はタイプ無しトー
クンの出力マクロ、33は非終端記号のタイプ定義、3
4は文法ルールである。
【0016】図4は、図1の語彙/文法ルール抽出手段
11の動作を示すフローチャートである。図4におい
て、ステップ401では、図2に示した構文解析ルール
から文字列を読み込み、ステップ402では、読み込ん
だ文字列がタイプ付きトークンか否かを調べる。もしタ
イプ付きトークンであれば、タイプに合わせた出力マク
ロを作成しファイルに出力する。一方、もしタイプ付き
トークンでなければ、図2における終端記号列202お
よび終端記号列に対応するアクション203を参考にし
て終端記号列の出力マクロを作成し、ファイルに出力す
る。ここでタイプ付きトークンから作成された出力マク
ロは図3におけるタイプ付きトークンの出力マクロ31
であり、タイプ無しトークンから作成された出力マクロ
は図3におけるタイプなしトークンの出力マクロ32で
ある。
11の動作を示すフローチャートである。図4におい
て、ステップ401では、図2に示した構文解析ルール
から文字列を読み込み、ステップ402では、読み込ん
だ文字列がタイプ付きトークンか否かを調べる。もしタ
イプ付きトークンであれば、タイプに合わせた出力マク
ロを作成しファイルに出力する。一方、もしタイプ付き
トークンでなければ、図2における終端記号列202お
よび終端記号列に対応するアクション203を参考にし
て終端記号列の出力マクロを作成し、ファイルに出力す
る。ここでタイプ付きトークンから作成された出力マク
ロは図3におけるタイプ付きトークンの出力マクロ31
であり、タイプ無しトークンから作成された出力マクロ
は図3におけるタイプなしトークンの出力マクロ32で
ある。
【0017】また、図2においてはタイプ付きトークン
205およびタイプ無しトークン206の処理が終了す
ることになる。次に、図4において、ステップ405で
はトークン定義が終了か否かを調べ、もし終了でなけれ
ば再びステップ401に戻りステップ402、403、
404に示される処理を繰り返す。ステップ405にお
いて、もしトークン定義が終了であれば、ステップ40
6に進み図2に示す構文解析ルールから文字列を読み込
む。ステップ408において、読み込んだ文字列が非終
端記号のタイプ定義か否かを調べる。もし読み込んだ文
字列が非終端記号のタイプ定義であれば、ステップ40
7において非終端記号タイプ定義をそのままファイルに
出力し、再びステップ406にもどる。ステップ408
において、もし非終端記号のタイプ定義でなければ、ス
テップ409に進み、構文解析ルールから文字列を読み
込む。ここで出力された非終端記号のタイプ定義は、図
3における非終端記号のタイプ定義33であり、図2に
おいては非終端記号のタイプ定義207まで処理が終了
することになる。
205およびタイプ無しトークン206の処理が終了す
ることになる。次に、図4において、ステップ405で
はトークン定義が終了か否かを調べ、もし終了でなけれ
ば再びステップ401に戻りステップ402、403、
404に示される処理を繰り返す。ステップ405にお
いて、もしトークン定義が終了であれば、ステップ40
6に進み図2に示す構文解析ルールから文字列を読み込
む。ステップ408において、読み込んだ文字列が非終
端記号のタイプ定義か否かを調べる。もし読み込んだ文
字列が非終端記号のタイプ定義であれば、ステップ40
7において非終端記号タイプ定義をそのままファイルに
出力し、再びステップ406にもどる。ステップ408
において、もし非終端記号のタイプ定義でなければ、ス
テップ409に進み、構文解析ルールから文字列を読み
込む。ここで出力された非終端記号のタイプ定義は、図
3における非終端記号のタイプ定義33であり、図2に
おいては非終端記号のタイプ定義207まで処理が終了
することになる。
【0018】次に、図4において、ステップ409で読
み込んだ文字列に対して、ステップ411において構文
解析ルールが終了したか否かを調べる。もし、終了して
いなければ、図2の210および212に示すような意
味定義の部分を削除し、非終端記号208と展開規則2
09および211のみをファイルに出力する。これによ
り、図2に示す構文解析ルールは、図3に示す語彙/文
法ルールの形式に変換される。
み込んだ文字列に対して、ステップ411において構文
解析ルールが終了したか否かを調べる。もし、終了して
いなければ、図2の210および212に示すような意
味定義の部分を削除し、非終端記号208と展開規則2
09および211のみをファイルに出力する。これによ
り、図2に示す構文解析ルールは、図3に示す語彙/文
法ルールの形式に変換される。
【0019】図1の語彙/文法ルール抽出手段11を用
いて得られた語彙/文法ルールは、生成のための意味定
義を追記することにより図1のコード生成ルール9とな
る。図5はコード生成ルール9の記述の概要を示す図で
ある。図において、51は非終端記号のエントリ、52
は任意のCプログラム、53および55は非終端記号の
エントリ1に対応する展開規則、54は展開規則53に
対応する生成のための意味定義、56は展開規則55に
対応する生成のための意味定義である。
いて得られた語彙/文法ルールは、生成のための意味定
義を追記することにより図1のコード生成ルール9とな
る。図5はコード生成ルール9の記述の概要を示す図で
ある。図において、51は非終端記号のエントリ、52
は任意のCプログラム、53および55は非終端記号の
エントリ1に対応する展開規則、54は展開規則53に
対応する生成のための意味定義、56は展開規則55に
対応する生成のための意味定義である。
【0020】図5のコード生成ルール9の記述の概要に
ついて詳しく説明する。非終端記号51、展開規則53
および55は、先の語彙/文法ルール抽出手段によって
抽出された文法ルールと同一のものである。したがっ
て、図1のコード生成ルール9を作成するために、抽出
された語彙/文法ルールに追記する部分は、図5の任意
のCプログラム52と生成のための意味定義54および
56である。任意のCプログラム52には、ソースコー
ド清書のためのプログラムや中間表現からデータを抽出
するためのプログラムなどが、例えばC言語で記述され
る。
ついて詳しく説明する。非終端記号51、展開規則53
および55は、先の語彙/文法ルール抽出手段によって
抽出された文法ルールと同一のものである。したがっ
て、図1のコード生成ルール9を作成するために、抽出
された語彙/文法ルールに追記する部分は、図5の任意
のCプログラム52と生成のための意味定義54および
56である。任意のCプログラム52には、ソースコー
ド清書のためのプログラムや中間表現からデータを抽出
するためのプログラムなどが、例えばC言語で記述され
る。
【0021】次に、生成のための意味定義54および5
6には、条件文、引数定義、改行出力の3つの事項を記
述する。まず、条件文は、引数に条件式を採り「con
d]という関数名で表わされる関数である。条件文は、
非終端記号エントリ51の展開規則が複数存在する場合
の選択条件、または、展開規則の中に再び非終端記号エ
ントリが含まれるような再帰的な文法ルールに対する終
了条件が記述される。展開規則が複数存在する場合に
は、条件文の条件式を満たす展開規則が選ばれる、再帰
的な文法ルールの場合には、条件文の条件式が満たされ
る間のみ繰り返しルールが適用される。
6には、条件文、引数定義、改行出力の3つの事項を記
述する。まず、条件文は、引数に条件式を採り「con
d]という関数名で表わされる関数である。条件文は、
非終端記号エントリ51の展開規則が複数存在する場合
の選択条件、または、展開規則の中に再び非終端記号エ
ントリが含まれるような再帰的な文法ルールに対する終
了条件が記述される。展開規則が複数存在する場合に
は、条件文の条件式を満たす展開規則が選ばれる、再帰
的な文法ルールの場合には、条件文の条件式が満たされ
る間のみ繰り返しルールが適用される。
【0022】引数定義は、「$(数字)=式」という形
式で記述される代入文で、展開規則中の非終端記号への
値の代入を表わす。例えば、図5の生成のための意味定
義54によれば、対応する展開規則53における非終端
記号1には式1の値が代入され、非終端記号2には式2
の値が代入される。最後に、改行出力は、「end_o
f_line」で表わされる出力マクロであり、清書の
ために、対応する展開規則の適用後、改行コードを出力
する。図3に示す語彙/文法ルールに生成のための意味
定義を追記した例を図6に示す。
式で記述される代入文で、展開規則中の非終端記号への
値の代入を表わす。例えば、図5の生成のための意味定
義54によれば、対応する展開規則53における非終端
記号1には式1の値が代入され、非終端記号2には式2
の値が代入される。最後に、改行出力は、「end_o
f_line」で表わされる出力マクロであり、清書の
ために、対応する展開規則の適用後、改行コードを出力
する。図3に示す語彙/文法ルールに生成のための意味
定義を追記した例を図6に示す。
【0023】次に、図1におけるコード生成ルール9か
らコード生成器生成手段10を用いてソースコード生成
手段4を生成する動作について説明する。図7は図5に
示すコード生成ルールからコード生成器生成手段を用い
て生成されたソースコード生成手段のC言語プログラム
である。図において、71は関数エントリ、72は任意
のCプログラム、73および74はコード生成のための
プログラムである。また、図6に示すコード生成ルール
の例は、図8に示すC言語プログラムとして生成され
る。
らコード生成器生成手段10を用いてソースコード生成
手段4を生成する動作について説明する。図7は図5に
示すコード生成ルールからコード生成器生成手段を用い
て生成されたソースコード生成手段のC言語プログラム
である。図において、71は関数エントリ、72は任意
のCプログラム、73および74はコード生成のための
プログラムである。また、図6に示すコード生成ルール
の例は、図8に示すC言語プログラムとして生成され
る。
【0024】図9および図10は、図1におけるコード
生成器生成手段10の動作を示すフローチャートであ
る。図において、ステップ901では図5および図6に
示すコード生成ルール9から文字列を読み込み、ステッ
プ902において「%token」という文字列を「#
define」という文字列に変換してファイルに出力
する。ステップ903においてトークン定義が終了した
か否かを調べ、もし終了していなければステップ901
に戻り、終了していればステップ904に進む。ステッ
プ904では、コード生成ルールから文字列を読み込
み、ステップ905において非終端記号タイプ定義か否
かを調べる。
生成器生成手段10の動作を示すフローチャートであ
る。図において、ステップ901では図5および図6に
示すコード生成ルール9から文字列を読み込み、ステッ
プ902において「%token」という文字列を「#
define」という文字列に変換してファイルに出力
する。ステップ903においてトークン定義が終了した
か否かを調べ、もし終了していなければステップ901
に戻り、終了していればステップ904に進む。ステッ
プ904では、コード生成ルールから文字列を読み込
み、ステップ905において非終端記号タイプ定義か否
かを調べる。
【0025】もし非終端記号タイプ定義であれば、非終
端記号とそのタイプを内部テーブルに記憶し、ステップ
904に戻る。そうでなければ、ステップ907に進
む。次に、ステップ907では図5の非終端記号のエン
トリ51を読み込み、先にステップ906で記憶した非
終端記号とそのタイプの対応から非終端記号を関数名と
し、タイプを引数の型とするC言語の関数として出力す
る(図7関数エントリ71参照)。ステップ908で
は、コード生成ルールを続けて読み込み、図5の任意の
Cプログラム52があれば、そのまま出力する(図7任
意のCプログラム72参照)。
端記号とそのタイプを内部テーブルに記憶し、ステップ
904に戻る。そうでなければ、ステップ907に進
む。次に、ステップ907では図5の非終端記号のエン
トリ51を読み込み、先にステップ906で記憶した非
終端記号とそのタイプの対応から非終端記号を関数名と
し、タイプを引数の型とするC言語の関数として出力す
る(図7関数エントリ71参照)。ステップ908で
は、コード生成ルールを続けて読み込み、図5の任意の
Cプログラム52があれば、そのまま出力する(図7任
意のCプログラム72参照)。
【0026】図5の展開規則53および55について
は、ステップ909からステップ918において処理さ
れる。ステップ909では、コード生成ルール9を読み
込み、条件文(cond文)であれば、if文として出
力する。ステップ910では展開規則の文字列を読み込
み、ステップ911においてそれが非終端記号と判定さ
れたら、ステップ912において、図5の生成のための
意味定義54および56の引数定義にしたがって非終端
記号を関数名とする関数呼び出しとして出力する。
は、ステップ909からステップ918において処理さ
れる。ステップ909では、コード生成ルール9を読み
込み、条件文(cond文)であれば、if文として出
力する。ステップ910では展開規則の文字列を読み込
み、ステップ911においてそれが非終端記号と判定さ
れたら、ステップ912において、図5の生成のための
意味定義54および56の引数定義にしたがって非終端
記号を関数名とする関数呼び出しとして出力する。
【0027】ステップ913においてタイプ付き終端記
号と判定されたら、ステップ914において、先にステ
ップ902で終端記号名で定義されている出力マクロを
用いて引数定義に従った呼び出しを出力する。ステップ
915において終端記号採判定されたら、ステップ91
6において先にステップ902で定義されている終端記
号名の出力マクロの呼び出しを出力する。
号と判定されたら、ステップ914において、先にステ
ップ902で終端記号名で定義されている出力マクロを
用いて引数定義に従った呼び出しを出力する。ステップ
915において終端記号採判定されたら、ステップ91
6において先にステップ902で定義されている終端記
号名の出力マクロの呼び出しを出力する。
【0028】ステップ917では、他の展開規則がある
か否かを調べ、もしあれば、cond文をelse i
f文として出力し、ステップ910に戻る。もし、他の
展開規則がなければ、ステップ919において他のコー
ド生成ルールがあるか否かを調べ、もしあればステップ
907に戻り、なければ終了する。
か否かを調べ、もしあれば、cond文をelse i
f文として出力し、ステップ910に戻る。もし、他の
展開規則がなければ、ステップ919において他のコー
ド生成ルールがあるか否かを調べ、もしあればステップ
907に戻り、なければ終了する。
【0029】
【発明の効果】以上のように、この発明によればコード
生成器生成手段は、コード生成ルールを読み込み、中間
表現格納手段に格納されている中間表現から、コード生
成ルールに規定されているプログラミング言語の語彙/
文法に従ったプログラムソースコードを出力するソース
コード生成手段を自動的に生成するように構成したの
で、構文解析器生成手段と合わせて利用することによ
り、構文解析ルールおよびコード生成ルールの変更のみ
で、プログラミング言語の変更に対応したプログラム作
成支援装置の変更を容易に行えるという効果がある。
生成器生成手段は、コード生成ルールを読み込み、中間
表現格納手段に格納されている中間表現から、コード生
成ルールに規定されているプログラミング言語の語彙/
文法に従ったプログラムソースコードを出力するソース
コード生成手段を自動的に生成するように構成したの
で、構文解析器生成手段と合わせて利用することによ
り、構文解析ルールおよびコード生成ルールの変更のみ
で、プログラミング言語の変更に対応したプログラム作
成支援装置の変更を容易に行えるという効果がある。
【0030】また、語彙/文法ルール抽出手段は、構文
解析ルールからソースコード生成手段を生成するための
コード生成ルールで利用可能な語彙/文法ルールを抽出
するので、ソースコード解析手段とソースコード生成手
段の語彙/文法に関する一貫性の保証を得ることが可能
となる。
解析ルールからソースコード生成手段を生成するための
コード生成ルールで利用可能な語彙/文法ルールを抽出
するので、ソースコード解析手段とソースコード生成手
段の語彙/文法に関する一貫性の保証を得ることが可能
となる。
【図1】本発明の一実施例によるプログラム作成支援装
置の構成図である。
置の構成図である。
【図2】本発明の一実施例による構文解析ルールの例を
示す図である。
示す図である。
【図3】本発明の一実施例による語彙/文法ルールの例
を示す図である。
を示す図である。
【図4】本発明の一実施例による語彙/文法ルール抽出
手段のフローチャート図である。
手段のフローチャート図である。
【図5】本発明の一実施例によるコード生成ルールの概
要の説明図である。
要の説明図である。
【図6】本発明の一実施例によるコード生成ルールの例
を示す図である。
を示す図である。
【図7】本発明の一実施例によるソースコード生成手段
の概要の説明図である。
の概要の説明図である。
【図8】本発明の一実施例によるソースコード生成手段
の例を示す図である。
の例を示す図である。
【図9】本発明の一実施例によるコード生成器生成手段
のフローチャート図である。
のフローチャート図である。
【図10】図9の続きである。
【図11】従来のプログラム作成支援装置の構成図であ
る。
る。
【図12】従来のプログラム作成支援装置に改良を加え
た構成図である。
た構成図である。
1 プログラム編集手段 2 プログラム検証手段 3 ソースコード解析手段 4 ソースコード生成手段 5 中間表現格納手段 6 プログラムソースコード 7 構文解析ルール 8 構文解析器生成手段 9 コード生成ルール 10 コード生成器生成手段 11 語彙/文法ルール抽出手段
Claims (2)
- 【請求項1】 下記の要素を有するプログラム作成支援
装置 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段。 - 【請求項2】 下記の要素を有するプログラム作成支援
装置 (a)プログラムを対話的に作成及び編集するプログラ
ム編集手段 (b)前記プログラム編集手段により作成及び編集され
たプログラムの動作を対話的に検証するプログラム検証
手段 (c)作成および編集されたプログラムのソースコード
を解析し中間表現に変換するソースコード解析手段 (d)前記中間表現を格納する中間表現格納手段 (e)プログラミング言語の語彙/文法ルールを内含し
た構文解析ルール (f)前記構文解析ルールから自動的にソースコード解
析手段を生成する構文解析器生成手段 (g)プログラミング言語の語彙/文法ルールを内含し
たコード生成ルール (h)前記コード生成ルールからソースコード生成手段
を自動的に生成するコード生成器生成手段 (i)前記構文解析ルールからソースコード生成手段を
生成するためのコード生成ルールで利用可能な語彙/文
法ルールを抽出する語彙/文法ルール抽出手段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5138303A JP3003459B2 (ja) | 1993-06-10 | 1993-06-10 | プログラム作成支援装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5138303A JP3003459B2 (ja) | 1993-06-10 | 1993-06-10 | プログラム作成支援装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06348465A true JPH06348465A (ja) | 1994-12-22 |
JP3003459B2 JP3003459B2 (ja) | 2000-01-31 |
Family
ID=15218727
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5138303A Expired - Lifetime JP3003459B2 (ja) | 1993-06-10 | 1993-06-10 | プログラム作成支援装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3003459B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040086A (ja) * | 1996-07-24 | 1998-02-13 | Nippon Soft Kaihatsu Kk | プログラム変換方法 |
JP2017157180A (ja) * | 2016-03-01 | 2017-09-07 | 直太 稲本 | リバースエンジニアリング可能なソフトウェア自動生成装置 |
-
1993
- 1993-06-10 JP JP5138303A patent/JP3003459B2/ja not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1040086A (ja) * | 1996-07-24 | 1998-02-13 | Nippon Soft Kaihatsu Kk | プログラム変換方法 |
JP2017157180A (ja) * | 2016-03-01 | 2017-09-07 | 直太 稲本 | リバースエンジニアリング可能なソフトウェア自動生成装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3003459B2 (ja) | 2000-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2654001B2 (ja) | 機械翻訳方法 | |
JPS61282935A (ja) | プログラムにおける属性割当て検査方法及び装置 | |
JP3430007B2 (ja) | 機械翻訳装置及び記録媒体 | |
Angelov et al. | PGF: A portable run-time format for type-theoretical grammars | |
Van Wyk et al. | Waving A Language-Independent WEB. | |
JPH02112068A (ja) | テキスト簡略表示方式 | |
JP3003459B2 (ja) | プログラム作成支援装置 | |
JP3476881B2 (ja) | 仕様書の生成装置 | |
JPH03260766A (ja) | 括弧生成判定機能付翻訳装置 | |
JPH07160490A (ja) | コーディング支援装置 | |
JP3112623B2 (ja) | プログラム生産支援装置 | |
JPH06295309A (ja) | 機械翻訳装置及び言語解析装置並びにディジタル複写装置 | |
JPH07121379A (ja) | 複数言語混在コンパイラ | |
JPH02281337A (ja) | トランスレータジェネレータを拡張する方法 | |
JP2720643B2 (ja) | プログラムジェネレータ生成装置 | |
JP3141945B2 (ja) | コンパイル装置 | |
JP4092861B2 (ja) | 自然言語パターン作成装置及び方法 | |
JP3190377B2 (ja) | 関数名変換装置 | |
JP2727987B2 (ja) | データ型検査装置 | |
JPH0778166A (ja) | 翻訳方法及び機械翻訳装置 | |
Almufti | A SYSTEM FOR THE MANIPULATION | |
JPS63226730A (ja) | プログラム自動作成方法 | |
JPH03127264A (ja) | 括弧付き文の機械翻訳方式 | |
JPH05158765A (ja) | C言語プログラム差分情報取得方式 | |
JP2000057142A (ja) | 文章書換え方法及び装置及び文章書換えプログラムを格納した記憶媒体 |