JP2000242485A - プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 - Google Patents
プログラミング言語変換プログラム開発支援システム、方法及び記録媒体Info
- Publication number
- JP2000242485A JP2000242485A JP11045631A JP4563199A JP2000242485A JP 2000242485 A JP2000242485 A JP 2000242485A JP 11045631 A JP11045631 A JP 11045631A JP 4563199 A JP4563199 A JP 4563199A JP 2000242485 A JP2000242485 A JP 2000242485A
- Authority
- JP
- Japan
- Prior art keywords
- abstract syntax
- syntax tree
- program
- programming language
- stored
- 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
- 238000000034 method Methods 0.000 title claims description 90
- 238000006243 chemical reaction Methods 0.000 claims description 53
- 238000011161 development Methods 0.000 claims description 24
- 230000018109 developmental process Effects 0.000 description 81
- 238000012545 processing Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 27
- 230000006870 function Effects 0.000 description 8
- 238000007689 inspection Methods 0.000 description 5
- 230000008140 language development Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
(57)【要約】
【課題】 中間結果として抽象構文木を使用するプログ
ラミング言語変換プログラムを少ない工数で開発する。 【解決手段】 ユーザは、上位言語入力ファイル10の
解析結果として抽象構文木記憶部220に記憶される抽
象構文木の使用を記述した抽象構文木仕様定義ファイル
30を作成し、プログラミング言語変換プログラム開発
支援装置100に入力する。プログラミング言語変換プ
ログラム開発支援装置100は、抽象構文木仕様定義フ
ァイル30を解析し、この解析結果を元にして抽象構文
木ダンププログラムファイル40、抽象構文木アクセス
プログラムファイル50及び抽象構文木走査プログラム
ファイル60を作成する。抽象構文木走査プログラムフ
ァイル60に型検査用アクション61とコード生成用ア
クション64とをそれぞれ付加して、型検査プログラム
ファイル63とコード生成プログラムファイル66とを
作成する。
ラミング言語変換プログラムを少ない工数で開発する。 【解決手段】 ユーザは、上位言語入力ファイル10の
解析結果として抽象構文木記憶部220に記憶される抽
象構文木の使用を記述した抽象構文木仕様定義ファイル
30を作成し、プログラミング言語変換プログラム開発
支援装置100に入力する。プログラミング言語変換プ
ログラム開発支援装置100は、抽象構文木仕様定義フ
ァイル30を解析し、この解析結果を元にして抽象構文
木ダンププログラムファイル40、抽象構文木アクセス
プログラムファイル50及び抽象構文木走査プログラム
ファイル60を作成する。抽象構文木走査プログラムフ
ァイル60に型検査用アクション61とコード生成用ア
クション64とをそれぞれ付加して、型検査プログラム
ファイル63とコード生成プログラムファイル66とを
作成する。
Description
【0001】
【発明の属する技術分野】本発明は、プログラミング言
語変換プログラム開発支援システム、方法及びこの方法
を実行するプログラムを記録した記録媒体に関し、特に
中間結果として抽象構文木を使用するプログラミング言
語変換プログラムの開発を支援するものに関する。
語変換プログラム開発支援システム、方法及びこの方法
を実行するプログラムを記録した記録媒体に関し、特に
中間結果として抽象構文木を使用するプログラミング言
語変換プログラムの開発を支援するものに関する。
【0002】
【従来の技術】プログラミング言語(プログラム言語)
変換装置は、あるプログラミング言語(高級言語)で記
述されたプログラムを読み込み、これを他のプログラミ
ング言語(高級言語、アセンブラ言語または機械語)で
記述されたプログラムに変換して出力するものである。
変換装置は、あるプログラミング言語(高級言語)で記
述されたプログラムを読み込み、これを他のプログラミ
ング言語(高級言語、アセンブラ言語または機械語)で
記述されたプログラムに変換して出力するものである。
【0003】図23は、従来のプログラミング言語変換
装置の構成を示すブロック図である。図示するように、
このプログラミング言語変換装置500は、入力プログ
ラミングファイル310を読み込み、これとは異なる言
語で記述された出力プログラムファイル320を出力す
るもので、構文解析手段510と、抽象構文木記憶手段
520と、抽象構文木アクセス手段530と、型検査手
段540と、コード生成手段550とから構成されてい
る。ここで、抽象構文木アクセス手段530は、抽象構
文木記憶部520に記憶された抽象構文木を参照するた
めの方法を提供している。
装置の構成を示すブロック図である。図示するように、
このプログラミング言語変換装置500は、入力プログ
ラミングファイル310を読み込み、これとは異なる言
語で記述された出力プログラムファイル320を出力す
るもので、構文解析手段510と、抽象構文木記憶手段
520と、抽象構文木アクセス手段530と、型検査手
段540と、コード生成手段550とから構成されてい
る。ここで、抽象構文木アクセス手段530は、抽象構
文木記憶部520に記憶された抽象構文木を参照するた
めの方法を提供している。
【0004】上記のプログラミング言語変換装置500
では、まず、構文解析手段510が入力プログラミング
ファイル310を読み込んで構文解析し、その結果を抽
象構文木として抽象構文木記憶部520に記憶させる。
次に、型検査手段540は、抽象構文木アクセス手段5
30を参照しながら、抽象構文木記憶部520に記憶さ
れている抽象構文木が有する型を検査する。そして、検
査した型情報に従って、コード生成手段550は、抽象
構文木アクセス手段530を参照しながら、コード生成
して出力プログラムファイル320を出力する。
では、まず、構文解析手段510が入力プログラミング
ファイル310を読み込んで構文解析し、その結果を抽
象構文木として抽象構文木記憶部520に記憶させる。
次に、型検査手段540は、抽象構文木アクセス手段5
30を参照しながら、抽象構文木記憶部520に記憶さ
れている抽象構文木が有する型を検査する。そして、検
査した型情報に従って、コード生成手段550は、抽象
構文木アクセス手段530を参照しながら、コード生成
して出力プログラムファイル320を出力する。
【0005】なお、図23のプログラミング言語変換装
置500において、抽象構文木アクセス手段530、型
検査手段540及びコード生成手段550は、いずれも
プログラム制御により動作するデータ処理装置によって
構成され、それぞれ抽象構文木アクセスプログラム、型
検査プログラム及びコード生成プログラムを実行するこ
とによって実現される。
置500において、抽象構文木アクセス手段530、型
検査手段540及びコード生成手段550は、いずれも
プログラム制御により動作するデータ処理装置によって
構成され、それぞれ抽象構文木アクセスプログラム、型
検査プログラム及びコード生成プログラムを実行するこ
とによって実現される。
【0006】
【発明が解決しようとする課題】しかしながら、上記従
来例のプログラミング言語変換装置では、抽象構文木ア
クセス手段530は、抽象構文木を参照するためのすべ
ての関数の内容を実装していなければならないため、こ
れを実現するための抽象構文木アクセスプログラムの開
発するための工数が大きくなるという問題点があった。
来例のプログラミング言語変換装置では、抽象構文木ア
クセス手段530は、抽象構文木を参照するためのすべ
ての関数の内容を実装していなければならないため、こ
れを実現するための抽象構文木アクセスプログラムの開
発するための工数が大きくなるという問題点があった。
【0007】また、型検査手段540やコード生成手段
550は、抽象構文木をたどりながら型検査或いはコー
ド生成を行う必要がある。が、これらの手段を実現する
型検査プログラムやコード生成プログラムでは、抽象構
文木をたどる部分の記述が大きくなり、この部分を開発
することが困難であるという問題点があった。
550は、抽象構文木をたどりながら型検査或いはコー
ド生成を行う必要がある。が、これらの手段を実現する
型検査プログラムやコード生成プログラムでは、抽象構
文木をたどる部分の記述が大きくなり、この部分を開発
することが困難であるという問題点があった。
【0008】さらに、構文解析手段510による解析結
果である抽象構文木は、抽象構文木記憶部520に内部
的に一時記憶されるだけであり、構文解析手段510の
作成者が読むことができなかった。このため、構文解析
手段510によって抽象構文木が意図したとおりに作成
されているかどうかを、構文解析手段510の作成者が
確認できないという問題点があった。
果である抽象構文木は、抽象構文木記憶部520に内部
的に一時記憶されるだけであり、構文解析手段510の
作成者が読むことができなかった。このため、構文解析
手段510によって抽象構文木が意図したとおりに作成
されているかどうかを、構文解析手段510の作成者が
確認できないという問題点があった。
【0009】本発明の目的は、中間結果として抽象構文
木を使用するプログラミング言語変換プログラムを少な
い工数で開発することができるプログラミング言語変換
プログラム開発支援システム、方法及びこの方法を実行
するプログラムを記録した記録媒体を提供することにあ
る。
木を使用するプログラミング言語変換プログラムを少な
い工数で開発することができるプログラミング言語変換
プログラム開発支援システム、方法及びこの方法を実行
するプログラムを記録した記録媒体を提供することにあ
る。
【0010】本発明の他の目的は、プログラミング言語
の変換のための一工程として使用するための抽象構文木
アクセスプログラムを機能拡張したプログラムを開発す
ることができるプログラミング言語変換プログラム開発
支援システム、方法及びこの方法を実行するプログラム
を記録した記録媒体を提供することにある。
の変換のための一工程として使用するための抽象構文木
アクセスプログラムを機能拡張したプログラムを開発す
ることができるプログラミング言語変換プログラム開発
支援システム、方法及びこの方法を実行するプログラム
を記録した記録媒体を提供することにある。
【0011】本発明のさらに他の目的は、中間結果、す
なわち変換前のプログラムの解析結果である抽象構文木
の状態を外部で確認できるようにしたプログラミング言
語変換プログラム開発支援システム、方法及びこの方法
を実行するプログラムを記録した記録媒体を提供するこ
とにある。
なわち変換前のプログラムの解析結果である抽象構文木
の状態を外部で確認できるようにしたプログラミング言
語変換プログラム開発支援システム、方法及びこの方法
を実行するプログラムを記録した記録媒体を提供するこ
とにある。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明の第1の観点にかかるプログラミング言語変
換プログラム開発支援システムは、中間結果として記憶
される抽象構文木を使用して、第1のプログラミング言
語で記述されたプログラムを第2のプログラミング言語
で記述されたプログラムに変換するためのプログラミン
グ言語変換プログラムの開発を支援するためのシステム
であって、前記抽象構文木の仕様を入力し、該入力した
抽象構文木仕様を解析する抽象構文木仕様解析手段と、
前記抽象構文木仕様解析手段の解析結果を記憶する抽象
構文木仕様記憶手段と、前記抽象構文木仕様記憶手段に
記憶した前記抽象構文木仕様の解析結果に基づいて、前
記第2のプログラミング言語へ変換するときに前記記憶
された抽象構文木を参照するための方法を記述したプロ
グラムを生成する抽象構文木アクセスプログラム生成手
段と、前記抽象構文木仕様記憶手段に記憶した前記抽象
構文木仕様の解析結果に基づいて、前記第2のプログラ
ミング言語へ変換するときに前記記憶された抽象構文木
をたどるための方法を記述したプログラムを生成する抽
象構文木走査プログラム生成手段と、を備えることを特
徴とする。
め、本発明の第1の観点にかかるプログラミング言語変
換プログラム開発支援システムは、中間結果として記憶
される抽象構文木を使用して、第1のプログラミング言
語で記述されたプログラムを第2のプログラミング言語
で記述されたプログラムに変換するためのプログラミン
グ言語変換プログラムの開発を支援するためのシステム
であって、前記抽象構文木の仕様を入力し、該入力した
抽象構文木仕様を解析する抽象構文木仕様解析手段と、
前記抽象構文木仕様解析手段の解析結果を記憶する抽象
構文木仕様記憶手段と、前記抽象構文木仕様記憶手段に
記憶した前記抽象構文木仕様の解析結果に基づいて、前
記第2のプログラミング言語へ変換するときに前記記憶
された抽象構文木を参照するための方法を記述したプロ
グラムを生成する抽象構文木アクセスプログラム生成手
段と、前記抽象構文木仕様記憶手段に記憶した前記抽象
構文木仕様の解析結果に基づいて、前記第2のプログラ
ミング言語へ変換するときに前記記憶された抽象構文木
をたどるための方法を記述したプログラムを生成する抽
象構文木走査プログラム生成手段と、を備えることを特
徴とする。
【0013】上記プログラミング言語変換プログラム開
発支援システムは、前記抽象構文木走査プログラム生成
手段が生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成手段が生成したプログ
ラムを参照しながら前記中間結果として記憶された抽象
構文木がもつ型に関する情報を検査するためのプログラ
ムを生成する型検査プログラム生成手段と、前記抽象構
文木走査プログラム生成手段が生成したプログラムに、
該プログラムの実行により前記抽象構文木をたどったと
きに情報を収集して、該収集した情報に基づいて前記中
間結果として記憶された抽象構文木から前記第2のプロ
グラミング言語によるコード情報を生成する部分を記述
したコード生成アクションを付加することによって、前
記抽象構文木アクセスプログラム生成手段が生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木から前記第2のプログラミング言語によるコ
ード情報を生成するためのプログラムを生成するコード
生成プログラム生成手段とをさらに備えるものとするこ
とができる。
発支援システムは、前記抽象構文木走査プログラム生成
手段が生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成手段が生成したプログ
ラムを参照しながら前記中間結果として記憶された抽象
構文木がもつ型に関する情報を検査するためのプログラ
ムを生成する型検査プログラム生成手段と、前記抽象構
文木走査プログラム生成手段が生成したプログラムに、
該プログラムの実行により前記抽象構文木をたどったと
きに情報を収集して、該収集した情報に基づいて前記中
間結果として記憶された抽象構文木から前記第2のプロ
グラミング言語によるコード情報を生成する部分を記述
したコード生成アクションを付加することによって、前
記抽象構文木アクセスプログラム生成手段が生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木から前記第2のプログラミング言語によるコ
ード情報を生成するためのプログラムを生成するコード
生成プログラム生成手段とをさらに備えるものとするこ
とができる。
【0014】上記プログラミング言語変換プログラム開
発支援システムでは、プログラミング言語の変換時に中
間結果として使用される抽象構文木の仕様を入力すれ
ば、抽象構文木を参照するための方法を記述したプログ
ラムと抽象構文木をたどるための方法を記述したプログ
ラムとが生成される。さらに、この抽象構文木をたどる
ための方法を記述したプログラムに型検査アクションと
コード生成アクションとをそれぞれ付加することによっ
て、抽象構文木がもつ型に関する情報を検査するための
プログラムと抽象構文木から前記第2のプログラミング
言語によるコード情報を生成するためのプログラムとが
生成される。
発支援システムでは、プログラミング言語の変換時に中
間結果として使用される抽象構文木の仕様を入力すれ
ば、抽象構文木を参照するための方法を記述したプログ
ラムと抽象構文木をたどるための方法を記述したプログ
ラムとが生成される。さらに、この抽象構文木をたどる
ための方法を記述したプログラムに型検査アクションと
コード生成アクションとをそれぞれ付加することによっ
て、抽象構文木がもつ型に関する情報を検査するための
プログラムと抽象構文木から前記第2のプログラミング
言語によるコード情報を生成するためのプログラムとが
生成される。
【0015】ここで、第1のプログラミング言語で記述
されたプログラムに対して抽象構文木が作成されて記憶
されていれば、生成されたプログラムを実行することに
より、第1のプログラミング言語から第2のプログラミ
ング言語への変換を行うことができる。このように、上
記プログラミング言語変換プログラム開発支援システム
を仕様すれば、抽象構文木仕様と型検査アクションとコ
ード生成アクションとを作成するだけで、プログラミン
グ言語を変換するためのプログラムを開発できるので、
このようなプログラムの開発に要する工数を少なくする
ことができる。
されたプログラムに対して抽象構文木が作成されて記憶
されていれば、生成されたプログラムを実行することに
より、第1のプログラミング言語から第2のプログラミ
ング言語への変換を行うことができる。このように、上
記プログラミング言語変換プログラム開発支援システム
を仕様すれば、抽象構文木仕様と型検査アクションとコ
ード生成アクションとを作成するだけで、プログラミン
グ言語を変換するためのプログラムを開発できるので、
このようなプログラムの開発に要する工数を少なくする
ことができる。
【0016】上記プログラミング言語変換プログラム開
発支援システムは、また、前記抽象構文木アクセスプロ
グラム生成手段により生成されるプログラムに対してユ
ーザが定義したプログラムを入力し、該入力したユーザ
が定義したプログラムを解析して、その解析結果を前記
抽象構文木仕様記憶手段に記憶させるユーザ定義プログ
ラム検出手段をさらに備えるものとしてもよい。
発支援システムは、また、前記抽象構文木アクセスプロ
グラム生成手段により生成されるプログラムに対してユ
ーザが定義したプログラムを入力し、該入力したユーザ
が定義したプログラムを解析して、その解析結果を前記
抽象構文木仕様記憶手段に記憶させるユーザ定義プログ
ラム検出手段をさらに備えるものとしてもよい。
【0017】この場合、抽象構文木を参照するための方
法を記述したプログラムは、ユーザが定義したプログラ
ムにも従って作成されることとなるので、前記抽象構文
木アクセスプログラム生成手段により生成されるプログ
ラムに対してユーザが定義したプログラムを入力するこ
とによって、抽象構文木を参照するための方法を記述し
たプログラムの機能を拡張することが可能となる。
法を記述したプログラムは、ユーザが定義したプログラ
ムにも従って作成されることとなるので、前記抽象構文
木アクセスプログラム生成手段により生成されるプログ
ラムに対してユーザが定義したプログラムを入力するこ
とによって、抽象構文木を参照するための方法を記述し
たプログラムの機能を拡張することが可能となる。
【0018】上記プログラミング言語変換プログラム開
発支援システムは、また、前記抽象構文木仕様記憶手段
に記憶した前記抽象構文木仕様の解析結果に基づいて、
プログラミング言語の変換時に中間結果として記憶され
た抽象構文木の状態をダンプするための方法を記述した
プログラムを生成する抽象構文木ダンププログラム生成
手段をさらに備えるものとしてもよい。
発支援システムは、また、前記抽象構文木仕様記憶手段
に記憶した前記抽象構文木仕様の解析結果に基づいて、
プログラミング言語の変換時に中間結果として記憶され
た抽象構文木の状態をダンプするための方法を記述した
プログラムを生成する抽象構文木ダンププログラム生成
手段をさらに備えるものとしてもよい。
【0019】この場合、プログラミング言語の変換時に
中間結果として記憶される抽象構文木の状態を、外部か
ら確認できるようになる。これにより、プログラミング
言語の変換時に、第1のプログラミング言語で記述され
たプログラムに対して期待した通りの抽象構文木が作成
されているかどうかを、確認することができるようにな
る。
中間結果として記憶される抽象構文木の状態を、外部か
ら確認できるようになる。これにより、プログラミング
言語の変換時に、第1のプログラミング言語で記述され
たプログラムに対して期待した通りの抽象構文木が作成
されているかどうかを、確認することができるようにな
る。
【0020】なお、上記プログラミング言語変換プログ
ラム開発支援システムは、前記抽象構文木仕様記憶手段
に記憶した前記抽象構文木仕様の解析結果に矛盾がない
かどうかを検査する意味検査手段をさらに備えていても
よい。
ラム開発支援システムは、前記抽象構文木仕様記憶手段
に記憶した前記抽象構文木仕様の解析結果に矛盾がない
かどうかを検査する意味検査手段をさらに備えていても
よい。
【0021】上記プログラミング言語変換プログラム開
発支援システムにおいて、前記抽象構文木アクセスプロ
グラム生成手段により生成されるプログラムと前記抽象
構文木走査プログラム生成手段により生成されるプログ
ラムとは、例えば、オブジェクト指向プログラミング言
語により記述されたものとすることができる。この場
合、前記抽象構文木仕様解析手段は、前記抽象構文木仕
様に含まれるクラス名と、該クラス名に対応するクラス
タイプと、該クラス名に対応するクラスに関する情報と
を認識して抽出するものとすることができ、前記抽象構
文木仕様記憶手段は、前記抽象構文木仕様解析手段によ
って抽出されたクラス名と、クラスタイプと、クラスに
関する情報とを、それぞれ表の各行に対応付けて記憶す
るものとすることができる。
発支援システムにおいて、前記抽象構文木アクセスプロ
グラム生成手段により生成されるプログラムと前記抽象
構文木走査プログラム生成手段により生成されるプログ
ラムとは、例えば、オブジェクト指向プログラミング言
語により記述されたものとすることができる。この場
合、前記抽象構文木仕様解析手段は、前記抽象構文木仕
様に含まれるクラス名と、該クラス名に対応するクラス
タイプと、該クラス名に対応するクラスに関する情報と
を認識して抽出するものとすることができ、前記抽象構
文木仕様記憶手段は、前記抽象構文木仕様解析手段によ
って抽出されたクラス名と、クラスタイプと、クラスに
関する情報とを、それぞれ表の各行に対応付けて記憶す
るものとすることができる。
【0022】ここで、前記抽象構文木アクセスプログラ
ム生成手段は、前記抽象構文木仕様記憶手段の表の各行
のそれぞれに対して、プログラムファイルを生成するも
のとすることができる。
ム生成手段は、前記抽象構文木仕様記憶手段の表の各行
のそれぞれに対して、プログラムファイルを生成するも
のとすることができる。
【0023】上記目的を達成するため、本発明の第2の
観点にかかるプログラミング言語変換プログラム開発支
援システムは、中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するためのシステムであって、前記抽象
構文木の仕様を入力し、該入力した抽象構文木仕様を解
析する抽象構文木仕様解析手段と、前記抽象構文木仕様
解析手段の解析結果を記憶する抽象構文木仕様記憶手段
と、前記抽象構文木仕様記憶手段に記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
参照するための方法を記述したプログラムを生成する抽
象構文木アクセスプログラム生成手段とを備えることを
特徴とする。
観点にかかるプログラミング言語変換プログラム開発支
援システムは、中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するためのシステムであって、前記抽象
構文木の仕様を入力し、該入力した抽象構文木仕様を解
析する抽象構文木仕様解析手段と、前記抽象構文木仕様
解析手段の解析結果を記憶する抽象構文木仕様記憶手段
と、前記抽象構文木仕様記憶手段に記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
参照するための方法を記述したプログラムを生成する抽
象構文木アクセスプログラム生成手段とを備えることを
特徴とする。
【0024】上記目的を達成するため、本発明の第3の
観点にかかるプログラミング言語変換プログラム開発支
援システムは、中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するためのシステムであって、前記抽象
構文木の仕様を入力し、該入力した抽象構文木仕様を解
析する抽象構文木仕様解析手段と、前記抽象構文木仕様
解析手段の解析結果を記憶する抽象構文木仕様記憶手段
と、前記抽象構文木仕様記憶手段に記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
たどるための方法を記述したプログラムを生成する抽象
構文木走査プログラム生成手段とを備えることを特徴と
する。
観点にかかるプログラミング言語変換プログラム開発支
援システムは、中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するためのシステムであって、前記抽象
構文木の仕様を入力し、該入力した抽象構文木仕様を解
析する抽象構文木仕様解析手段と、前記抽象構文木仕様
解析手段の解析結果を記憶する抽象構文木仕様記憶手段
と、前記抽象構文木仕様記憶手段に記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
たどるための方法を記述したプログラムを生成する抽象
構文木走査プログラム生成手段とを備えることを特徴と
する。
【0025】上記第3の観点にかかるプログラミング言
語変換プログラム開発支援システムは、前記抽象構文木
走査プログラム生成手段が生成したプログラムに、該プ
ログラムの実行により前記抽象構文木をたどったときに
情報を収集して、該収集した情報に基づいて前記中間結
果として記憶された抽象構文木がもつ型に関する情報を
検査する部分を記述した型検査アクションを付加するこ
とによって、前記抽象構文木アクセスプログラム生成手
段が生成したプログラムを参照しながら前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
するためのプログラムを生成する型検査プログラム生成
手段をさらに備えるものとすることができる。
語変換プログラム開発支援システムは、前記抽象構文木
走査プログラム生成手段が生成したプログラムに、該プ
ログラムの実行により前記抽象構文木をたどったときに
情報を収集して、該収集した情報に基づいて前記中間結
果として記憶された抽象構文木がもつ型に関する情報を
検査する部分を記述した型検査アクションを付加するこ
とによって、前記抽象構文木アクセスプログラム生成手
段が生成したプログラムを参照しながら前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
するためのプログラムを生成する型検査プログラム生成
手段をさらに備えるものとすることができる。
【0026】上記第3の観点にかかるプログラミング言
語変換プログラム開発支援システムは、また、前記抽象
構文木走査プログラム生成手段が生成したプログラム
に、該プログラムの実行により前記抽象構文木をたどっ
たときに情報を収集して、該収集した情報に基づいて前
記中間結果として記憶された抽象構文木から前記第2の
プログラミング言語によるコード情報を生成する部分を
記述したコード生成アクションを付加することによっ
て、前記抽象構文木アクセスプログラム生成手段が生成
したプログラムを参照しながら前記中間結果として記憶
された抽象構文木から前記第2のプログラミング言語に
よるコード情報を生成するためのプログラムを生成する
コード生成プログラム生成手段とをさらに備えるものと
することもできる。
語変換プログラム開発支援システムは、また、前記抽象
構文木走査プログラム生成手段が生成したプログラム
に、該プログラムの実行により前記抽象構文木をたどっ
たときに情報を収集して、該収集した情報に基づいて前
記中間結果として記憶された抽象構文木から前記第2の
プログラミング言語によるコード情報を生成する部分を
記述したコード生成アクションを付加することによっ
て、前記抽象構文木アクセスプログラム生成手段が生成
したプログラムを参照しながら前記中間結果として記憶
された抽象構文木から前記第2のプログラミング言語に
よるコード情報を生成するためのプログラムを生成する
コード生成プログラム生成手段とをさらに備えるものと
することもできる。
【0027】上記第2、第3の観点にかかるプログラミ
ング言語変換プログラム開発支援システムでは、プログ
ラミング言語を変換するために必要となるプログラムの
一部が自動生成されることとなる。このような場合であ
っても、プログラミング言語を変換するためのプログラ
ムの開発に要する工数を、従来よりも少なくすることが
可能となる。
ング言語変換プログラム開発支援システムでは、プログ
ラミング言語を変換するために必要となるプログラムの
一部が自動生成されることとなる。このような場合であ
っても、プログラミング言語を変換するためのプログラ
ムの開発に要する工数を、従来よりも少なくすることが
可能となる。
【0028】上記目的を達成するため、本発明の第4の
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を入力し、該入力した抽象構文木仕様を解析する抽
象構文木仕様解析ステップと、前記抽象構文木仕様解析
ステップでの解析結果を記憶する抽象構文木仕様記憶ス
テップと、前記抽象構文木仕様記憶ステップで記憶した
前記抽象構文木仕様の解析結果に基づいて、前記第2の
プログラミング言語へ変換するときに前記記憶された抽
象構文木を参照するための方法を記述したプログラムを
生成する抽象構文木アクセスプログラム生成ステップ
と、前記抽象構文木仕様記憶ステップで記憶した前記抽
象構文木仕様の解析結果に基づいて、前記第2のプログ
ラミング言語へ変換するときに前記記憶された抽象構文
木をたどるための方法を記述したプログラムを生成する
抽象構文木走査プログラム生成ステップとを含むことを
特徴とする。
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を入力し、該入力した抽象構文木仕様を解析する抽
象構文木仕様解析ステップと、前記抽象構文木仕様解析
ステップでの解析結果を記憶する抽象構文木仕様記憶ス
テップと、前記抽象構文木仕様記憶ステップで記憶した
前記抽象構文木仕様の解析結果に基づいて、前記第2の
プログラミング言語へ変換するときに前記記憶された抽
象構文木を参照するための方法を記述したプログラムを
生成する抽象構文木アクセスプログラム生成ステップ
と、前記抽象構文木仕様記憶ステップで記憶した前記抽
象構文木仕様の解析結果に基づいて、前記第2のプログ
ラミング言語へ変換するときに前記記憶された抽象構文
木をたどるための方法を記述したプログラムを生成する
抽象構文木走査プログラム生成ステップとを含むことを
特徴とする。
【0029】上記プログラミング言語変換プログラム開
発支援方法は、前記抽象構文木走査プログラム生成ステ
ップで生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成ステップで生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査するためのプロ
グラムを生成する型検査プログラム生成ステップと、前
記抽象構文木走査プログラム生成ステップで生成したプ
ログラムに、該プログラムの実行により前記抽象構文木
をたどったときに情報を収集して、該収集した情報に基
づいて前記中間結果として記憶された抽象構文木から前
記第2のプログラミング言語によるコード情報を生成す
る部分を記述したコード生成アクションを付加すること
によって、前記抽象構文木アクセスプログラム生成ステ
ップで生成したプログラムを参照しながら前記中間結果
として記憶された抽象構文木から前記第2のプログラミ
ング言語によるコード情報を生成するためのプログラム
を生成するコード生成プログラム生成ステップとをさら
に含んでいてもよい。
発支援方法は、前記抽象構文木走査プログラム生成ステ
ップで生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成ステップで生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査するためのプロ
グラムを生成する型検査プログラム生成ステップと、前
記抽象構文木走査プログラム生成ステップで生成したプ
ログラムに、該プログラムの実行により前記抽象構文木
をたどったときに情報を収集して、該収集した情報に基
づいて前記中間結果として記憶された抽象構文木から前
記第2のプログラミング言語によるコード情報を生成す
る部分を記述したコード生成アクションを付加すること
によって、前記抽象構文木アクセスプログラム生成ステ
ップで生成したプログラムを参照しながら前記中間結果
として記憶された抽象構文木から前記第2のプログラミ
ング言語によるコード情報を生成するためのプログラム
を生成するコード生成プログラム生成ステップとをさら
に含んでいてもよい。
【0030】上記プログラミング言語変換プログラム開
発支援方法は、また、前記抽象構文木アクセスプログラ
ム生成ステップで生成されるプログラムに対してユーザ
が定義したプログラムを入力し、該入力したユーザが定
義したプログラムを解析して、その解析結果を前記抽象
構文木仕様記憶ステップで記憶した抽象構文木仕様と対
応させて記憶させるユーザ定義プログラム検出ステップ
をさらに含んでいてもよい。
発支援方法は、また、前記抽象構文木アクセスプログラ
ム生成ステップで生成されるプログラムに対してユーザ
が定義したプログラムを入力し、該入力したユーザが定
義したプログラムを解析して、その解析結果を前記抽象
構文木仕様記憶ステップで記憶した抽象構文木仕様と対
応させて記憶させるユーザ定義プログラム検出ステップ
をさらに含んでいてもよい。
【0031】上記プログラミング言語変換プログラム開
発支援方法は、また、前記抽象構文木仕様記憶ステップ
で記憶した前記抽象構文木仕様の解析結果に基づいて、
プログラミング言語の変換時に中間結果として記憶され
た抽象構文木の状態をダンプするための方法を記述した
プログラムを生成する抽象構文木ダンププログラム生成
ステップをさらに含んでいてもよい。
発支援方法は、また、前記抽象構文木仕様記憶ステップ
で記憶した前記抽象構文木仕様の解析結果に基づいて、
プログラミング言語の変換時に中間結果として記憶され
た抽象構文木の状態をダンプするための方法を記述した
プログラムを生成する抽象構文木ダンププログラム生成
ステップをさらに含んでいてもよい。
【0032】上記目的を達成するため、本発明の第5の
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を定義した抽象構文木仕様定義ファイルを作成する
ステップと、前記抽象構文木仕様定義ファイルを読み込
んで、これを解析するステップと、前記抽象構文木仕様
定義ファイルの解析結果を記憶するステップと、記憶し
た前記抽象構文木仕様定義ファイルの解析結果に基づい
て、プログラミング言語の変換時に前記抽象構文木を参
照するための方法を記述した抽象構文木アクセスプログ
ラムを生成するステップと、記憶した前記抽象構文木仕
様定義ファイルの解析結果に基づいて、プログラミング
言語の変換時に前記抽象構文木をたどるための方法を記
述した抽象構文木走査プログラムを生成するステップ
と、記憶した前記抽象構文木仕様定義ファイルの解析結
果に基づいて、プログラミング言語の変換時に中間結果
として記憶された抽象構文木の状態をダンプするための
抽象構文木ダンププログラムを生成するステップと、生
成された抽象構文木ダンププログラムの実行により、前
記中間結果として記憶された抽象構文木の状態をダンプ
して、前記抽象構文木が適切に作成されているかどうか
を確認するステップと、生成された前記抽象構文木走査
プログラムに、前記抽象構文木走査プログラムの実行に
より前記抽象構文木をたどったときに情報を収集して、
該収集した情報に基づいて前記中間結果として記憶され
た抽象構文木がもつ型に関する情報を検査する部分を記
述した型検査アクションを付加することによって、生成
された前記抽象構文木アクセスプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木がもつ型に
関する情報を検査するための型検査プログラムを生成す
るステップと、生成された前記抽象構文木走査プログラ
ムに、前記抽象構文木走査プログラムの実行により前記
抽象構文木をたどったときに情報を収集して、該収集し
た情報に基づいて前記中間結果として記憶された抽象構
文木から前記第2のプログラミング言語によるコード情
報を生成する部分を記述したコード生成アクションを付
加することによって、生成された前記抽象構文木アクセ
スプログラムを参照しながら前記中間結果として記憶さ
れた抽象構文木から前記第2のプログラミング言語によ
るコード情報を生成するためのコード生成プログラムを
生成するステップとを含むことを特徴とする。
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を定義した抽象構文木仕様定義ファイルを作成する
ステップと、前記抽象構文木仕様定義ファイルを読み込
んで、これを解析するステップと、前記抽象構文木仕様
定義ファイルの解析結果を記憶するステップと、記憶し
た前記抽象構文木仕様定義ファイルの解析結果に基づい
て、プログラミング言語の変換時に前記抽象構文木を参
照するための方法を記述した抽象構文木アクセスプログ
ラムを生成するステップと、記憶した前記抽象構文木仕
様定義ファイルの解析結果に基づいて、プログラミング
言語の変換時に前記抽象構文木をたどるための方法を記
述した抽象構文木走査プログラムを生成するステップ
と、記憶した前記抽象構文木仕様定義ファイルの解析結
果に基づいて、プログラミング言語の変換時に中間結果
として記憶された抽象構文木の状態をダンプするための
抽象構文木ダンププログラムを生成するステップと、生
成された抽象構文木ダンププログラムの実行により、前
記中間結果として記憶された抽象構文木の状態をダンプ
して、前記抽象構文木が適切に作成されているかどうか
を確認するステップと、生成された前記抽象構文木走査
プログラムに、前記抽象構文木走査プログラムの実行に
より前記抽象構文木をたどったときに情報を収集して、
該収集した情報に基づいて前記中間結果として記憶され
た抽象構文木がもつ型に関する情報を検査する部分を記
述した型検査アクションを付加することによって、生成
された前記抽象構文木アクセスプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木がもつ型に
関する情報を検査するための型検査プログラムを生成す
るステップと、生成された前記抽象構文木走査プログラ
ムに、前記抽象構文木走査プログラムの実行により前記
抽象構文木をたどったときに情報を収集して、該収集し
た情報に基づいて前記中間結果として記憶された抽象構
文木から前記第2のプログラミング言語によるコード情
報を生成する部分を記述したコード生成アクションを付
加することによって、生成された前記抽象構文木アクセ
スプログラムを参照しながら前記中間結果として記憶さ
れた抽象構文木から前記第2のプログラミング言語によ
るコード情報を生成するためのコード生成プログラムを
生成するステップとを含むことを特徴とする。
【0033】上記目的を達成するため、本発明の第6の
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を定義した抽象構文木仕様定義ファイルを作成する
ステップと、前記第1のプログラミング言語に対してユ
ーザが定義したプログラムの文法を記述したユーザ付加
プログラムファイルを作成するステップと、前記抽象構
文木仕様定義ファイルを読み込んで、これを解析するス
テップと、前記抽象構文木仕様定義ファイルの解析結果
を記憶するステップと、前記ユーザ付加プログラムファ
イルを参照しながら、記憶した前記抽象構文木仕様定義
ファイルの解析結果に基づいて、プログラミング言語の
変換時に前記抽象構文木を参照するための方法を記述し
た抽象構文木アクセスプログラムを生成するステップ
と、記憶した前記抽象構文木仕様定義ファイルの解析結
果に基づいて、プログラミング言語の変換時に前記抽象
構文木をたどるための方法を記述した抽象構文木走査プ
ログラムを生成するステップと、記憶した前記抽象構文
木仕様定義ファイルの解析結果に基づいて、プログラミ
ング言語の変換時に中間結果として記憶された抽象構文
木の状態をダンプするための抽象構文木ダンププログラ
ムを生成するステップと、生成された抽象構文木ダンプ
プログラムの実行により、前記中間結果として記憶され
た抽象構文木の状態をダンプして、前記抽象構文木が適
切に作成されているかどうかを確認するステップと、生
成された前記抽象構文木走査プログラムに、前記抽象構
文木走査プログラムの実行により前記抽象構文木をたど
ったときに情報を収集して、該収集した情報に基づいて
前記中間結果として記憶された抽象構文木がもつ型に関
する情報を検査する部分を記述した型検査アクションを
付加することによって、生成された前記抽象構文木アク
セスプログラムを参照しながら前記中間結果として記憶
された抽象構文木がもつ型に関する情報を検査するため
の型検査プログラムを生成するステップと、生成された
前記抽象構文木走査プログラムに、前記抽象構文木走査
プログラムの実行により前記抽象構文木をたどったとき
に情報を収集して、該収集した情報に基づいて前記中間
結果として記憶された抽象構文木から前記第2のプログ
ラミング言語によるコード情報を生成する部分を記述し
たコード生成アクションを付加することによって、生成
された前記抽象構文木アクセスプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成するた
めのコード生成プログラムを生成するステップとを含む
ことを特徴とする。
観点にかかるプログラミング言語変換プログラム開発支
援方法は、中間結果として記憶される抽象構文木を使用
して、第1のプログラミング言語で記述されたプログラ
ムを第2のプログラミング言語で記述されたプログラム
に変換するためのプログラミング言語変換プログラムの
開発を支援するための方法であって、前記抽象構文木の
仕様を定義した抽象構文木仕様定義ファイルを作成する
ステップと、前記第1のプログラミング言語に対してユ
ーザが定義したプログラムの文法を記述したユーザ付加
プログラムファイルを作成するステップと、前記抽象構
文木仕様定義ファイルを読み込んで、これを解析するス
テップと、前記抽象構文木仕様定義ファイルの解析結果
を記憶するステップと、前記ユーザ付加プログラムファ
イルを参照しながら、記憶した前記抽象構文木仕様定義
ファイルの解析結果に基づいて、プログラミング言語の
変換時に前記抽象構文木を参照するための方法を記述し
た抽象構文木アクセスプログラムを生成するステップ
と、記憶した前記抽象構文木仕様定義ファイルの解析結
果に基づいて、プログラミング言語の変換時に前記抽象
構文木をたどるための方法を記述した抽象構文木走査プ
ログラムを生成するステップと、記憶した前記抽象構文
木仕様定義ファイルの解析結果に基づいて、プログラミ
ング言語の変換時に中間結果として記憶された抽象構文
木の状態をダンプするための抽象構文木ダンププログラ
ムを生成するステップと、生成された抽象構文木ダンプ
プログラムの実行により、前記中間結果として記憶され
た抽象構文木の状態をダンプして、前記抽象構文木が適
切に作成されているかどうかを確認するステップと、生
成された前記抽象構文木走査プログラムに、前記抽象構
文木走査プログラムの実行により前記抽象構文木をたど
ったときに情報を収集して、該収集した情報に基づいて
前記中間結果として記憶された抽象構文木がもつ型に関
する情報を検査する部分を記述した型検査アクションを
付加することによって、生成された前記抽象構文木アク
セスプログラムを参照しながら前記中間結果として記憶
された抽象構文木がもつ型に関する情報を検査するため
の型検査プログラムを生成するステップと、生成された
前記抽象構文木走査プログラムに、前記抽象構文木走査
プログラムの実行により前記抽象構文木をたどったとき
に情報を収集して、該収集した情報に基づいて前記中間
結果として記憶された抽象構文木から前記第2のプログ
ラミング言語によるコード情報を生成する部分を記述し
たコード生成アクションを付加することによって、生成
された前記抽象構文木アクセスプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成するた
めのコード生成プログラムを生成するステップとを含む
ことを特徴とする。
【0034】上記目的を達成するため、本発明の第7の
観点にかかるコンピュータ読み取り可能な記録媒体は、
中間結果として記憶される抽象構文木を使用して、第1
のプログラミング言語で記述されたプログラムを第2の
プログラミング言語で記述されたプログラムに変換する
ためのプログラミング言語変換プログラムの開発を支援
するためのプログラムを記録した記録媒体であって、前
記抽象構文木の仕様を入力し、該入力した抽象構文木仕
様を解析する抽象構文木仕様解析ステップと、前記抽象
構文木仕様解析ステップでの解析結果を記憶する抽象構
文木仕様記憶ステップと、前記抽象構文木仕様記憶ステ
ップで記憶した前記抽象構文木仕様の解析結果に基づい
て、前記第2のプログラミング言語へ変換するときに前
記記憶された抽象構文木を参照するための方法を記述し
たプログラムを生成する抽象構文木アクセスプログラム
生成ステップと、前記抽象構文木仕様記憶ステップで記
憶した前記抽象構文木仕様の解析結果に基づいて、前記
第2のプログラミング言語へ変換するときに前記記憶さ
れた抽象構文木をたどるための方法を記述したプログラ
ムを生成する抽象構文木走査プログラム生成ステップと
を実行するためのプログラムを記録することを特徴とす
る。
観点にかかるコンピュータ読み取り可能な記録媒体は、
中間結果として記憶される抽象構文木を使用して、第1
のプログラミング言語で記述されたプログラムを第2の
プログラミング言語で記述されたプログラムに変換する
ためのプログラミング言語変換プログラムの開発を支援
するためのプログラムを記録した記録媒体であって、前
記抽象構文木の仕様を入力し、該入力した抽象構文木仕
様を解析する抽象構文木仕様解析ステップと、前記抽象
構文木仕様解析ステップでの解析結果を記憶する抽象構
文木仕様記憶ステップと、前記抽象構文木仕様記憶ステ
ップで記憶した前記抽象構文木仕様の解析結果に基づい
て、前記第2のプログラミング言語へ変換するときに前
記記憶された抽象構文木を参照するための方法を記述し
たプログラムを生成する抽象構文木アクセスプログラム
生成ステップと、前記抽象構文木仕様記憶ステップで記
憶した前記抽象構文木仕様の解析結果に基づいて、前記
第2のプログラミング言語へ変換するときに前記記憶さ
れた抽象構文木をたどるための方法を記述したプログラ
ムを生成する抽象構文木走査プログラム生成ステップと
を実行するためのプログラムを記録することを特徴とす
る。
【0035】上記記録媒体は、前記抽象構文木走査プロ
グラム生成ステップで生成したプログラムに、該プログ
ラムの実行により前記抽象構文木をたどったときに情報
を収集して、該収集した情報に基づいて前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
する部分を記述した型検査アクションを付加することに
よって、前記抽象構文木アクセスプログラム生成ステッ
プで生成したプログラムを参照しながら前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
するためのプログラムを生成する型検査プログラム生成
ステップと、前記抽象構文木走査プログラム生成ステッ
プで生成したプログラムに、該プログラムの実行により
前記抽象構文木をたどったときに情報を収集して、該収
集した情報に基づいて前記中間結果として記憶された抽
象構文木から前記第2のプログラミング言語によるコー
ド情報を生成する部分を記述したコード生成アクション
を付加することによって、前記抽象構文木アクセスプロ
グラム生成ステップで生成したプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成するた
めのプログラムを生成するコード生成プログラム生成ス
テップとを実行するためのプログラムをさらに記録する
ものとしてもよい。
グラム生成ステップで生成したプログラムに、該プログ
ラムの実行により前記抽象構文木をたどったときに情報
を収集して、該収集した情報に基づいて前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
する部分を記述した型検査アクションを付加することに
よって、前記抽象構文木アクセスプログラム生成ステッ
プで生成したプログラムを参照しながら前記中間結果と
して記憶された抽象構文木がもつ型に関する情報を検査
するためのプログラムを生成する型検査プログラム生成
ステップと、前記抽象構文木走査プログラム生成ステッ
プで生成したプログラムに、該プログラムの実行により
前記抽象構文木をたどったときに情報を収集して、該収
集した情報に基づいて前記中間結果として記憶された抽
象構文木から前記第2のプログラミング言語によるコー
ド情報を生成する部分を記述したコード生成アクション
を付加することによって、前記抽象構文木アクセスプロ
グラム生成ステップで生成したプログラムを参照しなが
ら前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成するた
めのプログラムを生成するコード生成プログラム生成ス
テップとを実行するためのプログラムをさらに記録する
ものとしてもよい。
【0036】上記記録媒体は、また、前記抽象構文木ア
クセスプログラム生成ステップで生成されるプログラム
に対してユーザが定義したプログラムを入力し、該入力
したユーザが定義したプログラムを解析して、その解析
結果を前記抽象構文木仕様記憶ステップで記憶した抽象
構文木仕様と対応させて記憶させるユーザ定義プログラ
ム検出ステップを実行するためのプログラムをさらに記
録するものとしてもよい。
クセスプログラム生成ステップで生成されるプログラム
に対してユーザが定義したプログラムを入力し、該入力
したユーザが定義したプログラムを解析して、その解析
結果を前記抽象構文木仕様記憶ステップで記憶した抽象
構文木仕様と対応させて記憶させるユーザ定義プログラ
ム検出ステップを実行するためのプログラムをさらに記
録するものとしてもよい。
【0037】上記記録媒体は、また、前記抽象構文木仕
様記憶ステップで記憶した前記抽象構文木仕様の解析結
果に基づいて、プログラミング言語の変換時に中間結果
として記憶された抽象構文木の状態をダンプするための
方法を記述したプログラムを生成する抽象構文木ダンプ
プログラム生成ステップを実行するためのプログラムを
さらに記録するものとしてもよい。
様記憶ステップで記憶した前記抽象構文木仕様の解析結
果に基づいて、プログラミング言語の変換時に中間結果
として記憶された抽象構文木の状態をダンプするための
方法を記述したプログラムを生成する抽象構文木ダンプ
プログラム生成ステップを実行するためのプログラムを
さらに記録するものとしてもよい。
【0038】
【発明の実施の形態】以下、添付図面を参照して、本発
明の実施の形態について説明する。
明の実施の形態について説明する。
【0039】[第1の実施の形態]図1は、この実施の
形態にかかるプログラミング言語変換プログラム開発支
援系のシステム、及びこのシステムから得られたプログ
ラムによって実現されるプログラミング言語変換装置の
機能ブロック図である。この図において、コンパイラ7
0よりも上が、プログラミング言語変換プログラム開発
支援系のシステムとなる。
形態にかかるプログラミング言語変換プログラム開発支
援系のシステム、及びこのシステムから得られたプログ
ラムによって実現されるプログラミング言語変換装置の
機能ブロック図である。この図において、コンパイラ7
0よりも上が、プログラミング言語変換プログラム開発
支援系のシステムとなる。
【0040】プログラミング言語変換プログラム開発支
援系のシステムにおいて、抽象構文木仕様定義ファイル
30は、プログラミング言語変換装置200が内部記憶
する抽象構文木の仕様を記述している。抽象構文木仕様
定義ファイル30の記述法については、詳しく後述す
る。
援系のシステムにおいて、抽象構文木仕様定義ファイル
30は、プログラミング言語変換装置200が内部記憶
する抽象構文木の仕様を記述している。抽象構文木仕様
定義ファイル30の記述法については、詳しく後述す
る。
【0041】プログラミング言語変換プログラム開発支
援装置100は、プログラム制御により動作するデータ
処理装置によって構成され、入力された抽象構文木仕様
定義ファイル30に基づいて、抽象構文木ダンププログ
ラムファイル40と、抽象構文木アクセスプログラムフ
ァイル50と、抽象構文木走査プログラムファイル60
とを生成する。
援装置100は、プログラム制御により動作するデータ
処理装置によって構成され、入力された抽象構文木仕様
定義ファイル30に基づいて、抽象構文木ダンププログ
ラムファイル40と、抽象構文木アクセスプログラムフ
ァイル50と、抽象構文木走査プログラムファイル60
とを生成する。
【0042】抽象構文木ダンププログラムファイル40
は、後述する抽象構文木ダンプ手段90が実行する処理
を所定の言語で記述したプログラムのファイルである。
抽象構文木アクセスプログラムファイル50は、後述す
る抽象構文木アクセス手段230が実行する処理を所定
の言語で記述したプログラムのファイルである。抽象構
文木走査プログラムファイル60は、後述する抽象構文
木記憶部220に記憶されている抽象構文木をその構造
に従って走査するための処理を所定の言語で記述したプ
ログラムのファイルである。
は、後述する抽象構文木ダンプ手段90が実行する処理
を所定の言語で記述したプログラムのファイルである。
抽象構文木アクセスプログラムファイル50は、後述す
る抽象構文木アクセス手段230が実行する処理を所定
の言語で記述したプログラムのファイルである。抽象構
文木走査プログラムファイル60は、後述する抽象構文
木記憶部220に記憶されている抽象構文木をその構造
に従って走査するための処理を所定の言語で記述したプ
ログラムのファイルである。
【0043】型検査用アクション61は、型検査プログ
ラムファイル63を生成する際に、抽象構文木走査プロ
グラムファイル60に付け加えられるプログラムの部分
である。型検査プログラム編集エディタ62は、抽象構
文木走査プログラムファイル60を読み込み、これに型
検査用アクション61を付け加えるという編集処理を行
うことにより、型検査プログラムファイル63を生成す
る。
ラムファイル63を生成する際に、抽象構文木走査プロ
グラムファイル60に付け加えられるプログラムの部分
である。型検査プログラム編集エディタ62は、抽象構
文木走査プログラムファイル60を読み込み、これに型
検査用アクション61を付け加えるという編集処理を行
うことにより、型検査プログラムファイル63を生成す
る。
【0044】コード生成用アクション64は、コード生
成プログラムファイル65を生成する際に、抽象構文木
走査プログラムファイル60に付け加えられるプログラ
ムの部分である。コード生成プログラム編集エディタ6
5は、抽象構文木走査プログラムファイル60を読み込
み、これにコード生成用アクション64を付け加えると
いう編集処理を行うことにより、コード生成プログラム
ファイル66を生成する。
成プログラムファイル65を生成する際に、抽象構文木
走査プログラムファイル60に付け加えられるプログラ
ムの部分である。コード生成プログラム編集エディタ6
5は、抽象構文木走査プログラムファイル60を読み込
み、これにコード生成用アクション64を付け加えると
いう編集処理を行うことにより、コード生成プログラム
ファイル66を生成する。
【0045】ここで、型検査用アクション61とコード
生成用アクション64とは、抽象構文木走査プログラム
ファイル60に記述されたプログラムを実行したとき
に、たどった抽象構文木から情報を収集して、該収集し
た情報に基づいて行う処理を記述したものである。すな
わち、抽象構文木走査プログラムファイル60では、抽
象構文木をたどることができるだけであるのに対して、
これに型検査用アクション61或いはコード生成アクシ
ョン64を付加することにより、抽象構文木をたどった
ときに情報を収集して、該収集した情報に従って、それ
ぞれ抽象構文木の型情報の検査と、下位言語プログラム
ファイル20のプログラム言語に対応するコード情報の
生成とを行うことができるようになる。
生成用アクション64とは、抽象構文木走査プログラム
ファイル60に記述されたプログラムを実行したとき
に、たどった抽象構文木から情報を収集して、該収集し
た情報に基づいて行う処理を記述したものである。すな
わち、抽象構文木走査プログラムファイル60では、抽
象構文木をたどることができるだけであるのに対して、
これに型検査用アクション61或いはコード生成アクシ
ョン64を付加することにより、抽象構文木をたどった
ときに情報を収集して、該収集した情報に従って、それ
ぞれ抽象構文木の型情報の検査と、下位言語プログラム
ファイル20のプログラム言語に対応するコード情報の
生成とを行うことができるようになる。
【0046】型検査プログラムファイル63は、後述す
る型検査手段240が実行する処理を所定の言語で記述
したプログラムのファイルである。コード生成プログラ
ムファイル66は、後述するコード生成手段250が実
行する処理を所定の言語で記述したプログラムのファイ
ルである。
る型検査手段240が実行する処理を所定の言語で記述
したプログラムのファイルである。コード生成プログラ
ムファイル66は、後述するコード生成手段250が実
行する処理を所定の言語で記述したプログラムのファイ
ルである。
【0047】コンパイラ70は、抽象構文木ダンププロ
グラムファイル40、抽象構文木アクセスプログラムフ
ァイル50、型検査プログラムファイル63及びコード
生成プログラムファイル66をそれぞれコンパイルし、
プログラミング言語変換装置200の各対応する手段が
実行できる機械語のプログラムを生成する。
グラムファイル40、抽象構文木アクセスプログラムフ
ァイル50、型検査プログラムファイル63及びコード
生成プログラムファイル66をそれぞれコンパイルし、
プログラミング言語変換装置200の各対応する手段が
実行できる機械語のプログラムを生成する。
【0048】一方、プログラミング言語変換装置200
は、上位言語入力ファイル10を読み込み、これを別の
言語で記述された下位言語プログラムファイル20に変
換して出力するもので、プログラム制御により動作する
データ処理装置によって構成され、構文解析手段210
と、抽象構文木記憶部220と、抽象構文木アクセス手
段230と、型検査手段240と、コード生成手段25
0とを備える。
は、上位言語入力ファイル10を読み込み、これを別の
言語で記述された下位言語プログラムファイル20に変
換して出力するもので、プログラム制御により動作する
データ処理装置によって構成され、構文解析手段210
と、抽象構文木記憶部220と、抽象構文木アクセス手
段230と、型検査手段240と、コード生成手段25
0とを備える。
【0049】構文解析手段210は、所定のプログラム
の実行により実現され、入力された上位言語入力ファイ
ル10のプログラムをその上位言語の文法に従って構文
解析し、その解析結果に基づいて抽象構文木を作成す
る。抽象構文木記憶部220は、構文解析手段210の
解析結果として得られた抽象構文木を記憶する。
の実行により実現され、入力された上位言語入力ファイ
ル10のプログラムをその上位言語の文法に従って構文
解析し、その解析結果に基づいて抽象構文木を作成す
る。抽象構文木記憶部220は、構文解析手段210の
解析結果として得られた抽象構文木を記憶する。
【0050】抽象構文木アクセス手段230は、上記開
発支援系のシステムで生成された抽象構文木アクセスプ
ログラムファイル50をコンパイラ70によってコンパ
イルしたプログラムを実行することによって実現され、
抽象構文木記憶部220に記憶されている抽象構文木を
参照するための方法を提供する。
発支援系のシステムで生成された抽象構文木アクセスプ
ログラムファイル50をコンパイラ70によってコンパ
イルしたプログラムを実行することによって実現され、
抽象構文木記憶部220に記憶されている抽象構文木を
参照するための方法を提供する。
【0051】型検査手段240は、上記開発支援系のシ
ステムで生成された型検査プログラムファイル63をコ
ンパイラ70によってコンパイルしたプログラムを実行
することによって実現され、抽象構文木アクセス手段2
30の機能を用いて抽象構文木を参照することにより、
抽象構文木記憶部220に記憶されている抽象構文木の
型情報を検査する。
ステムで生成された型検査プログラムファイル63をコ
ンパイラ70によってコンパイルしたプログラムを実行
することによって実現され、抽象構文木アクセス手段2
30の機能を用いて抽象構文木を参照することにより、
抽象構文木記憶部220に記憶されている抽象構文木の
型情報を検査する。
【0052】コード生成手段250は、上記開発支援系
のシステムで生成されたコード生成プログラムファイル
66をコンパイラ70によってコンパイルしたプログラ
ムを実行することによって実現され、型検査手段240
が検査した型情報に基づき、、また、抽象構文木アクセ
ス手段230の機能を用いて抽象構文木を参照すること
により、抽象構文木記憶部220に記憶されている抽象
構文木からコード生成をし、下位言語プログラムファイ
ル20を出力する。
のシステムで生成されたコード生成プログラムファイル
66をコンパイラ70によってコンパイルしたプログラ
ムを実行することによって実現され、型検査手段240
が検査した型情報に基づき、、また、抽象構文木アクセ
ス手段230の機能を用いて抽象構文木を参照すること
により、抽象構文木記憶部220に記憶されている抽象
構文木からコード生成をし、下位言語プログラムファイ
ル20を出力する。
【0053】また、プログラミング言語変換装置200
に付随して、抽象構文木ダンプ手段90が設けられてい
る。抽象構文木ダンプ手段90は、上記開発支援系のシ
ステムで生成された抽象構文木ダンププログラム40を
コンパイラ70によってコンパイルしたプログラムを実
行することによって実現され、抽象構文木記憶部220
に記憶されている抽象構文木の状態を、抽象構文木ダン
プファイル80として出力する。
に付随して、抽象構文木ダンプ手段90が設けられてい
る。抽象構文木ダンプ手段90は、上記開発支援系のシ
ステムで生成された抽象構文木ダンププログラム40を
コンパイラ70によってコンパイルしたプログラムを実
行することによって実現され、抽象構文木記憶部220
に記憶されている抽象構文木の状態を、抽象構文木ダン
プファイル80として出力する。
【0054】抽象構文木ダンプファイル80は、抽象構
文木記憶部220に記憶されている抽象構文木の状態
を、人間が読めるテキスト形式のファイルに変換したも
のである。
文木記憶部220に記憶されている抽象構文木の状態
を、人間が読めるテキスト形式のファイルに変換したも
のである。
【0055】次に、図1のプログラミング言語変換プロ
グラム開発支援装置100について、図2のブロック図
を参照して、その構成を詳しく説明する。図2に示すよ
うに、プログラミング言語変換プログラム開発支援装置
100は、抽象構文木仕様解析手段110と、抽象構文
仕様記憶部120と、意味検査手段130と、抽象構文
木ダンププログラム生成手段140と、抽象構文木アク
セスプログラム生成手段150と、抽象構文木走査プロ
グラム生成手段160とを含む。
グラム開発支援装置100について、図2のブロック図
を参照して、その構成を詳しく説明する。図2に示すよ
うに、プログラミング言語変換プログラム開発支援装置
100は、抽象構文木仕様解析手段110と、抽象構文
仕様記憶部120と、意味検査手段130と、抽象構文
木ダンププログラム生成手段140と、抽象構文木アク
セスプログラム生成手段150と、抽象構文木走査プロ
グラム生成手段160とを含む。
【0056】抽象構文木仕様解析手段110は、入力さ
れた抽象構文仕様定義ファイル30を構文解析し、その
解析結果を抽象構文木記憶部120に記憶させる。抽象
構文木記憶部120の記憶内容については、詳しく後述
する。意味検査手段130は、抽象構文木記憶部120
の記憶されている内容の整合性を検査する。
れた抽象構文仕様定義ファイル30を構文解析し、その
解析結果を抽象構文木記憶部120に記憶させる。抽象
構文木記憶部120の記憶内容については、詳しく後述
する。意味検査手段130は、抽象構文木記憶部120
の記憶されている内容の整合性を検査する。
【0057】抽象構文木ダンププログラム生成手段14
0は、抽象構文仕様記憶部120を参照して、抽象構文
ダンプグログラムファイル40を生成して出力する。抽
象構文木アクセスプログラム生成手段150は、抽象構
文仕様記憶部120を参照して、抽象構文アクセスプロ
グラムファイル50を生成して出力する。抽象構文木走
査プログラム生成手段160は、抽象構文木記憶部12
0を参照して、抽象構文木走査プログラムファイル60
を生成して出力する。
0は、抽象構文仕様記憶部120を参照して、抽象構文
ダンプグログラムファイル40を生成して出力する。抽
象構文木アクセスプログラム生成手段150は、抽象構
文仕様記憶部120を参照して、抽象構文アクセスプロ
グラムファイル50を生成して出力する。抽象構文木走
査プログラム生成手段160は、抽象構文木記憶部12
0を参照して、抽象構文木走査プログラムファイル60
を生成して出力する。
【0058】図3は、図1、図2に示す抽象構文木仕様
定義ファイル30の記述例を示す図である。抽象構文木
記憶部220に記憶される抽象構文木は、オブジェクト
指向プログラミング言語を用いた木構造のデータとして
実現されることを想定しており、図3に示すように、抽
象構文木仕様定義ファイル30には、オブジェクト指向
プログラミング言語におけるデータ構造の雛形であるク
ラスと、クラスの構成要素であるメンバの関係とが記述
される。
定義ファイル30の記述例を示す図である。抽象構文木
記憶部220に記憶される抽象構文木は、オブジェクト
指向プログラミング言語を用いた木構造のデータとして
実現されることを想定しており、図3に示すように、抽
象構文木仕様定義ファイル30には、オブジェクト指向
プログラミング言語におけるデータ構造の雛形であるク
ラスと、クラスの構成要素であるメンバの関係とが記述
される。
【0059】抽象構文木仕様定義ファイル30には、一
般的クラスと、継承関係を用いたクラスと、列挙型のク
ラスと、リスト型のクラスという4つのパターンを用い
て、クラスとメンバとの関係が記述される。以下、この
4つのパターンのそれぞれについての記述方法を説明す
る。
般的クラスと、継承関係を用いたクラスと、列挙型のク
ラスと、リスト型のクラスという4つのパターンを用い
て、クラスとメンバとの関係が記述される。以下、この
4つのパターンのそれぞれについての記述方法を説明す
る。
【0060】(1)一般的クラスを定義する場合 この場合、 <クラス名>=(<メンバ1の型名><メンバ1の名前
>,...<メンバnの型名><メンバnの名前>) の形式で記述する。すなわち、“=”の左側に定義する
クラスの名前を記述し、“=”の右側に“(”を記述し
た後、メンバの型名と名前とを複数組記述し、その
後“)”を記述する。例えば、 Token = (String image, int Line, int Column) と記述した場合、String型のメンバimageと、int型のメ
ンバLineと、int型のメンバColumnをもつ、Tokenクラス
を定義することができる。
>,...<メンバnの型名><メンバnの名前>) の形式で記述する。すなわち、“=”の左側に定義する
クラスの名前を記述し、“=”の右側に“(”を記述し
た後、メンバの型名と名前とを複数組記述し、その
後“)”を記述する。例えば、 Token = (String image, int Line, int Column) と記述した場合、String型のメンバimageと、int型のメ
ンバLineと、int型のメンバColumnをもつ、Tokenクラス
を定義することができる。
【0061】(2)継承関係を用いたクラスを定義する
場合 この場合、“::=”を用い、“::=”の左側にスー
パークラスを、右側にサブクラスを記述する。サブクラ
スが複数ある場合には、“|”で区切って記述する。図
3では、1行目から7行目までが継承関係を用いたクラ
スを定義している部分を示しており、BinaryクラスとUn
aryクラスとIntクラスとBoolクラスとLiteralクラスとB
raクラスの6つがサブクラスとなっている。
場合 この場合、“::=”を用い、“::=”の左側にスー
パークラスを、右側にサブクラスを記述する。サブクラ
スが複数ある場合には、“|”で区切って記述する。図
3では、1行目から7行目までが継承関係を用いたクラ
スを定義している部分を示しており、BinaryクラスとUn
aryクラスとIntクラスとBoolクラスとLiteralクラスとB
raクラスの6つがサブクラスとなっている。
【0062】また、スーパークラスのメンバは、“%att
ributes(”の後に記述する。図3の例では、Expクラス
はType型のメンバtypeをもつことを示している。サブク
ラスのメンバは、サブクラス名の後に"("に続けて記述
する。図3の例では、Binrayクラスは、BOperator型の
メンバopと、Exp型のメンバlと、Exp型のメンバrをもつ
ことを示している。
ributes(”の後に記述する。図3の例では、Expクラス
はType型のメンバtypeをもつことを示している。サブク
ラスのメンバは、サブクラス名の後に"("に続けて記述
する。図3の例では、Binrayクラスは、BOperator型の
メンバopと、Exp型のメンバlと、Exp型のメンバrをもつ
ことを示している。
【0063】(3)列挙型のクラスを定義する場合 列挙型とは、その型の値が特定の集合の要素のうちのい
ずれかである場合に対応するものであり、列挙型のクラ
スを定義する場合には、 <型名>=<集合の要素1>|<集合の要素2>
|...|<集合の要素n> の形式で記述する。例えば、図3の10行目に示すよう
に、 Bconst = TRUE | FALSE と記述した場合は、Bconst型は値として、TRUEまたはFA
LSEをもつ。
ずれかである場合に対応するものであり、列挙型のクラ
スを定義する場合には、 <型名>=<集合の要素1>|<集合の要素2>
|...|<集合の要素n> の形式で記述する。例えば、図3の10行目に示すよう
に、 Bconst = TRUE | FALSE と記述した場合は、Bconst型は値として、TRUEまたはFA
LSEをもつ。
【0064】(4)リスト型のクラスを定義する場合 同じ型を複数扱う場合、それらの型を複数個まとめた型
であるリスト型をメンバの型として定義することができ
る。この場合、アルファベットで記述されるメンバの型
名を、アルファベットの後に*をつけることによりリス
ト型のメンバをもつ型を定義することができる。例え
ば、 Address = (String* name) と記述した場合は、String型を複数個まとめたリスト型
のメンバnameをもつAddress型を定義することができ
る。
であるリスト型をメンバの型として定義することができ
る。この場合、アルファベットで記述されるメンバの型
名を、アルファベットの後に*をつけることによりリス
ト型のメンバをもつ型を定義することができる。例え
ば、 Address = (String* name) と記述した場合は、String型を複数個まとめたリスト型
のメンバnameをもつAddress型を定義することができ
る。
【0065】図4は、図2に示す抽象構文仕様記憶部1
20の記憶内容を示す図である。図示するように、抽象
構文仕様記憶部120は、クラス名をキーとしてクラス
タイプとクラス情報とを検索できる表を記憶している。
20の記憶内容を示す図である。図示するように、抽象
構文仕様記憶部120は、クラス名をキーとしてクラス
タイプとクラス情報とを検索できる表を記憶している。
【0066】クラス名の部分には、抽象構文木仕様定義
ファイル30で定義されるクラスの名前が記憶される。
クラスタイプの部分には、当該クラスが一般的クラス、
継承関係を用いたクラス、列挙型のクラス或いはリスト
型のクラスのいずれであるかを示す情報が記憶される。
ファイル30で定義されるクラスの名前が記憶される。
クラスタイプの部分には、当該クラスが一般的クラス、
継承関係を用いたクラス、列挙型のクラス或いはリスト
型のクラスのいずれであるかを示す情報が記憶される。
【0067】クラス情報の部分には、一般的クラスの場
合はクラスがもつメンバの型名及び名前を、継承関係を
用いたクラスの場合はクラスがもつメンバの型名及び名
前、並びにスーパークラス名やサブクラス名を、列挙型
のクラスの場合は集合の要素の名前を、リスト型のクラ
スの場合はリストの元となる型の名前が、それぞれ記憶
される。
合はクラスがもつメンバの型名及び名前を、継承関係を
用いたクラスの場合はクラスがもつメンバの型名及び名
前、並びにスーパークラス名やサブクラス名を、列挙型
のクラスの場合は集合の要素の名前を、リスト型のクラ
スの場合はリストの元となる型の名前が、それぞれ記憶
される。
【0068】以下、図1に示すプログラミング言語変換
プログラム開発支援系のシステムにおいて、抽象構文木
定義ファイル30に基づいてプログラムの開発を支援
し、プログラミング言語変換装置200を生成するまで
の流れについて、図5のフローチャートを参照して説明
する。
プログラム開発支援系のシステムにおいて、抽象構文木
定義ファイル30に基づいてプログラムの開発を支援
し、プログラミング言語変換装置200を生成するまで
の流れについて、図5のフローチャートを参照して説明
する。
【0069】まず、ユーザ(作成者:開発者)は、上位
言語入力ファイル10の文法と、上位言語入力ファイル
の文法に対応する下位言語プログラムファイル20の記
述を決定する(ステップA10)。次に、決定した上位
言語入力ファイル10の文法に従って、抽象構文木仕様
定義ファイル30を作成する(ステップA20)。
言語入力ファイル10の文法と、上位言語入力ファイル
の文法に対応する下位言語プログラムファイル20の記
述を決定する(ステップA10)。次に、決定した上位
言語入力ファイル10の文法に従って、抽象構文木仕様
定義ファイル30を作成する(ステップA20)。
【0070】次に、作成した抽象構文木仕様定義ファイ
ル30をプログラミング言語変換プログラム開発支援装
置100に入力し、プログラミング言語変換プログラム
開発支援装置100は、抽象構文木ダンププログラムフ
ァイル40と抽象構文木アクセスプログラムファイル5
0と抽象構文木走査プログラムファイル60を生成する
(ステップA30)。この処理については、さらに詳し
く後述する。
ル30をプログラミング言語変換プログラム開発支援装
置100に入力し、プログラミング言語変換プログラム
開発支援装置100は、抽象構文木ダンププログラムフ
ァイル40と抽象構文木アクセスプログラムファイル5
0と抽象構文木走査プログラムファイル60を生成する
(ステップA30)。この処理については、さらに詳し
く後述する。
【0071】次に、コンパイラ70を用いて、抽象構文
木アクセスプログラム50をコンパイルし、これをプロ
グラミング言語変換装置200のメモリの所定の領域に
記憶させることで、抽象構文木アクセス手段230を作
成する。また、コンパイラ70を用いて抽象構文木ダン
ププログラムファイル40をコンパイルし、これをプロ
グラミング言語変換装置200のメモリの所定の領域に
記憶させることで、抽象構文木ダンプ手段90を作成す
る(ステップA40)。
木アクセスプログラム50をコンパイルし、これをプロ
グラミング言語変換装置200のメモリの所定の領域に
記憶させることで、抽象構文木アクセス手段230を作
成する。また、コンパイラ70を用いて抽象構文木ダン
ププログラムファイル40をコンパイルし、これをプロ
グラミング言語変換装置200のメモリの所定の領域に
記憶させることで、抽象構文木ダンプ手段90を作成す
る(ステップA40)。
【0072】次に、ユーザは、ステップA10で決定し
た上位言語ファイル10の文法に従って、上位言語ファ
イル10を構文解析するためのプログラムを作成し、こ
れをプログラミング言語変換装置200のメモリの所定
の領域に記憶させることで、構文解析手段210を作成
する(ステップA50)。
た上位言語ファイル10の文法に従って、上位言語ファ
イル10を構文解析するためのプログラムを作成し、こ
れをプログラミング言語変換装置200のメモリの所定
の領域に記憶させることで、構文解析手段210を作成
する(ステップA50)。
【0073】次に、プログラミング言語の変換の対象と
なる上位言語入力ファイル10(でもプログラムでも
可)を構文解析手段210に入力し、構文解析手段21
0によって抽象構文木を作成させて抽象構文木記憶部2
20に記憶させる。そして、抽象構文木ダンプ手段90
を動作させて、抽象構文木記憶部220に記憶されてい
る抽象構文木をテキスト形式のデータに変換して抽象構
文木ダンプファイル80として出力する。そして、出力
された抽象構文木ダンプファイル80の内容をユーザが
確認することにより、構文解析手段210がユーザの想
定するように動作していることを確認する(ステップA
60)。
なる上位言語入力ファイル10(でもプログラムでも
可)を構文解析手段210に入力し、構文解析手段21
0によって抽象構文木を作成させて抽象構文木記憶部2
20に記憶させる。そして、抽象構文木ダンプ手段90
を動作させて、抽象構文木記憶部220に記憶されてい
る抽象構文木をテキスト形式のデータに変換して抽象構
文木ダンプファイル80として出力する。そして、出力
された抽象構文木ダンプファイル80の内容をユーザが
確認することにより、構文解析手段210がユーザの想
定するように動作していることを確認する(ステップA
60)。
【0074】次に、型検査プログラム編集エディタ61
は、抽象構文木走査プログラムファイル60を読み込ま
せ、型検査用アクション61を読み込んで抽象構文木走
査プログラムファイル60に付加することにより、型検
査プログラムファイル63を作成する(ステップA7
0)。さらに、コード生成プログラム編集エディタ65
は、抽象構文木走査プログラムファイル60を読み込ま
せ、コード生成用アクション64を読み込んで抽象構文
木走査プログラム60に付加することにより、コード生
成用プログラムファイル66を作成する(ステップA8
0)。
は、抽象構文木走査プログラムファイル60を読み込ま
せ、型検査用アクション61を読み込んで抽象構文木走
査プログラムファイル60に付加することにより、型検
査プログラムファイル63を作成する(ステップA7
0)。さらに、コード生成プログラム編集エディタ65
は、抽象構文木走査プログラムファイル60を読み込ま
せ、コード生成用アクション64を読み込んで抽象構文
木走査プログラム60に付加することにより、コード生
成用プログラムファイル66を作成する(ステップA8
0)。
【0075】そして、コンパイラ70を用いて型検査用
プログラムファイル63をコンパイルし、これをプログ
ラミング言語変換装置200のメモリの所定の領域に記
憶させることによって、型検査手段240を作成する
(ステップA90)。さらに、コンパイラ70を用いて
コード生成用プログラムファイル66をコンパイルし、
これをプログラミング言語変換装置200のメモリの所
定の領域に記憶させることによって、コード生成手段2
40を作成する(ステップA90)。そして、このフロ
ーチャートに示す処理を終了する。以上により、プログ
ラミング言語変換装置200を構成するすべての手段が
作成されることとなる。
プログラムファイル63をコンパイルし、これをプログ
ラミング言語変換装置200のメモリの所定の領域に記
憶させることによって、型検査手段240を作成する
(ステップA90)。さらに、コンパイラ70を用いて
コード生成用プログラムファイル66をコンパイルし、
これをプログラミング言語変換装置200のメモリの所
定の領域に記憶させることによって、コード生成手段2
40を作成する(ステップA90)。そして、このフロ
ーチャートに示す処理を終了する。以上により、プログ
ラミング言語変換装置200を構成するすべての手段が
作成されることとなる。
【0076】次に、プログラミング言語変換プログラム
開発支援装置100において実行されるのための処理、
すなわち図5のステップA30の処理について、図6の
フローチャートを参照して詳しく説明する。
開発支援装置100において実行されるのための処理、
すなわち図5のステップA30の処理について、図6の
フローチャートを参照して詳しく説明する。
【0077】処理が開始すると、抽象構文木仕様解析手
段110は、抽象構文木仕様定義ファイル30を読み込
み、これを構文解析する(ステップC10)。次に、抽
象構文木仕様解析手段110は、その解析結果を、図4
に示したように、抽象構文木仕様記憶部120内に表形
式で記憶させる(ステップC20)。
段110は、抽象構文木仕様定義ファイル30を読み込
み、これを構文解析する(ステップC10)。次に、抽
象構文木仕様解析手段110は、その解析結果を、図4
に示したように、抽象構文木仕様記憶部120内に表形
式で記憶させる(ステップC20)。
【0078】次に、意味検査手段130は、抽象構文木
仕様記憶部120を検査して、その記憶する情報におい
てクラス名を重複して仕様していないかどうか検査す
る。ここで、クラス名を重複して用いていたらその内容
を示すメッセージを出力し、重複して用いていなければ
何も行わない。また、意味検査手段130は、生成する
プログラミング言語における予約語をクラスとして用い
ていないかどうかを検査する。ここで、予約語をクラス
名として用いていたらその内容を示すメッセージを出力
し、用いていなければ何も行わない(ステップC3
0)。
仕様記憶部120を検査して、その記憶する情報におい
てクラス名を重複して仕様していないかどうか検査す
る。ここで、クラス名を重複して用いていたらその内容
を示すメッセージを出力し、重複して用いていなければ
何も行わない。また、意味検査手段130は、生成する
プログラミング言語における予約語をクラスとして用い
ていないかどうかを検査する。ここで、予約語をクラス
名として用いていたらその内容を示すメッセージを出力
し、用いていなければ何も行わない(ステップC3
0)。
【0079】次に、抽象構文木アクセスプログラム生成
手段150は、抽象構文木仕様記憶部120を参照しな
がら、抽象構文木アクセスプログラムファイル50を生
成する(ステップC40)。また、抽象構文木ダンププ
ログラム生成手段140は、抽象構文木仕様記憶部12
0を参照しながら抽象構文木ダンププログラムファイル
40を生成する(ステップC50)。さらに、抽象構文
木走査プログラム作成手段160は、抽象構文木走査プ
ログラムファイル60を生成する(ステップC60)。
そして、このフローチャートの処理を終了する。このフ
ローチャートの処理が終了した場合には、次に上記した
ステップA40の処理が行われることとなる。
手段150は、抽象構文木仕様記憶部120を参照しな
がら、抽象構文木アクセスプログラムファイル50を生
成する(ステップC40)。また、抽象構文木ダンププ
ログラム生成手段140は、抽象構文木仕様記憶部12
0を参照しながら抽象構文木ダンププログラムファイル
40を生成する(ステップC50)。さらに、抽象構文
木走査プログラム作成手段160は、抽象構文木走査プ
ログラムファイル60を生成する(ステップC60)。
そして、このフローチャートの処理を終了する。このフ
ローチャートの処理が終了した場合には、次に上記した
ステップA40の処理が行われることとなる。
【0080】以下、上記のようにして開発されたプログ
ラミング言語変換装置200の動作について、図7のフ
ローチャートを参照して説明する。
ラミング言語変換装置200の動作について、図7のフ
ローチャートを参照して説明する。
【0081】プログラム言語変換装置200が起動され
ると、まず、構文解析手段210は、上位言語入力ファ
イル10を読み込み、上位言語入力ファイル10のプロ
グラミング言語の文法に従ってこれを構文解析する(ス
テップB10)。次に、構文解析手段210は、ステッ
プB10での構文解析の結果をもとに抽象構文木を作成
し、抽象構文木記憶部220に記憶させる(ステップB
20)。
ると、まず、構文解析手段210は、上位言語入力ファ
イル10を読み込み、上位言語入力ファイル10のプロ
グラミング言語の文法に従ってこれを構文解析する(ス
テップB10)。次に、構文解析手段210は、ステッ
プB10での構文解析の結果をもとに抽象構文木を作成
し、抽象構文木記憶部220に記憶させる(ステップB
20)。
【0082】次に、型検査手段240は、抽象構文木ア
クセス手段230を利用して抽象構文木記憶部220に
記憶されている抽象構文木を参照することにより、抽象
構文木の型情報を検査する(ステップB30)。そし
て、コード生成手段250は、抽象構文木アクセス手段
230を利用して抽象構文木記憶部220に記憶されて
いる抽象構文木をを参照して、下位言語プログラムファ
イル20を出力する(ステップB40)。そして、この
フローチャートの処理を終了し、以上で上位言語入力フ
ァイル10から下位言語プログラムファイル20へのプ
ログラミング言語の変換がなされることとなる。
クセス手段230を利用して抽象構文木記憶部220に
記憶されている抽象構文木を参照することにより、抽象
構文木の型情報を検査する(ステップB30)。そし
て、コード生成手段250は、抽象構文木アクセス手段
230を利用して抽象構文木記憶部220に記憶されて
いる抽象構文木をを参照して、下位言語プログラムファ
イル20を出力する(ステップB40)。そして、この
フローチャートの処理を終了し、以上で上位言語入力フ
ァイル10から下位言語プログラムファイル20へのプ
ログラミング言語の変換がなされることとなる。
【0083】以下、この実施の形態を、具体的な例を示
して説明する。ここでは、構文木仕様定義ファイル30
として図3に示した内容のファイルを用いて、プログラ
ミング言語変換プログラム開発支援装置100と、抽象
構文木ダンプ手段90の動作を説明すると共に、型検査
プログラムファイル63とコード生成用プログラムファ
イル66の作成方法を説明する。また、抽象構文木作成
装置100が生成する抽象構文木ダンププログラムファ
イル40と抽象構文木アクセスプログラム50と抽象構
文木プログラムファイル60とを実現するプログラミン
グ言語として、Java言語を用いるものとする。
して説明する。ここでは、構文木仕様定義ファイル30
として図3に示した内容のファイルを用いて、プログラ
ミング言語変換プログラム開発支援装置100と、抽象
構文木ダンプ手段90の動作を説明すると共に、型検査
プログラムファイル63とコード生成用プログラムファ
イル66の作成方法を説明する。また、抽象構文木作成
装置100が生成する抽象構文木ダンププログラムファ
イル40と抽象構文木アクセスプログラム50と抽象構
文木プログラムファイル60とを実現するプログラミン
グ言語として、Java言語を用いるものとする。
【0084】最初に、プログラミング言語変換プログラ
ム開発支援装置100の動作の具体例について、説明す
る。抽象構文木仕様解析手段110は、図3に示した抽
象構文木仕様定義ファイル30を読み込み、次に説明す
るように構文解析をして(ステップC10)、抽象構文
木記憶部に記憶させる(ステップC20)。
ム開発支援装置100の動作の具体例について、説明す
る。抽象構文木仕様解析手段110は、図3に示した抽
象構文木仕様定義ファイル30を読み込み、次に説明す
るように構文解析をして(ステップC10)、抽象構文
木記憶部に記憶させる(ステップC20)。
【0085】ここで、抽象構文木仕様解析手段110に
よる構文解析として、まず"Exp"という文字列を切り出
しクラス名として認識し、抽象構文木仕様記憶部120
内の表の1行目のクラス名の部分にExpを書き込む。次
に、抽象構文木仕様解析手段110は、"::="文字列を
切り出すことにより継承関係のクラスを定義しているこ
とを認識し、1行目のクラスタイプの部分に継承と書き
込む(ステップC10)。
よる構文解析として、まず"Exp"という文字列を切り出
しクラス名として認識し、抽象構文木仕様記憶部120
内の表の1行目のクラス名の部分にExpを書き込む。次
に、抽象構文木仕様解析手段110は、"::="文字列を
切り出すことにより継承関係のクラスを定義しているこ
とを認識し、1行目のクラスタイプの部分に継承と書き
込む(ステップC10)。
【0086】次に、抽象構文木仕様解析手段110
は、"Binray"という文字列を切り出しこれがExpクラス
のサブクラス名であることを認識し、表の2行目のクラ
ス名の部分にBinrayを書き込むと共に、表の2行目のク
ラスタイプに継承と書き込む。また、表の2行目のクラ
ス情報の部分にスーパークラスの名前がExpであること
を書き込み、表の1行目のクラス情報の部分に1番目の
サブクラスの名前がBinaryであることを書き込む。
は、"Binray"という文字列を切り出しこれがExpクラス
のサブクラス名であることを認識し、表の2行目のクラ
ス名の部分にBinrayを書き込むと共に、表の2行目のク
ラスタイプに継承と書き込む。また、表の2行目のクラ
ス情報の部分にスーパークラスの名前がExpであること
を書き込み、表の1行目のクラス情報の部分に1番目の
サブクラスの名前がBinaryであることを書き込む。
【0087】次に、抽象構文仕様解析手段110
は、"("を認識し、次に")"が現れるまでは、Binaryクラ
スのメンバを定義していると認識し、BinaryクラスがBO
peratorのメンバopとExp型のメンバlとExp型のメンバr
をもつことを、表の2行目のクラス情報の部分に書き込
む。
は、"("を認識し、次に")"が現れるまでは、Binaryクラ
スのメンバを定義していると認識し、BinaryクラスがBO
peratorのメンバopとExp型のメンバlとExp型のメンバr
をもつことを、表の2行目のクラス情報の部分に書き込
む。
【0088】次に、抽象構文仕様解析手段110は、"
|"という文字を切り出すことにより、UnaryクラスもExp
クラスのサブクラスであることを認識し、表の3行目に
記憶させる。同様にして6行目まで処理を行い、抽象構
文仕様解析手段110は、7行目は"%attributes"とい
う文字列を認識することによりこの後の"("の中がExpク
ラスのメンバであると認識する。
|"という文字を切り出すことにより、UnaryクラスもExp
クラスのサブクラスであることを認識し、表の3行目に
記憶させる。同様にして6行目まで処理を行い、抽象構
文仕様解析手段110は、7行目は"%attributes"とい
う文字列を認識することによりこの後の"("の中がExpク
ラスのメンバであると認識する。
【0089】次に、抽象構文仕様解析手段110は、8
行目において"BOperator"という文字列を認識し"="とい
う文字を認識し、さらに"PLUS"という文字列を認識した
時点で、列挙型のクラスを定義していると認識する。そ
れにより、抽象構文仕様解析手段110は、表の8行目
のクラス名にBOperatorで、表の8行目のクラスタイプ
に列挙型、表の8行目のクラス情報の部分に列挙の要素
である"PLUS"と"MINUS"とMULTI"と"DIV"と"AND"と"OR"
を書き込む。
行目において"BOperator"という文字列を認識し"="とい
う文字を認識し、さらに"PLUS"という文字列を認識した
時点で、列挙型のクラスを定義していると認識する。そ
れにより、抽象構文仕様解析手段110は、表の8行目
のクラス名にBOperatorで、表の8行目のクラスタイプ
に列挙型、表の8行目のクラス情報の部分に列挙の要素
である"PLUS"と"MINUS"とMULTI"と"DIV"と"AND"と"OR"
を書き込む。
【0090】このようにして、抽象構文仕様解析手段1
10が抽象構文仕様ファイル30を構文解析して抽象構
文仕様記憶部120の表への登録を行うことにより、抽
象構文木記憶部120内の表は、図8に示す状態とな
る。但し、図8において、「略」と表示されている行の
クラス情報の部分については、詳しい記述は省略してあ
る。
10が抽象構文仕様ファイル30を構文解析して抽象構
文仕様記憶部120の表への登録を行うことにより、抽
象構文木記憶部120内の表は、図8に示す状態とな
る。但し、図8において、「略」と表示されている行の
クラス情報の部分については、詳しい記述は省略してあ
る。
【0091】抽象構文仕様記憶部120の表への登録が
終了すると、意味検査手段130は、抽象構文木仕様記
憶部120に記憶されている表の内容に対してクラス名
の重複および生成プログラミング言語であるJava言語の
予約語を型名として用いていないかどうかを検査する
(ステップC30)。図3に示す抽象構文仕様定義ファ
イル30を用いた場合、抽象構文仕様記録部120の表
においてクラス名の重複なく、またJava言語の予約語を
型名として用いていない。このため、意味検査手段13
0は、検査のみでその後のメッセージの出力等は行わな
い。
終了すると、意味検査手段130は、抽象構文木仕様記
憶部120に記憶されている表の内容に対してクラス名
の重複および生成プログラミング言語であるJava言語の
予約語を型名として用いていないかどうかを検査する
(ステップC30)。図3に示す抽象構文仕様定義ファ
イル30を用いた場合、抽象構文仕様記録部120の表
においてクラス名の重複なく、またJava言語の予約語を
型名として用いていない。このため、意味検査手段13
0は、検査のみでその後のメッセージの出力等は行わな
い。
【0092】意味検査手段130による検査が終了する
と、抽象構文木アクセスプログラム生成手段150は、
抽象構文木仕様記憶部120内の表の各行に対して、対
応するファイルを生成する(ステップC40)。この例
においては、抽象構文木仕様記憶部120内の表は図8
のようになっており、この表の各行に対してそれぞれ1
つのファイルが生成されるので、全部で11個のファイ
ルからなる抽象構文木アクセスプログラム50が生成さ
れる。
と、抽象構文木アクセスプログラム生成手段150は、
抽象構文木仕様記憶部120内の表の各行に対して、対
応するファイルを生成する(ステップC40)。この例
においては、抽象構文木仕様記憶部120内の表は図8
のようになっており、この表の各行に対してそれぞれ1
つのファイルが生成されるので、全部で11個のファイ
ルからなる抽象構文木アクセスプログラム50が生成さ
れる。
【0093】例として、クラス名の部分がExpの行に対
しては、Exp.javaというファイル名で、図9に示す内容
のファイルが生成される。また、クラス名の部分がType
の行に対してはType.javaというファイル名で、図10
に示す内容のファイルが生成される。
しては、Exp.javaというファイル名で、図9に示す内容
のファイルが生成される。また、クラス名の部分がType
の行に対してはType.javaというファイル名で、図10
に示す内容のファイルが生成される。
【0094】次に、抽象構文木ダンププログラム生成手
段140は、抽象構文木記憶部120内の表を参照しな
がら抽象構文木ダンププログラム40を生成する(ステ
ップC50)。
段140は、抽象構文木記憶部120内の表を参照しな
がら抽象構文木ダンププログラム40を生成する(ステ
ップC50)。
【0095】そして、抽象構文木走査プログラム生成手
段160は、抽象構文木記憶部120内の表を参照し
て、抽象構文木走査プログラムファイル60を生成す
る。ここで、抽象構文木記憶部120内の表が図7に示
す状態となっているため、抽象構文木走査プログラムフ
ァイルとして、図11に示す内容のプログラムが生成さ
れる。但し、図11において、「中略」と書いた部分に
ついては、その間を記述が省略されていることを表して
いる(ステップC60)。
段160は、抽象構文木記憶部120内の表を参照し
て、抽象構文木走査プログラムファイル60を生成す
る。ここで、抽象構文木記憶部120内の表が図7に示
す状態となっているため、抽象構文木走査プログラムフ
ァイルとして、図11に示す内容のプログラムが生成さ
れる。但し、図11において、「中略」と書いた部分に
ついては、その間を記述が省略されていることを表して
いる(ステップC60)。
【0096】次に、抽象構文木ダンプ手段90の動作の
具体例を説明する。ここで、抽象構文木記憶部120内
の表が図8の状態である場合に、抽象構文木ダンププロ
グラムファイル40をコンパイラ70でコンパイルする
ことにより作成されたプログラムで実現される抽象構文
木ダンプ手段90の動作を説明する。
具体例を説明する。ここで、抽象構文木記憶部120内
の表が図8の状態である場合に、抽象構文木ダンププロ
グラムファイル40をコンパイラ70でコンパイルする
ことにより作成されたプログラムで実現される抽象構文
木ダンプ手段90の動作を説明する。
【0097】ここで、抽象構文木記憶部220には、構
文解析手段210による上位言語入力ファイル10の解
析結果として、図12(a)に示す状態の抽象構文木が
記憶されているものとする。この場合、上記のようにし
て実現される抽象構文木ダンプ手段90は、抽象構文木
記憶部220に記憶されている抽象構文木のダンプ結果
として、図12(b)に示すような抽象構文木ダンプフ
ァイル80を出力する。
文解析手段210による上位言語入力ファイル10の解
析結果として、図12(a)に示す状態の抽象構文木が
記憶されているものとする。この場合、上記のようにし
て実現される抽象構文木ダンプ手段90は、抽象構文木
記憶部220に記憶されている抽象構文木のダンプ結果
として、図12(b)に示すような抽象構文木ダンプフ
ァイル80を出力する。
【0098】次に、型検査プログラムファイル63の具
体的な記述例について説明する。図13は、図11の抽
象構文走査プログラム60に対して型検査アクション6
1を付加することにより作成された型検査プログラムフ
ァイル63の例である。図13の中で四角で囲まれた部
分が、付加された型検査アクション61に対応する。す
なわち、それだけでは結果として何も得ることができな
い抽象構文木をたどるためのプログラムに、抽象構文木
の型情報を検査するための部分が付加されているものと
なっている。
体的な記述例について説明する。図13は、図11の抽
象構文走査プログラム60に対して型検査アクション6
1を付加することにより作成された型検査プログラムフ
ァイル63の例である。図13の中で四角で囲まれた部
分が、付加された型検査アクション61に対応する。す
なわち、それだけでは結果として何も得ることができな
い抽象構文木をたどるためのプログラムに、抽象構文木
の型情報を検査するための部分が付加されているものと
なっている。
【0099】次に、コード生成用プログラムファイル6
6の具体的な記述例について説明する。図14は、図1
0の抽象構文走査プログラム60に対してコード生成用
アクション64を付加することにより作成されたコード
生成プログラムファイル66の例である。図14の中で
四角で囲まれた部分が、付加されたコード生成用アクシ
ョン64に対応する。すなわち、それだけでは結果とし
て何も得ることができない抽象構文木をたどるだけのプ
ログラムに、下位言語プログラムファイル20のプログ
ラミング言語のコード情報を生成するための部分が付加
されているものとなっている。
6の具体的な記述例について説明する。図14は、図1
0の抽象構文走査プログラム60に対してコード生成用
アクション64を付加することにより作成されたコード
生成プログラムファイル66の例である。図14の中で
四角で囲まれた部分が、付加されたコード生成用アクシ
ョン64に対応する。すなわち、それだけでは結果とし
て何も得ることができない抽象構文木をたどるだけのプ
ログラムに、下位言語プログラムファイル20のプログ
ラミング言語のコード情報を生成するための部分が付加
されているものとなっている。
【0100】以上説明したように、この実施の形態で
は、ユーザ(作成者:開発者)が抽象構文木仕様定義フ
ァイル30のみを開発すれば、プログラミング言語変換
プログラム開発支援装置100が、抽象構文木アクセス
手段230の振る舞いを記述した抽象構文木アクセスプ
ログラムファイル50を生成することができる。このた
め、プログラミング言語変換装置200の構成要素であ
る抽象構文木アクセス手段230を効率よく開発するこ
とができる。
は、ユーザ(作成者:開発者)が抽象構文木仕様定義フ
ァイル30のみを開発すれば、プログラミング言語変換
プログラム開発支援装置100が、抽象構文木アクセス
手段230の振る舞いを記述した抽象構文木アクセスプ
ログラムファイル50を生成することができる。このた
め、プログラミング言語変換装置200の構成要素であ
る抽象構文木アクセス手段230を効率よく開発するこ
とができる。
【0101】また、ユーザが抽象構文木仕様定義ファイ
ル30のみを開発すれば、プログラミング言語変換プロ
グラム開発支援装置100が、抽象構文木記憶部220
に記憶されている抽象構文木をたどる抽象構文木走査プ
ログラムファイル60を生成することができる。このた
め、記述量が大規模な抽象構文木をたどる部分のプログ
ラムを効率よく開発することができる。
ル30のみを開発すれば、プログラミング言語変換プロ
グラム開発支援装置100が、抽象構文木記憶部220
に記憶されている抽象構文木をたどる抽象構文木走査プ
ログラムファイル60を生成することができる。このた
め、記述量が大規模な抽象構文木をたどる部分のプログ
ラムを効率よく開発することができる。
【0102】さらに、抽象構文木走査プログラムファイ
ル60を、それぞれ型検査用アクション61及びコード
生成用アクション64と共に、型検査プログラム編集エ
ディタ62、コード生成プログラム編集エディタ65で
編集することにより、型検査手段240及びコード生成
手段250の振る舞いを記述した型検査プログラムファ
イル63及びコード生成プログラムファイル66を生成
することができる。このため、プログラミング言語変換
装置200の構成要素である型検査手段240及びコー
ド生成手段250を効率よく開発することができる。
ル60を、それぞれ型検査用アクション61及びコード
生成用アクション64と共に、型検査プログラム編集エ
ディタ62、コード生成プログラム編集エディタ65で
編集することにより、型検査手段240及びコード生成
手段250の振る舞いを記述した型検査プログラムファ
イル63及びコード生成プログラムファイル66を生成
することができる。このため、プログラミング言語変換
装置200の構成要素である型検査手段240及びコー
ド生成手段250を効率よく開発することができる。
【0103】以上のように、図1に示したプログラミン
グ言語変換プログラム開発支援系のシステムを用いるこ
とによって、ユーザは、抽象構文木仕様定義ファイル3
0の開発を行えば、後は型検査用アクション61及びコ
ード生成用アクション64の付加を行うのみで、プログ
ラミング言語変換装置200において抽象構文木記憶部
220に記憶された上位言語入力ファイル10に対応す
る抽象構文木から下位言語プログラムファイル20を作
成するために必要となるすべてのプログラムファイル、
手段を生成することができる。従って、プログラミング
言語開発装置200(或いはこのためのプログラム)の
開発を効率よく行うことができる。
グ言語変換プログラム開発支援系のシステムを用いるこ
とによって、ユーザは、抽象構文木仕様定義ファイル3
0の開発を行えば、後は型検査用アクション61及びコ
ード生成用アクション64の付加を行うのみで、プログ
ラミング言語変換装置200において抽象構文木記憶部
220に記憶された上位言語入力ファイル10に対応す
る抽象構文木から下位言語プログラムファイル20を作
成するために必要となるすべてのプログラムファイル、
手段を生成することができる。従って、プログラミング
言語開発装置200(或いはこのためのプログラム)の
開発を効率よく行うことができる。
【0104】さらに、ユーザが抽象構文木仕様定義ファ
イル30のみを開発すれば、プログラミング言語変換プ
ログラム開発支援装置100が、抽象構文木記憶部22
0に記憶されている抽象構文木の状態をテキストファイ
ルに変換して出力する抽象構文木ダンプ手段90の振る
舞いを記述した抽象構文木ダンププログラムファイル4
0を作成することができる。そして、抽象構文木ダンプ
手段90を動作させて抽象構文木記憶部220内の抽象
構文木の状態をダンプさせることにより、ユーザは、プ
ログラミング言語変換装置200内に記憶されている抽
象構文木の状態を確認することができるようになる。
イル30のみを開発すれば、プログラミング言語変換プ
ログラム開発支援装置100が、抽象構文木記憶部22
0に記憶されている抽象構文木の状態をテキストファイ
ルに変換して出力する抽象構文木ダンプ手段90の振る
舞いを記述した抽象構文木ダンププログラムファイル4
0を作成することができる。そして、抽象構文木ダンプ
手段90を動作させて抽象構文木記憶部220内の抽象
構文木の状態をダンプさせることにより、ユーザは、プ
ログラミング言語変換装置200内に記憶されている抽
象構文木の状態を確認することができるようになる。
【0105】[第2の実施の形態]図15は、この実施
の形態にかかるプログラミング言語変換プログラム開発
支援系のシステム、及びこのシステムから得られたプロ
グラムによって実現されるプログラミング言語変換装置
の機能ブロック図である。この図において、コンパイラ
70よりも上が、プログラミング言語変換プログラム開
発支援系のシステムとなる。
の形態にかかるプログラミング言語変換プログラム開発
支援系のシステム、及びこのシステムから得られたプロ
グラムによって実現されるプログラミング言語変換装置
の機能ブロック図である。この図において、コンパイラ
70よりも上が、プログラミング言語変換プログラム開
発支援系のシステムとなる。
【0106】この実施の形態でのプログラミング言語変
換プログラム開発支援系のシステムにおいて、プログラ
ミング言語変換プログラム開発支援装置400が第1の
実施の形態のものと異なり、抽象構文木仕様定義ファイ
ル30に加えて、ユーザ付加プログラムファイル410
が入力される。また、図16に示すように、プログラミ
ング言語変換プログラム開発支援装置400は、第1の
実施の形態の構成に加えてユーザ付加プログラム検出手
段420が付加され、また、抽象構文木アクセスプログ
ラム生成手段430が第1の実施の形態のものと異なっ
ている。
換プログラム開発支援系のシステムにおいて、プログラ
ミング言語変換プログラム開発支援装置400が第1の
実施の形態のものと異なり、抽象構文木仕様定義ファイ
ル30に加えて、ユーザ付加プログラムファイル410
が入力される。また、図16に示すように、プログラミ
ング言語変換プログラム開発支援装置400は、第1の
実施の形態の構成に加えてユーザ付加プログラム検出手
段420が付加され、また、抽象構文木アクセスプログ
ラム生成手段430が第1の実施の形態のものと異なっ
ている。
【0107】ユーザ付加プログラムファイル410は、
抽象構文木生成手段430により生成される抽象構文木
アクセスプログラム50に追加するためのプログラムを
所定の言語で記述したファイルであり、ユーザ(プログ
ラマ)が作成したプログラムを用いることができる。
抽象構文木生成手段430により生成される抽象構文木
アクセスプログラム50に追加するためのプログラムを
所定の言語で記述したファイルであり、ユーザ(プログ
ラマ)が作成したプログラムを用いることができる。
【0108】図17は、ユーザ付加プログラムファイル
410の文法を示す図である。図示するように、ユーザ
プログラムファイル410は、まず、"//--"と"//**"以
外で始まる行からなる任意のプログラムがあり、次に"/
/--"で始まる行があり、次にユーザ定義ヘッダーがあ
り、次に"//"で始まる行があり、次に"//--"と"//**"以
外で始まる行からなる任意のプログラムがあり、次に"/
/**"で始まる行があり、最後にユーザ定義プログラムあ
るという構成をとる。図18にユーザ付加プログラムフ
ァイル410の記述例を示す。
410の文法を示す図である。図示するように、ユーザ
プログラムファイル410は、まず、"//--"と"//**"以
外で始まる行からなる任意のプログラムがあり、次に"/
/--"で始まる行があり、次にユーザ定義ヘッダーがあ
り、次に"//"で始まる行があり、次に"//--"と"//**"以
外で始まる行からなる任意のプログラムがあり、次に"/
/**"で始まる行があり、最後にユーザ定義プログラムあ
るという構成をとる。図18にユーザ付加プログラムフ
ァイル410の記述例を示す。
【0109】また、図16のユーザ付加プログラム検出
手段420は、入力された情報からユーザ付加プログラ
ムファイル410を検出し、検出したユーザ付加プログ
ラムファイル410の内容を抽象構文木仕様記憶部12
0に記憶させる。
手段420は、入力された情報からユーザ付加プログラ
ムファイル410を検出し、検出したユーザ付加プログ
ラムファイル410の内容を抽象構文木仕様記憶部12
0に記憶させる。
【0110】抽象構文木アクセスプログラム生成手段4
30は、抽象構文木仕様記憶部120の記憶内容を参照
して、抽象構文木アクセスプログラムファイル50を出
力する。ここで、第1の実施の形態との違いは、出力さ
れる抽象構文木アクセスプログラムファイル50の内容
に、ユーザ付加プログラムファイル410の内容が反映
されていることである。
30は、抽象構文木仕様記憶部120の記憶内容を参照
して、抽象構文木アクセスプログラムファイル50を出
力する。ここで、第1の実施の形態との違いは、出力さ
れる抽象構文木アクセスプログラムファイル50の内容
に、ユーザ付加プログラムファイル410の内容が反映
されていることである。
【0111】以下、図15に示すプログラミング言語変
換プログラム開発支援系のシステムにおいて、抽象構文
木定義ファイル30及びユーザ付加プログラムファイル
410に基づいてプログラムの開発を支援し、プログラ
ミング言語変換装置200を生成するまでの流れについ
て、図19のフローチャートを参照して説明する。
換プログラム開発支援系のシステムにおいて、抽象構文
木定義ファイル30及びユーザ付加プログラムファイル
410に基づいてプログラムの開発を支援し、プログラ
ミング言語変換装置200を生成するまでの流れについ
て、図19のフローチャートを参照して説明する。
【0112】図19のフローチャートにおいて、ステッ
プA10、A20の処理は、第1の実施の形態で説明し
たもの(図5)と同じである。ステップA20の処理が
終了すると、次に、ユーザは、ユーザ付加プログラムフ
ァイル410を作成する(ステップA110)。
プA10、A20の処理は、第1の実施の形態で説明し
たもの(図5)と同じである。ステップA20の処理が
終了すると、次に、ユーザは、ユーザ付加プログラムフ
ァイル410を作成する(ステップA110)。
【0113】次に、作成した抽象構文木仕様定義ファイ
ル30とユーザ付加プログラムファイル410とをプロ
グラミング言語変換プログラム開発支援装置100に入
力し、プログラミング言語変換プログラム開発支援装置
100は、抽象構文木ダンププログラムファイル40と
抽象構文木アクセスプログラムファイル50と抽象構文
木走査プログラムファイル60を生成する(ステップA
120)。この処理については、さらに詳しく後述す
る。
ル30とユーザ付加プログラムファイル410とをプロ
グラミング言語変換プログラム開発支援装置100に入
力し、プログラミング言語変換プログラム開発支援装置
100は、抽象構文木ダンププログラムファイル40と
抽象構文木アクセスプログラムファイル50と抽象構文
木走査プログラムファイル60を生成する(ステップA
120)。この処理については、さらに詳しく後述す
る。
【0114】ステップA120の処理が終了すると、次
に、ステップA40の処理に進む。ステップA40以
降、ステップA90までの処理は第1の実施の形態のも
の(図5)と同じである。そして、ステップA90の処
理を終了することにより、この実施の形態(図15)で
のプログラミング言語変換装置200を構成するすべて
の手段が作成されることとなる。
に、ステップA40の処理に進む。ステップA40以
降、ステップA90までの処理は第1の実施の形態のも
の(図5)と同じである。そして、ステップA90の処
理を終了することにより、この実施の形態(図15)で
のプログラミング言語変換装置200を構成するすべて
の手段が作成されることとなる。
【0115】次に、プログラミング言語変換プログラム
開発支援装置400において実行されるのための処理、
すなわち図19のステップA110の処理について、図
20のフローチャートを参照して詳しく説明する。
開発支援装置400において実行されるのための処理、
すなわち図19のステップA110の処理について、図
20のフローチャートを参照して詳しく説明する。
【0116】図20のフローチャートにおいて、ステッ
プC10〜C30の処理は、第1の実施の形態で説明し
たもの(図6)と同じである。ステップC30の処理が
終了すると、次に、抽象構文仕様記憶部120に記憶さ
れている表の各行について、ループ1(ステップC11
0−C110’)の処理を行う。
プC10〜C30の処理は、第1の実施の形態で説明し
たもの(図6)と同じである。ステップC30の処理が
終了すると、次に、抽象構文仕様記憶部120に記憶さ
れている表の各行について、ループ1(ステップC11
0−C110’)の処理を行う。
【0117】ループ1内の処理では、まず、ユーザ付加
プログラム検出手段420は、処理対象となっている行
のクラス名に対応するユーザ付加プログラムファイル4
10が存在するかどうか確認する(ステップC11
5)。対応するユーザ付加プログラムファイル410が
存在しなければ、ステップC140の処理に進む。
プログラム検出手段420は、処理対象となっている行
のクラス名に対応するユーザ付加プログラムファイル4
10が存在するかどうか確認する(ステップC11
5)。対応するユーザ付加プログラムファイル410が
存在しなければ、ステップC140の処理に進む。
【0118】一方、対応するユーザ付加プログラムファ
イル410が存在する場合には、ユーザ付加プログラム
検出手段420は、当該ユーザ付加プログラムファイル
210を読み込み、これを解析する(ステップC12
0)。そして、ユーザ付加プログラム検出手段420
は、ステップC120での解析の結果、"//--"で始まる
行と"//--"で始まる行で囲まれた部分が存在したらその
囲まれた部分を、また"//**"で始まる行が存在したらそ
の行から以降全てを、抽象構文仕様記憶部120の表の
クラス情報内の付加情報の部分に記憶させる(ステップ
C130)。そして、ステップC140に進む。
イル410が存在する場合には、ユーザ付加プログラム
検出手段420は、当該ユーザ付加プログラムファイル
210を読み込み、これを解析する(ステップC12
0)。そして、ユーザ付加プログラム検出手段420
は、ステップC120での解析の結果、"//--"で始まる
行と"//--"で始まる行で囲まれた部分が存在したらその
囲まれた部分を、また"//**"で始まる行が存在したらそ
の行から以降全てを、抽象構文仕様記憶部120の表の
クラス情報内の付加情報の部分に記憶させる(ステップ
C130)。そして、ステップC140に進む。
【0119】ステップC140では、抽象構文木アクセ
スプログラム生成手段430は、抽象構文木仕様記憶部
120内の表の各行に対して、対応するファイルを生成
する。そして、抽象構文仕様記憶部120に次の行があ
れば、次の行を処理対象としてループ1の処理を繰り返
し、次の行がなければ、ループ1を抜けることとなる。
ここで、ループ1を抜けたときに、抽象構文木アクセス
プログラム生成手段430によって抽象構文木アクセス
プログラムファイル50が作成されることとなる。
スプログラム生成手段430は、抽象構文木仕様記憶部
120内の表の各行に対して、対応するファイルを生成
する。そして、抽象構文仕様記憶部120に次の行があ
れば、次の行を処理対象としてループ1の処理を繰り返
し、次の行がなければ、ループ1を抜けることとなる。
ここで、ループ1を抜けたときに、抽象構文木アクセス
プログラム生成手段430によって抽象構文木アクセス
プログラムファイル50が作成されることとなる。
【0120】ループ1(ステップC110−C11
0’)を抜けると、次に、ステップC50の処理に進
む。ステップC50以降、ステップC60までの処理は
第1の実施の形態のもの(図5)と同じである。そし
て、ステップC60の処理を終了することにより、この
フローチャートの処理を終了する。このフローチャート
の処理が終了した場合には、次に上記したステップA4
0の処理が行われることとなる。
0’)を抜けると、次に、ステップC50の処理に進
む。ステップC50以降、ステップC60までの処理は
第1の実施の形態のもの(図5)と同じである。そし
て、ステップC60の処理を終了することにより、この
フローチャートの処理を終了する。このフローチャート
の処理が終了した場合には、次に上記したステップA4
0の処理が行われることとなる。
【0121】なお、上記のようにして開発されたプログ
ラミング言語変換装置200の動作は、第1の実施の形
態で説明した、図7のフローチャートに示すものと実質
的に同一である。
ラミング言語変換装置200の動作は、第1の実施の形
態で説明した、図7のフローチャートに示すものと実質
的に同一である。
【0122】以下、この実施の形態を、具体的な例を示
して説明する。ここでは、抽象構文木仕様定義ファイル
30として図3に示すファイルを用い、ユーザ付加プロ
グラムファイル410とし図19に示すファイルが"Ex
p.java"というファイル名の場合の、プログラミング言
語変換プログラム開発支援装置100の動作を説明す
る。なお、プログラミング言語開発支援装置100が生
成する抽象構文木ダンププログラムファイル40と抽象
構文木アクセスプログラム50と抽象構文木プログラム
ファイル60を実現するプログラミング言語は、第1の
実施の形態の具体例と同じくJava言語を用いるもの
とする。
して説明する。ここでは、抽象構文木仕様定義ファイル
30として図3に示すファイルを用い、ユーザ付加プロ
グラムファイル410とし図19に示すファイルが"Ex
p.java"というファイル名の場合の、プログラミング言
語変換プログラム開発支援装置100の動作を説明す
る。なお、プログラミング言語開発支援装置100が生
成する抽象構文木ダンププログラムファイル40と抽象
構文木アクセスプログラム50と抽象構文木プログラム
ファイル60を実現するプログラミング言語は、第1の
実施の形態の具体例と同じくJava言語を用いるもの
とする。
【0123】抽象構文木仕様解析手段110は、第1の
実施の形態での具体例と同じように動作して抽象構文木
仕様定義ファイル30を解析し、その解析結果の表を抽
象構文仕様記憶部120に記憶させる。また、意味検査
手段120も、第1の実施の形態での具体例と同じよう
に動作して、抽象構文仕様記憶部120に記憶されてい
る抽象構文木仕様に矛盾がないかどうかをチェックす
る。
実施の形態での具体例と同じように動作して抽象構文木
仕様定義ファイル30を解析し、その解析結果の表を抽
象構文仕様記憶部120に記憶させる。また、意味検査
手段120も、第1の実施の形態での具体例と同じよう
に動作して、抽象構文仕様記憶部120に記憶されてい
る抽象構文木仕様に矛盾がないかどうかをチェックす
る。
【0124】次に、ユーザ付加プログラム検出手段42
0は、図8の表の各行に対して対応するユーザ付加プロ
グラムがあるかチェックする(ステップC110)。抽
象構文木アクセスプログラム50を実現するプログラム
言語がJava言語の場合、図8のクラス名が"Exp"で
ある行に対して"Exp.java"という名のファイルが対応す
るユーザ付加プログラムファイル410となる。
0は、図8の表の各行に対して対応するユーザ付加プロ
グラムがあるかチェックする(ステップC110)。抽
象構文木アクセスプログラム50を実現するプログラム
言語がJava言語の場合、図8のクラス名が"Exp"で
ある行に対して"Exp.java"という名のファイルが対応す
るユーザ付加プログラムファイル410となる。
【0125】図18に示すユーザ付加プログラムファイ
ル410には、"//--"で始まる行と"//--"で囲まれた部
分が存在するので、ユーザ付加プログラム検出手段42
0は、この部分を抽象構文木仕様記憶部120内の表の
Expの行のクラス情報の下の付加情報の部分に追加す
る。さらに、"//**"で始まる行が存在するので、ユーザ
付加プログラム検出手段420は、この行以降も抽象構
文木仕様記憶部120内の表のExpの行のクラス情報の
下の付加情報の部分に追加する(ステップC120、C
130)。このような処理によって、抽象構文木仕様記
憶部120内の表は、図21に示す状態となる。但し、
図21内で「略」となっている部分の記述は省略してあ
る。
ル410には、"//--"で始まる行と"//--"で囲まれた部
分が存在するので、ユーザ付加プログラム検出手段42
0は、この部分を抽象構文木仕様記憶部120内の表の
Expの行のクラス情報の下の付加情報の部分に追加す
る。さらに、"//**"で始まる行が存在するので、ユーザ
付加プログラム検出手段420は、この行以降も抽象構
文木仕様記憶部120内の表のExpの行のクラス情報の
下の付加情報の部分に追加する(ステップC120、C
130)。このような処理によって、抽象構文木仕様記
憶部120内の表は、図21に示す状態となる。但し、
図21内で「略」となっている部分の記述は省略してあ
る。
【0126】次に、抽象構文木アクセスプログラム生成
手段430は、抽象構文木仕様記憶部120内の表の各
行に対して、対応するプログラムファイルを生成する
(ステップC140)。図8の場合を例とすると、全部
で11個のファイルからなる抽象構文木アクセスプログ
ラムファイル50が生成される。この場合、抽象構文木
仕様記憶部120に、クラス名がExpの行に対してはユ
ーザ定義プロクラス名の部分がExpの行に対しては、"Ex
p.java"というファイ名で、図22に示すファイルが生
成される。一方、"Exp.java"以外のファイルは、第1の
実施の形態の具体例で生成したファイルと同じファイル
が生成される。
手段430は、抽象構文木仕様記憶部120内の表の各
行に対して、対応するプログラムファイルを生成する
(ステップC140)。図8の場合を例とすると、全部
で11個のファイルからなる抽象構文木アクセスプログ
ラムファイル50が生成される。この場合、抽象構文木
仕様記憶部120に、クラス名がExpの行に対してはユ
ーザ定義プロクラス名の部分がExpの行に対しては、"Ex
p.java"というファイ名で、図22に示すファイルが生
成される。一方、"Exp.java"以外のファイルは、第1の
実施の形態の具体例で生成したファイルと同じファイル
が生成される。
【0127】なお、抽象構文木ダンププログラム生成手
段140と抽象構文木走査プログラム生成手段160は
第1の実施の形態と同様に動作し、第1の実施の形態と
同様の抽象構文木ダンププログラムファイル40と抽象
構文木走査プログラムファイル60とが、それぞれ生成
される。
段140と抽象構文木走査プログラム生成手段160は
第1の実施の形態と同様に動作し、第1の実施の形態と
同様の抽象構文木ダンププログラムファイル40と抽象
構文木走査プログラムファイル60とが、それぞれ生成
される。
【0128】以上説明したように、この実施の形態で
は、プログラミング言語変換プログラム開発支援装置4
00は、抽象構文木仕様定義ファイル30を入力とする
と共に、ユーザ付加プログラムファイル410を入力と
している。そして、抽象構文木アクセスプログラム生成
手段430は、ユーザ付加プログラム410に記述して
ある内容を反映して、抽象構文木アクセスプログラムフ
ァイル50を生成している。このため、ユーザの記述に
よって抽象構文木アクセス手段230の機能を拡張する
ことができるようになる。
は、プログラミング言語変換プログラム開発支援装置4
00は、抽象構文木仕様定義ファイル30を入力とする
と共に、ユーザ付加プログラムファイル410を入力と
している。そして、抽象構文木アクセスプログラム生成
手段430は、ユーザ付加プログラム410に記述して
ある内容を反映して、抽象構文木アクセスプログラムフ
ァイル50を生成している。このため、ユーザの記述に
よって抽象構文木アクセス手段230の機能を拡張する
ことができるようになる。
【0129】[実施の形態の変形]本発明は、上記の第
1、第2の実施の形態に限られず、種々の変形、応用が
可能である。以下、本発明に適用可能な上記の実施の形
態の変形態様について、説明する。
1、第2の実施の形態に限られず、種々の変形、応用が
可能である。以下、本発明に適用可能な上記の実施の形
態の変形態様について、説明する。
【0130】上記の第1、第2の実施の形態では、プロ
グラミング言語変換プログラム開発支援装置100、4
00は、抽象構文木ダンププログラムファイル40、抽
象構文木アクセスプログラムファイル50及び抽象構文
木走査プログラムファイル60の3つを生成するものと
していた。また、抽象構文木走査プログラムファイル6
0に基づいて、型検査プログラム編集エディタ62とコ
ード生成プログラム編集エディタ65とが、それぞれ型
検査プログラムファイル63、コード生成プログラムフ
ァイル66を生成するものとしていた。しかしながら、
本発明は、これらの一部のみを生成してプログラミング
言語変換プログラムの開発を支援するものとしてもよ
い。
グラミング言語変換プログラム開発支援装置100、4
00は、抽象構文木ダンププログラムファイル40、抽
象構文木アクセスプログラムファイル50及び抽象構文
木走査プログラムファイル60の3つを生成するものと
していた。また、抽象構文木走査プログラムファイル6
0に基づいて、型検査プログラム編集エディタ62とコ
ード生成プログラム編集エディタ65とが、それぞれ型
検査プログラムファイル63、コード生成プログラムフ
ァイル66を生成するものとしていた。しかしながら、
本発明は、これらの一部のみを生成してプログラミング
言語変換プログラムの開発を支援するものとしてもよ
い。
【0131】上記の第1、第2の実施の形態では、プロ
グラミング言語変換プログラム開発支援装置100、4
00は、入力された抽象構文木仕様定義ファイル30に
基づいて、抽象構文木ダンププログラムファイル40を
作成していた。そして、これをコンパイラ70でコンパ
イルし、プログラミング言語変換装置200のメモリの
所定の領域に記憶させることにより、抽象構文木ダンプ
手段90を実現していた。しかしながら、プログラミン
グ言語変換プログラム開発支援装置100、400が抽
象構文木ダンプファイルプログラム40を作成せず、プ
ログラミング言語変換装置200に抽象構文木ダンプ手
段90を付随させないものとしても、プログラミング言
語変換装置200としては動作することが可能である。
グラミング言語変換プログラム開発支援装置100、4
00は、入力された抽象構文木仕様定義ファイル30に
基づいて、抽象構文木ダンププログラムファイル40を
作成していた。そして、これをコンパイラ70でコンパ
イルし、プログラミング言語変換装置200のメモリの
所定の領域に記憶させることにより、抽象構文木ダンプ
手段90を実現していた。しかしながら、プログラミン
グ言語変換プログラム開発支援装置100、400が抽
象構文木ダンプファイルプログラム40を作成せず、プ
ログラミング言語変換装置200に抽象構文木ダンプ手
段90を付随させないものとしても、プログラミング言
語変換装置200としては動作することが可能である。
【0132】上記の第1、第2の実施の形態では、プロ
グラミング言語変換プログラム開発支援装置100は、
プログラム制御により動作するデータ処理装置によって
構成され、所定のプログラムを実行することにより、抽
象構文木仕様解析手段110、意味検査手段130、抽
象構文木ダンププログラム生成手段140、抽象構文木
アクセスプログラム生成手段150及び抽象構文木走査
プログラム生成手段160、並びにユーザ付加プログラ
ム検出手段420の機能を実現するものとしていた。ま
た、型検査プログラム編集エディタ62及びコード生成
プログラムエディタ65は、プログラム制御により動作
するデータ処理装置で実行されるものとしていた。
グラミング言語変換プログラム開発支援装置100は、
プログラム制御により動作するデータ処理装置によって
構成され、所定のプログラムを実行することにより、抽
象構文木仕様解析手段110、意味検査手段130、抽
象構文木ダンププログラム生成手段140、抽象構文木
アクセスプログラム生成手段150及び抽象構文木走査
プログラム生成手段160、並びにユーザ付加プログラ
ム検出手段420の機能を実現するものとしていた。ま
た、型検査プログラム編集エディタ62及びコード生成
プログラムエディタ65は、プログラム制御により動作
するデータ処理装置で実行されるものとしていた。
【0133】これに対して、プログラミング言語変換プ
ログラム開発支援装置100の各手段による処理を行わ
せ、各手段の機能を実現するためのプログラム、並びに
型検査プログラム編集エディタ62及びコード生成プロ
グラムエディタ65のプログラムの全部または一部を、
CD−ROMなどのコンピュータ読み取り可能な記録媒
体に格納して配布してもよい。そして、この記録媒体に
記録されたプログラムを汎用コンピュータで読み取らせ
て実行させることにより、上記のプログラミング言語変
換プログラム開発支援系のシステムを構成することがで
きるようになる。
ログラム開発支援装置100の各手段による処理を行わ
せ、各手段の機能を実現するためのプログラム、並びに
型検査プログラム編集エディタ62及びコード生成プロ
グラムエディタ65のプログラムの全部または一部を、
CD−ROMなどのコンピュータ読み取り可能な記録媒
体に格納して配布してもよい。そして、この記録媒体に
記録されたプログラムを汎用コンピュータで読み取らせ
て実行させることにより、上記のプログラミング言語変
換プログラム開発支援系のシステムを構成することがで
きるようになる。
【0134】
【発明の効果】以上説明したように、本発明によれば、
中間結果として抽象構文木を使用するプログラミング言
語変換プログラムの全部または一部を少ない工数で開発
することができる。
中間結果として抽象構文木を使用するプログラミング言
語変換プログラムの全部または一部を少ない工数で開発
することができる。
【0135】また、ユーザが記述したユーザ付加プログ
ラムの内容を反映して抽象構文木アクセスプログラムを
作成できるようにしたことによって、抽象構文木アクセ
スプログラムの機能を拡張することができるようにな
る。
ラムの内容を反映して抽象構文木アクセスプログラムを
作成できるようにしたことによって、抽象構文木アクセ
スプログラムの機能を拡張することができるようにな
る。
【0136】さらに、ダンププログラムを生成すること
ができるようにすることで、プログラミング言語の変換
時に中間結果として内部記憶される抽象構文木の状態を
ユーザが確認できるようになる。
ができるようにすることで、プログラミング言語の変換
時に中間結果として内部記憶される抽象構文木の状態を
ユーザが確認できるようになる。
【図1】本発明の第1の実施の形態にかかるプログラミ
ング言語変換プログラム開発支援系のシステム、及びこ
のシステムから得られたプログラムによって実現される
プログラミング言語変換装置の機能ブロック図である。
ング言語変換プログラム開発支援系のシステム、及びこ
のシステムから得られたプログラムによって実現される
プログラミング言語変換装置の機能ブロック図である。
【図2】図1のプログラミング言語開発支援装置の構成
を詳細に示すブロック図である。
を詳細に示すブロック図である。
【図3】図1、図2の抽象構文木仕様定義ファイルの記
述例を示す図である。
述例を示す図である。
【図4】図2の抽象構文仕様記憶部の記憶内容を示す図
である。
である。
【図5】図1のプログラミング言語変換プログラム開発
支援系のシステムにおいて、抽象構文木定義ファイルに
基づいてプログラムの開発を支援し、プログラミング言
語変換装置を生成するまでの流れを示すフローチャート
である。
支援系のシステムにおいて、抽象構文木定義ファイルに
基づいてプログラムの開発を支援し、プログラミング言
語変換装置を生成するまでの流れを示すフローチャート
である。
【図6】図1、図2のプログラミング言語変換プログラ
ム開発支援装置において実行される処理を示すフローチ
ャートである。
ム開発支援装置において実行される処理を示すフローチ
ャートである。
【図7】図1のプログラミング言語変換装置の動作を示
すフローチャートである。
すフローチャートである。
【図8】本発明の第1の実施の形態の具体例において、
抽象構文木仕様記憶部に記憶される表を示す図である。
抽象構文木仕様記憶部に記憶される表を示す図である。
【図9】本発明の第1の実施の形態の具体例において作
成される抽象構文木アクセスプログラムファイルを示す
図である。
成される抽象構文木アクセスプログラムファイルを示す
図である。
【図10】本発明の第1の実施の形態の具体例において
作成される抽象構文木アクセスプログラムファイルを示
す図である。
作成される抽象構文木アクセスプログラムファイルを示
す図である。
【図11】本発明の第1の実施の形態の具体例において
作成される抽象構文木走査プログラムファイルを示す図
である。
作成される抽象構文木走査プログラムファイルを示す図
である。
【図12】(a)は、本発明の第1の実施の形態の具体
例における抽象構文木記憶部に記憶される抽象構文木の
状態を、(b)は、(a)の抽象構文木の状態を抽象構
文木ダンプ手段によってダンプした抽象構文木ダンプフ
ァイルを示す図である。
例における抽象構文木記憶部に記憶される抽象構文木の
状態を、(b)は、(a)の抽象構文木の状態を抽象構
文木ダンプ手段によってダンプした抽象構文木ダンプフ
ァイルを示す図である。
【図13】本発明の第1の実施の形態の具体例における
型検査用アクションの記述例を示す図である。
型検査用アクションの記述例を示す図である。
【図14】本発明の第1の実施の形態の具体例における
コード生成用アクションの記述例を示す図である。
コード生成用アクションの記述例を示す図である。
【図15】本発明の第2の実施の形態にかかるプログラ
ミング言語変換プログラム開発支援系のシステム、及び
このシステムから得られたプログラムによって実現され
るプログラミング言語変換装置の機能ブロック図であ
る。
ミング言語変換プログラム開発支援系のシステム、及び
このシステムから得られたプログラムによって実現され
るプログラミング言語変換装置の機能ブロック図であ
る。
【図16】図15のプログラミング言語開発支援装置の
構成を詳細に示すブロック図である。
構成を詳細に示すブロック図である。
【図17】図15、図16のユーザ付加プログラムファ
イルの文法を示す図である。
イルの文法を示す図である。
【図18】図15、図16のユーザ付加プログラムファ
イルの記述例を示す図である。
イルの記述例を示す図である。
【図19】図15のプログラミング言語変換プログラム
開発支援系のシステムにおいて、抽象構文木定義ファイ
ルに基づいてプログラムの開発を支援し、プログラミン
グ言語変換装置を生成するまでの流れを示すフローチャ
ートである。
開発支援系のシステムにおいて、抽象構文木定義ファイ
ルに基づいてプログラムの開発を支援し、プログラミン
グ言語変換装置を生成するまでの流れを示すフローチャ
ートである。
【図20】図15、図16のプログラミング言語変換プ
ログラム開発支援装置において実行される処理を示すフ
ローチャートである。
ログラム開発支援装置において実行される処理を示すフ
ローチャートである。
【図21】本発明の第2の実施の形態の具体例におい
て、抽象構文木仕様記憶部に記憶される表を示す図であ
る。
て、抽象構文木仕様記憶部に記憶される表を示す図であ
る。
【図22】本発明の第2の実施の形態の具体例において
作成される抽象構文木アクセスプログラムファイルを示
す図である。
作成される抽象構文木アクセスプログラムファイルを示
す図である。
【図23】従来例にかかるプログラミング言語変換装置
の構成を示すブロック図である。
の構成を示すブロック図である。
10 上位言語入力ファイル 20 下位言語プログラムファイル 30 抽象構文木仕様定義ファイル 40 抽象構文木ダンププログラムファイル 50 抽象構文木アクセスプログラムファイル 60 抽象構文木プログラムファイル 61 型検査用アクション 62 型検査プログラム編集エディタ 63 型検査プログラムファイル 64 コード生成用アクション 65 コード生成プログラム編集エディタ 66 コード生成プログラムファイル 70 コンパイラ 80 抽象構文木ダンプファイル 90 抽象構文木ダンプ手段 100 プログラミング言語変換プログラム開発支援装
置 110 抽象構文木仕様解析手段 120 抽象構文仕様記憶部 130 意味検査手段 140 抽象構文木ダンププログラム生成手段 150 抽象構文木アクセスプログラム生成手段 160 抽象構文木走査プログラム生成手段 200 プログラミング言語変換装置 210 構文解析手段 220 抽象構文木記憶部 230 抽象構文木アクセス手段 240 型検査手段 250 コード生成手段 400 プログラミング言語変換プログラム開発支援装
置 410 ユーザ付加プログラムファイル 420 ユーザ付加プログラム検出手段 430 抽象構文木アクセスプログラム生成手段
置 110 抽象構文木仕様解析手段 120 抽象構文仕様記憶部 130 意味検査手段 140 抽象構文木ダンププログラム生成手段 150 抽象構文木アクセスプログラム生成手段 160 抽象構文木走査プログラム生成手段 200 プログラミング言語変換装置 210 構文解析手段 220 抽象構文木記憶部 230 抽象構文木アクセス手段 240 型検査手段 250 コード生成手段 400 プログラミング言語変換プログラム開発支援装
置 410 ユーザ付加プログラムファイル 420 ユーザ付加プログラム検出手段 430 抽象構文木アクセスプログラム生成手段
Claims (21)
- 【請求項1】中間結果として記憶される抽象構文木を使
用して、第1のプログラミング言語で記述されたプログ
ラムを第2のプログラミング言語で記述されたプログラ
ムに変換するためのプログラミング言語変換プログラム
の開発を支援するためのシステムであって、 前記抽象構文木の仕様を入力し、該入力した抽象構文木
仕様を解析する抽象構文木仕様解析手段と、 前記抽象構文木仕様解析手段の解析結果を記憶する抽象
構文木仕様記憶手段と、 前記抽象構文木仕様記憶手段に記憶した前記抽象構文木
仕様の解析結果に基づいて、前記第2のプログラミング
言語へ変換するときに前記記憶された抽象構文木を参照
するための方法を記述したプログラムを生成する抽象構
文木アクセスプログラム生成手段と、 前記抽象構文木仕様記憶手段に記憶した前記抽象構文木
仕様の解析結果に基づいて、前記第2のプログラミング
言語へ変換するときに前記記憶された抽象構文木をたど
るための方法を記述したプログラムを生成する抽象構文
木走査プログラム生成手段と、 を備えることを特徴とするプログラミング言語変換プロ
グラム開発支援システム。 - 【請求項2】前記抽象構文木走査プログラム生成手段が
生成したプログラムに、該プログラムの実行により前記
抽象構文木をたどったときに情報を収集して、該収集し
た情報に基づいて前記中間結果として記憶された抽象構
文木がもつ型に関する情報を検査する部分を記述した型
検査アクションを付加することによって、前記抽象構文
木アクセスプログラム生成手段が生成したプログラムを
参照しながら前記中間結果として記憶された抽象構文木
がもつ型に関する情報を検査するためのプログラムを生
成する型検査プログラム生成手段と、 前記抽象構文木走査プログラム生成手段が生成したプロ
グラムに、該プログラムの実行により前記抽象構文木を
たどったときに情報を収集して、該収集した情報に基づ
いて前記中間結果として記憶された抽象構文木から前記
第2のプログラミング言語によるコード情報を生成する
部分を記述したコード生成アクションを付加することに
よって、前記抽象構文木アクセスプログラム生成手段が
生成したプログラムを参照しながら前記中間結果として
記憶された抽象構文木から前記第2のプログラミング言
語によるコード情報を生成するためのプログラムを生成
するコード生成プログラム生成手段とをさらに備えるこ
とを特徴とする請求項1に記載のプログラミング言語変
換プログラム開発支援システム。 - 【請求項3】前記抽象構文木アクセスプログラム生成手
段により生成されるプログラムに対してユーザが定義し
たプログラムを入力し、該入力したユーザが定義したプ
ログラムを解析して、その解析結果を前記抽象構文木仕
様記憶手段に記憶させるユーザ定義プログラム検出手段
をさらに備えることを特徴とする請求項1または2に記
載のプログラミング言語変換プログラム開発支援システ
ム。 - 【請求項4】前記抽象構文木仕様記憶手段に記憶した前
記抽象構文木仕様の解析結果に基づいて、プログラミン
グ言語の変換時に中間結果として記憶された抽象構文木
の状態をダンプするための方法を記述したプログラムを
生成する抽象構文木ダンププログラム生成手段をさらに
備えることを特徴とする請求項1乃至3のいずれか1項
に記載のプログラミング言語変換プログラム開発支援シ
ステム。 - 【請求項5】前記抽象構文木仕様記憶手段に記憶した前
記抽象構文木仕様の解析結果に矛盾がないかどうかを検
査する意味検査手段をさらに備えることを特徴とする請
求項1乃至4のいずれか1項に記載のプログラミング言
語変換プログラム開発支援システム。 - 【請求項6】前記抽象構文木アクセスプログラム生成手
段により生成されるプログラムと前記抽象構文木走査プ
ログラム生成手段により生成されるプログラムとは、オ
ブジェクト指向プログラミング言語により記述され、 前記抽象構文木仕様解析手段は、前記抽象構文木仕様に
含まれるクラス名と、該クラス名に対応するクラスタイ
プと、該クラス名に対応するクラスに関する情報とを認
識して抽出するものであり、 前記抽象構文木仕様記憶手段は、前記抽象構文木仕様解
析手段によって抽出されたクラス名と、クラスタイプ
と、クラスに関する情報とを、それぞれ表の各行に対応
付けて記憶することを特徴とする請求項1乃至5のいず
れか1項に記載のプログラミング言語変換プログラム開
発支援システム。 - 【請求項7】前記抽象構文木アクセスプログラム生成手
段は、前記抽象構文木仕様記憶手段の表の各行のそれぞ
れに対して、プログラムファイルを生成することを特徴
とする請求項6に記載のプログラミング言語変換プログ
ラム開発支援システム。 - 【請求項8】中間結果として記憶される抽象構文木を使
用して、第1のプログラミング言語で記述されたプログ
ラムを第2のプログラミング言語で記述されたプログラ
ムに変換するためのプログラミング言語変換プログラム
の開発を支援するためのシステムであって、 前記抽象構文木の仕様を入力し、該入力した抽象構文木
仕様を解析する抽象構文木仕様解析手段と、 前記抽象構文木仕様解析手段の解析結果を記憶する抽象
構文木仕様記憶手段と、 前記抽象構文木仕様記憶手段に記憶した前記抽象構文木
仕様の解析結果に基づいて、前記第2のプログラミング
言語へ変換するときに前記記憶された抽象構文木を参照
するための方法を記述したプログラムを生成する抽象構
文木アクセスプログラム生成手段とを備えることを特徴
とするプログラミング言語変換プログラム開発支援シス
テム。 - 【請求項9】中間結果として記憶される抽象構文木を使
用して、第1のプログラミング言語で記述されたプログ
ラムを第2のプログラミング言語で記述されたプログラ
ムに変換するためのプログラミング言語変換プログラム
の開発を支援するためのシステムであって、 前記抽象構文木の仕様を入力し、該入力した抽象構文木
仕様を解析する抽象構文木仕様解析手段と、 前記抽象構文木仕様解析手段の解析結果を記憶する抽象
構文木仕様記憶手段と、 前記抽象構文木仕様記憶手段に記憶した前記抽象構文木
仕様の解析結果に基づいて、前記第2のプログラミング
言語へ変換するときに前記記憶された抽象構文木をたど
るための方法を記述したプログラムを生成する抽象構文
木走査プログラム生成手段とを備えることを特徴とする
プログラミング言語変換プログラム開発支援システム。 - 【請求項10】前記抽象構文木走査プログラム生成手段
が生成したプログラムに、該プログラムの実行により前
記抽象構文木をたどったときに情報を収集して、該収集
した情報に基づいて前記中間結果として記憶された抽象
構文木がもつ型に関する情報を検査する部分を記述した
型検査アクションを付加することによって、前記抽象構
文木アクセスプログラム生成手段が生成したプログラム
を参照しながら前記中間結果として記憶された抽象構文
木がもつ型に関する情報を検査するためのプログラムを
生成する型検査プログラム生成手段をさらに備えること
を特徴とする請求項9に記載のプログラミング言語変換
プログラム開発支援システム。 - 【請求項11】前記抽象構文木走査プログラム生成手段
が生成したプログラムに、該プログラムの実行により前
記抽象構文木をたどったときに情報を収集して、該収集
した情報に基づいて前記中間結果として記憶された抽象
構文木から前記第2のプログラミング言語によるコード
情報を生成する部分を記述したコード生成アクションを
付加することによって、前記抽象構文木アクセスプログ
ラム生成手段が生成したプログラムを参照しながら前記
中間結果として記憶された抽象構文木から前記第2のプ
ログラミング言語によるコード情報を生成するためのプ
ログラムを生成するコード生成プログラム生成手段とを
さらに備えることを特徴とする請求項9または10に記
載のプログラミング言語変換プログラム開発支援システ
ム。 - 【請求項12】中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するための方法であって、 前記抽象構文木の仕様を入力し、該入力した抽象構文木
仕様を解析する抽象構文木仕様解析ステップと、 前記抽象構文木仕様解析ステップでの解析結果を記憶す
る抽象構文木仕様記憶ステップと、 前記抽象構文木仕様記憶ステップで記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
参照するための方法を記述したプログラムを生成する抽
象構文木アクセスプログラム生成ステップと、 前記抽象構文木仕様記憶ステップで記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
たどるための方法を記述したプログラムを生成する抽象
構文木走査プログラム生成ステップとを含むことを特徴
とするプログラミング言語変換プログラム開発支援方
法。 - 【請求項13】前記抽象構文木走査プログラム生成ステ
ップで生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成ステップで生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査するためのプロ
グラムを生成する型検査プログラム生成ステップと、 前記抽象構文木走査プログラム生成ステップで生成した
プログラムに、該プログラムの実行により前記抽象構文
木をたどったときに情報を収集して、該収集した情報に
基づいて前記中間結果として記憶された抽象構文木から
前記第2のプログラミング言語によるコード情報を生成
する部分を記述したコード生成アクションを付加するこ
とによって、前記抽象構文木アクセスプログラム生成ス
テップで生成したプログラムを参照しながら前記中間結
果として記憶された抽象構文木から前記第2のプログラ
ミング言語によるコード情報を生成するためのプログラ
ムを生成するコード生成プログラム生成ステップとをさ
らに含むことを特徴とする請求項12に記載のプログラ
ミング言語変換プログラム開発支援方法。 - 【請求項14】前記抽象構文木アクセスプログラム生成
ステップで生成されるプログラムに対してユーザが定義
したプログラムを入力し、該入力したユーザが定義した
プログラムを解析して、その解析結果を前記抽象構文木
仕様記憶ステップで記憶した抽象構文木仕様と対応させ
て記憶させるユーザ定義プログラム検出ステップをさら
に含むことを特徴とする請求項12または13に記載の
プログラミング言語変換プログラム開発支援方法。 - 【請求項15】前記抽象構文木仕様記憶ステップで記憶
した前記抽象構文木仕様の解析結果に基づいて、プログ
ラミング言語の変換時に中間結果として記憶された抽象
構文木の状態をダンプするための方法を記述したプログ
ラムを生成する抽象構文木ダンププログラム生成ステッ
プをさらに含むことを特徴とする請求項12乃至14の
いずれか1項に記載のプログラミング言語変換プログラ
ム開発支援方法。 - 【請求項16】中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するための方法であって、 前記抽象構文木の仕様を定義した抽象構文木仕様定義フ
ァイルを作成するステップと、 前記抽象構文木仕様定義ファイルを読み込んで、これを
解析するステップと、 前記抽象構文木仕様定義ファイルの解析結果を記憶する
ステップと、 記憶した前記抽象構文木仕様定義ファイルの解析結果に
基づいて、プログラミング言語の変換時に前記抽象構文
木を参照するための方法を記述した抽象構文木アクセス
プログラムを生成するステップと、 記憶した前記抽象構文木仕様定義ファイルの解析結果に
基づいて、プログラミング言語の変換時に前記抽象構文
木をたどるための方法を記述した抽象構文木走査プログ
ラムを生成するステップと、 記憶した前記抽象構文木仕様定義ファイルの解析結果に
基づいて、プログラミング言語の変換時に中間結果とし
て記憶された抽象構文木の状態をダンプするための抽象
構文木ダンププログラムを生成するステップと、 生成された抽象構文木ダンププログラムの実行により、
前記中間結果として記憶された抽象構文木の状態をダン
プして、前記抽象構文木が適切に作成されているかどう
かを確認するステップと、 生成された前記抽象構文木走査プログラムに、前記抽象
構文木走査プログラムの実行により前記抽象構文木をた
どったときに情報を収集して、該収集した情報に基づい
て前記中間結果として記憶された抽象構文木がもつ型に
関する情報を検査する部分を記述した型検査アクション
を付加することによって、生成された前記抽象構文木ア
クセスプログラムを参照しながら前記中間結果として記
憶された抽象構文木がもつ型に関する情報を検査するた
めの型検査プログラムを生成するステップと、 生成された前記抽象構文木走査プログラムに、前記抽象
構文木走査プログラムの実行により前記抽象構文木をた
どったときに情報を収集して、該収集した情報に基づい
て前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成する部
分を記述したコード生成アクションを付加することによ
って、生成された前記抽象構文木アクセスプログラムを
参照しながら前記中間結果として記憶された抽象構文木
から前記第2のプログラミング言語によるコード情報を
生成するためのコード生成プログラムを生成するステッ
プとを含むことを特徴とするプログラミング言語変換プ
ログラム開発支援方法。 - 【請求項17】中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するための方法であって、 前記抽象構文木の仕様を定義した抽象構文木仕様定義フ
ァイルを作成するステップと、 前記第1のプログラミング言語に対してユーザが定義し
たプログラムの文法を記述したユーザ付加プログラムフ
ァイルを作成するステップと、 前記抽象構文木仕様定義ファイルを読み込んで、これを
解析するステップと、 前記抽象構文木仕様定義ファイルの解析結果を記憶する
ステップと、 前記ユーザ付加プログラムファイルを参照しながら、記
憶した前記抽象構文木仕様定義ファイルの解析結果に基
づいて、プログラミング言語の変換時に前記抽象構文木
を参照するための方法を記述した抽象構文木アクセスプ
ログラムを生成するステップと、 記憶した前記抽象構文木仕様定義ファイルの解析結果に
基づいて、プログラミング言語の変換時に前記抽象構文
木をたどるための方法を記述した抽象構文木走査プログ
ラムを生成するステップと、 記憶した前記抽象構文木仕様定義ファイルの解析結果に
基づいて、プログラミング言語の変換時に中間結果とし
て記憶された抽象構文木の状態をダンプするための抽象
構文木ダンププログラムを生成するステップと、 生成された抽象構文木ダンププログラムの実行により、
前記中間結果として記憶された抽象構文木の状態をダン
プして、前記抽象構文木が適切に作成されているかどう
かを確認するステップと、 生成された前記抽象構文木走査プログラムに、前記抽象
構文木走査プログラムの実行により前記抽象構文木をた
どったときに情報を収集して、該収集した情報に基づい
て前記中間結果として記憶された抽象構文木がもつ型に
関する情報を検査する部分を記述した型検査アクション
を付加することによって、生成された前記抽象構文木ア
クセスプログラムを参照しながら前記中間結果として記
憶された抽象構文木がもつ型に関する情報を検査するた
めの型検査プログラムを生成するステップと、 生成された前記抽象構文木走査プログラムに、前記抽象
構文木走査プログラムの実行により前記抽象構文木をた
どったときに情報を収集して、該収集した情報に基づい
て前記中間結果として記憶された抽象構文木から前記第
2のプログラミング言語によるコード情報を生成する部
分を記述したコード生成アクションを付加することによ
って、生成された前記抽象構文木アクセスプログラムを
参照しながら前記中間結果として記憶された抽象構文木
から前記第2のプログラミング言語によるコード情報を
生成するためのコード生成プログラムを生成するステッ
プとを含むことを特徴とするプログラミング言語変換プ
ログラム開発支援方法。 - 【請求項18】中間結果として記憶される抽象構文木を
使用して、第1のプログラミング言語で記述されたプロ
グラムを第2のプログラミング言語で記述されたプログ
ラムに変換するためのプログラミング言語変換プログラ
ムの開発を支援するためのプログラムを記録した記録媒
体であって、 前記抽象構文木の仕様を入力し、該入力した抽象構文木
仕様を解析する抽象構文木仕様解析ステップと、 前記抽象構文木仕様解析ステップでの解析結果を記憶す
る抽象構文木仕様記憶ステップと、 前記抽象構文木仕様記憶ステップで記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
参照するための方法を記述したプログラムを生成する抽
象構文木アクセスプログラム生成ステップと、 前記抽象構文木仕様記憶ステップで記憶した前記抽象構
文木仕様の解析結果に基づいて、前記第2のプログラミ
ング言語へ変換するときに前記記憶された抽象構文木を
たどるための方法を記述したプログラムを生成する抽象
構文木走査プログラム生成ステップとを実行するための
プログラムを記録することを特徴とするコンピュータ読
み取り可能な記録媒体。 - 【請求項19】前記抽象構文木走査プログラム生成ステ
ップで生成したプログラムに、該プログラムの実行によ
り前記抽象構文木をたどったときに情報を収集して、該
収集した情報に基づいて前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査する部分を記述
した型検査アクションを付加することによって、前記抽
象構文木アクセスプログラム生成ステップで生成したプ
ログラムを参照しながら前記中間結果として記憶された
抽象構文木がもつ型に関する情報を検査するためのプロ
グラムを生成する型検査プログラム生成ステップと、 前記抽象構文木走査プログラム生成ステップで生成した
プログラムに、該プログラムの実行により前記抽象構文
木をたどったときに情報を収集して、該収集した情報に
基づいて前記中間結果として記憶された抽象構文木から
前記第2のプログラミング言語によるコード情報を生成
する部分を記述したコード生成アクションを付加するこ
とによって、前記抽象構文木アクセスプログラム生成ス
テップで生成したプログラムを参照しながら前記中間結
果として記憶された抽象構文木から前記第2のプログラ
ミング言語によるコード情報を生成するためのプログラ
ムを生成するコード生成プログラム生成ステップとを実
行するためのプログラムをさらに記録することを特徴と
する請求項18に記載のコンピュータ読み取り可能な記
録媒体。 - 【請求項20】前記抽象構文木アクセスプログラム生成
ステップで生成されるプログラムに対してユーザが定義
したプログラムを入力し、該入力したユーザが定義した
プログラムを解析して、その解析結果を前記抽象構文木
仕様記憶ステップで記憶した抽象構文木仕様と対応させ
て記憶させるユーザ定義プログラム検出ステップを実行
するためのプログラムをさらに記録することを特徴とす
る請求項18または19に記載のコンピュータ読み取り
可能な記録媒体。 - 【請求項21】前記抽象構文木仕様記憶ステップで記憶
した前記抽象構文木仕様の解析結果に基づいて、プログ
ラミング言語の変換時に中間結果として記憶された抽象
構文木の状態をダンプするための方法を記述したプログ
ラムを生成する抽象構文木ダンププログラム生成ステッ
プを実行するためのプログラムをさらに記録することを
特徴とする請求項18乃至20のいずれか1項に記載の
コンピュータ読み取り可能な記録媒体。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11045631A JP2000242485A (ja) | 1999-02-24 | 1999-02-24 | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP11045631A JP2000242485A (ja) | 1999-02-24 | 1999-02-24 | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000242485A true JP2000242485A (ja) | 2000-09-08 |
Family
ID=12724724
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11045631A Pending JP2000242485A (ja) | 1999-02-24 | 1999-02-24 | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP2000242485A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008527575A (ja) * | 2005-01-13 | 2008-07-24 | トムソン グローバル リソーシーズ | 複数のクエリ言語を用いて情報を検索するシステム、方法およびソフトウェア |
| CN110275709A (zh) * | 2018-03-15 | 2019-09-24 | 阿里巴巴集团控股有限公司 | 针对动态语言的处理及优化方法、装置、设备及存储介质 |
| CN112269566A (zh) * | 2020-11-03 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 脚本生成处理方法、装置、设备及系统 |
-
1999
- 1999-02-24 JP JP11045631A patent/JP2000242485A/ja active Pending
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008527575A (ja) * | 2005-01-13 | 2008-07-24 | トムソン グローバル リソーシーズ | 複数のクエリ言語を用いて情報を検索するシステム、方法およびソフトウェア |
| CN110275709A (zh) * | 2018-03-15 | 2019-09-24 | 阿里巴巴集团控股有限公司 | 针对动态语言的处理及优化方法、装置、设备及存储介质 |
| CN110275709B (zh) * | 2018-03-15 | 2023-07-25 | 斑马智行网络(香港)有限公司 | 针对动态语言的处理及优化方法、装置、设备及存储介质 |
| CN112269566A (zh) * | 2020-11-03 | 2021-01-26 | 支付宝(杭州)信息技术有限公司 | 脚本生成处理方法、装置、设备及系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| KR101098718B1 (ko) | 재사용 가능한 코드 세그먼트들을 생성 및 재사용하는 컴퓨터화된 방법 및 컴퓨터 구현 시스템, 및 컴퓨터 판독 가능 저장 매체 | |
| US7293261B1 (en) | Language-neutral representation of software code elements | |
| Gargantini et al. | A metamodel-based language and a simulation engine for abstract state machines. | |
| US20050149868A1 (en) | User interface application development program and development apparatus | |
| CN102929680A (zh) | 一种将TTCN-3脚本转换为Java源代码的方法,装置和系统 | |
| JP6845429B2 (ja) | コンパイラプログラム、情報処理装置およびコンパイル方法 | |
| US20070079299A1 (en) | Method, apparatus and program storage device for representing eclipse modeling framework (EMF) ecore models in textual form | |
| Hunt et al. | Extensible language-aware merging | |
| Vieira et al. | Analyzing dependencies in large component-based systems | |
| JP4806158B2 (ja) | マークアップ内でサブクラスを宣言的に定義し、使用するためのシステムおよび方法 | |
| Fuentes et al. | Towards executable aspect-oriented UML models | |
| JP2010140407A (ja) | ソースコード検査装置 | |
| CN118733007B (zh) | 基于Python的代码自动生成和自动检查方法 | |
| JPH0736680A (ja) | 並列化プログラム開発支援装置 | |
| JP2000242485A (ja) | プログラミング言語変換プログラム開発支援システム、方法及び記録媒体 | |
| Yiu | Checkstyle for Legacy Applications [J] | |
| CN115268907A (zh) | 一种使用json数据生成软件系统控件交互逻辑的方法 | |
| JP5399601B2 (ja) | 実装コード開発システム、及び実装コード開発プログラム | |
| Thomson | Linking Dataflow Algebra with the CaDiZ Tool | |
| WO2008015110A2 (en) | Methods, apparatus and computer programs for modelling computer programs | |
| Jung | Generator-composition for aspect-oriented domain-specific languages | |
| Jörges | The state of the art in code generation | |
| KR100846203B1 (ko) | 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체 | |
| JP2003330731A (ja) | プロジェクト管理ファイル生成装置 | |
| Limyr | Graphical editor for UML 2.0 sequence diagrams |