JPH0328932A - 拡張された言語仕様のコンパイル方式 - Google Patents
拡張された言語仕様のコンパイル方式Info
- Publication number
- JPH0328932A JPH0328932A JP16267089A JP16267089A JPH0328932A JP H0328932 A JPH0328932 A JP H0328932A JP 16267089 A JP16267089 A JP 16267089A JP 16267089 A JP16267089 A JP 16267089A JP H0328932 A JPH0328932 A JP H0328932A
- Authority
- JP
- Japan
- Prior art keywords
- compiler
- general
- special
- language
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
[産業上の利用分野]
本発明は、拡張された言語仕様のコンパイル方式に係り
、特に、COBOL,PL/I等の汎用的な言語の中に
データベース操作言語,データ通信操作言語等の特殊な
用途に対する言語が埋め込まれた形式の拡張された言語
仕様のソースプログラムを翻訳する拡張された言語仕様
のコンパイル方式に関する. [従来の技術] データベース操作言語、データ通信操作言語等の特殊な
用途に対する言語が埋め込まれた、すなわち、拡張され
た言語仕様で記述されたCOBOL,PL/I等の汎用
的高級言語の翻訳に関する従来技術として、例えば、特
開昭62−216040号公報等に記載された技術が知
られている.この従来技術は、ブリコンパイラとフンバ
イラとを備え、これらのコンパイラの直列的な分担によ
り言語翻訳を行うものである. また、他の従来技術として、COBOLやPL/Iなど
の汎用的高級言語のコンパイラの機能を拡張し、拡張さ
れた言語仕様を扱えるようにし、これにより前述のよう
な拡張された言語仕様で記述された汎用高級言語を翻訳
可能とした技術が知られている。
、特に、COBOL,PL/I等の汎用的な言語の中に
データベース操作言語,データ通信操作言語等の特殊な
用途に対する言語が埋め込まれた形式の拡張された言語
仕様のソースプログラムを翻訳する拡張された言語仕様
のコンパイル方式に関する. [従来の技術] データベース操作言語、データ通信操作言語等の特殊な
用途に対する言語が埋め込まれた、すなわち、拡張され
た言語仕様で記述されたCOBOL,PL/I等の汎用
的高級言語の翻訳に関する従来技術として、例えば、特
開昭62−216040号公報等に記載された技術が知
られている.この従来技術は、ブリコンパイラとフンバ
イラとを備え、これらのコンパイラの直列的な分担によ
り言語翻訳を行うものである. また、他の従来技術として、COBOLやPL/Iなど
の汎用的高級言語のコンパイラの機能を拡張し、拡張さ
れた言語仕様を扱えるようにし、これにより前述のよう
な拡張された言語仕様で記述された汎用高級言語を翻訳
可能とした技術が知られている。
以下、これらの従来技術によるコンパイル方式を図面に
より説明する。
より説明する。
第16図は、プリコンパイラとコンパイラとを用いる従
来技術を説明する図である。第16図において、11は
拡張された言語仕様で記述された汎用的高級言語のソー
スプログラム、34はプリコンパイラ、35はプリコン
パイラによりコンパイラが処理できる形式に変換された
中間ソースプログラム、36はプリコンパイラが出力す
る診断メッセージ、利用者の記述したソースプログラム
のリスト等の各種リスト、l2は汎用的高級言語のコン
パイラ、l6は目的プログラム、17はコンパイラが出
力する診断メッセージ、コンパイラの入力した中間ソー
スプログラムのリスト等の各種リストである. 第16図に示す従来技術おいて、例えば、拡張された言
語仕様で記述された汎用的高級言語のソースプログラム
11が,データベース操作言語が埋め込まれたPL/I
ソースプログラムであるものとし、このソースプログラ
ムを翻訳する場合の動作を説明する. 利用者は、まず、ブリコンパイラ34を起動する.ブリ
コンパイラ34は、これにより、利用者が記述したソー
スプログラム1lを解析し、該プログラム11内にエラ
ーがあれば診断メッセージ36を出力する.また、ソー
スプログラム11がエラーの無い正しいものであれば、
ブリコンパイラ34は、ソースプログラム11をPL/
I汎用コンパイラで処理できる形式、すなわちPL/I
の言語仕様の範囲内の記述に変換し、中間ソースプログ
ラム35を出力する.利用者は、次に、PL/I汎用コ
ンパイラl2を起動する,PL/I汎用コンパイラl2
は、この中間ソースプログラム35を解析し、該中間ソ
ースプログラム35にエラーがあれば診断メッセージl
7を出力する.また、中間ソースプログラム35がエラ
ーの無い正しいものであれば,PL/I汎用コンパイラ
l2は、目的プログラム16を出力する。
来技術を説明する図である。第16図において、11は
拡張された言語仕様で記述された汎用的高級言語のソー
スプログラム、34はプリコンパイラ、35はプリコン
パイラによりコンパイラが処理できる形式に変換された
中間ソースプログラム、36はプリコンパイラが出力す
る診断メッセージ、利用者の記述したソースプログラム
のリスト等の各種リスト、l2は汎用的高級言語のコン
パイラ、l6は目的プログラム、17はコンパイラが出
力する診断メッセージ、コンパイラの入力した中間ソー
スプログラムのリスト等の各種リストである. 第16図に示す従来技術おいて、例えば、拡張された言
語仕様で記述された汎用的高級言語のソースプログラム
11が,データベース操作言語が埋め込まれたPL/I
ソースプログラムであるものとし、このソースプログラ
ムを翻訳する場合の動作を説明する. 利用者は、まず、ブリコンパイラ34を起動する.ブリ
コンパイラ34は、これにより、利用者が記述したソー
スプログラム1lを解析し、該プログラム11内にエラ
ーがあれば診断メッセージ36を出力する.また、ソー
スプログラム11がエラーの無い正しいものであれば、
ブリコンパイラ34は、ソースプログラム11をPL/
I汎用コンパイラで処理できる形式、すなわちPL/I
の言語仕様の範囲内の記述に変換し、中間ソースプログ
ラム35を出力する.利用者は、次に、PL/I汎用コ
ンパイラl2を起動する,PL/I汎用コンパイラl2
は、この中間ソースプログラム35を解析し、該中間ソ
ースプログラム35にエラーがあれば診断メッセージl
7を出力する.また、中間ソースプログラム35がエラ
ーの無い正しいものであれば,PL/I汎用コンパイラ
l2は、目的プログラム16を出力する。
第16図に示す従来技術は、前述したように、ブリコン
パイラと汎用コンパイラとを、直列的に用いて翻訳を行
うものであり、以降、この従来技術による方式をブリコ
ンパイラ方式と呼ぶ。
パイラと汎用コンパイラとを、直列的に用いて翻訳を行
うものであり、以降、この従来技術による方式をブリコ
ンパイラ方式と呼ぶ。
第17図は拡張された言語仕様を扱えるようにした従来
技術によるコンパイル方式を説明する図である。第17
図において、各符号は第16図の場合と同一である。
技術によるコンパイル方式を説明する図である。第17
図において、各符号は第16図の場合と同一である。
第17図に示す従来技術おいて、例えば、拡張された言
語仕様で記述された汎用的高級言語のソースプログラム
11が、前述した第16図の従来技術の場合と同様に、
データベース操作言語が埋め込まれたPL/Iソースプ
ログラムであるものとし、このソースプログラムを翻訳
する場合の動作を説明する. この従来技術における汎用コンパイラl2は、データベ
ース操作言語が埋め込まれたPL/Iソースプログラム
11内のデータベース操作言語を扱えるように機能を拡
張されたPL/I汎用コンパイラである。この汎用コン
パイラl2は、利用者の記述したソースプログラムl1
を解析し、該ソースプログラム11内にエラーがあれば
診断メッセージl7を出力し、また、ソースプログラム
1lがエラーの無い正しいソースプログラムであれば,
目的プログラムl6を出力する。
語仕様で記述された汎用的高級言語のソースプログラム
11が、前述した第16図の従来技術の場合と同様に、
データベース操作言語が埋め込まれたPL/Iソースプ
ログラムであるものとし、このソースプログラムを翻訳
する場合の動作を説明する. この従来技術における汎用コンパイラl2は、データベ
ース操作言語が埋め込まれたPL/Iソースプログラム
11内のデータベース操作言語を扱えるように機能を拡
張されたPL/I汎用コンパイラである。この汎用コン
パイラl2は、利用者の記述したソースプログラムl1
を解析し、該ソースプログラム11内にエラーがあれば
診断メッセージl7を出力し、また、ソースプログラム
1lがエラーの無い正しいソースプログラムであれば,
目的プログラムl6を出力する。
第17図に示す従来技術は、データベース操作言語が埋
め込まれたソースプログラムll内のデータベース操作
言語等の特殊な用途のための言語を扱えるように機能が
拡張された汎用コンパイラl2を用いるものであり、以
降、この従来技術による方式をコンパイラ独自方式と呼
ぶ.[発明が解決しようとする問題点] 前記プリコンパイラ方式による従来技術は、次に示すよ
うな問題点を有している. すなわち、この従来技術は、第16図により説明したよ
うに、ブリコンパイラにより発見されたエラーとコンパ
イラにより発見されたエラーとが、それぞれ、別のリス
トとして出力されることになるため、リストが見にくい
という問題点を有する。
め込まれたソースプログラムll内のデータベース操作
言語等の特殊な用途のための言語を扱えるように機能が
拡張された汎用コンパイラl2を用いるものであり、以
降、この従来技術による方式をコンパイラ独自方式と呼
ぶ.[発明が解決しようとする問題点] 前記プリコンパイラ方式による従来技術は、次に示すよ
うな問題点を有している. すなわち、この従来技術は、第16図により説明したよ
うに、ブリコンパイラにより発見されたエラーとコンパ
イラにより発見されたエラーとが、それぞれ、別のリス
トとして出力されることになるため、リストが見にくい
という問題点を有する。
また、この従来技術は、コンパイラが出力する診断メッ
セージが、プリコンパイラの出力した中間ソースプログ
ラムに対するものであり、利用者の記述したソースプロ
グラムに対するものでないため、診断メッセージに付け
られた文番号や、埋め字などの情報が利用者にとって分
かりにくく、デバッグの効率を向上することができない
という問題点を有している。
セージが、プリコンパイラの出力した中間ソースプログ
ラムに対するものであり、利用者の記述したソースプロ
グラムに対するものでないため、診断メッセージに付け
られた文番号や、埋め字などの情報が利用者にとって分
かりにくく、デバッグの効率を向上することができない
という問題点を有している。
さらに、プリコンパイラ方式の従来技術は、ジョブステ
ップが二つになるため、その操作性が悪いという問題点
を有している.この問題点は、前述した特開昭62−2
16040号公報に記載された技術を利用することによ
り解決でき、操作性の向上を図ることができるが、しか
し、字句切出し、構文解析、名前解決等のコンパイラの
内部処理が、プリコンパイラとコンパイラの双方で行な
われるため、翻訳に必要な時間、及び、CPU、記憶域
などの計算機資源の損失が大きくなるという問題点を生
じさせてしまう. 一般に、プリコンパイラは、プリコンパイラ自身が処理
すべき部分の解析しか行わないため、ソースプログラム
内で宣言された名標の属性に関する詳細な情報などを持
っていない.従って、前記従来技術は、意味解析の処理
において厳密なエラーチェックが出来ず、利用者が記述
したプログラムを実行してみないと、プログラムの不良
が発見されないことが多いという問題点を有している.
また、一般に、プリコンパイラは、対象となる高級言語
のすべての仕様を満足し得ないので、言語仕様に不自然
な制約がつくことが多い.例えば、コンパイラが、ソー
スプログラムを生成,変更できるマクロ機能を持ってい
る場合、前記従来技術は、プリコンパイラの対象となる
拡張された言語仕様に関する部分を、このマクロ機能を
使って生成することができないという問題点を有する.
さらにまた、プリコンパイラ方式の従来技術は、プリコ
ンパイラを、前述の拡張仕様を埋め込む対象となる汎用
的高級言語(COBOL,PL/I1FORTRAN.
PASCAL等)の数だけ作成しておかなければならな
いという問題点を有している. また、前記コンパイラ独自方式による従来技術は、次に
示すような問題点を有している。
ップが二つになるため、その操作性が悪いという問題点
を有している.この問題点は、前述した特開昭62−2
16040号公報に記載された技術を利用することによ
り解決でき、操作性の向上を図ることができるが、しか
し、字句切出し、構文解析、名前解決等のコンパイラの
内部処理が、プリコンパイラとコンパイラの双方で行な
われるため、翻訳に必要な時間、及び、CPU、記憶域
などの計算機資源の損失が大きくなるという問題点を生
じさせてしまう. 一般に、プリコンパイラは、プリコンパイラ自身が処理
すべき部分の解析しか行わないため、ソースプログラム
内で宣言された名標の属性に関する詳細な情報などを持
っていない.従って、前記従来技術は、意味解析の処理
において厳密なエラーチェックが出来ず、利用者が記述
したプログラムを実行してみないと、プログラムの不良
が発見されないことが多いという問題点を有している.
また、一般に、プリコンパイラは、対象となる高級言語
のすべての仕様を満足し得ないので、言語仕様に不自然
な制約がつくことが多い.例えば、コンパイラが、ソー
スプログラムを生成,変更できるマクロ機能を持ってい
る場合、前記従来技術は、プリコンパイラの対象となる
拡張された言語仕様に関する部分を、このマクロ機能を
使って生成することができないという問題点を有する.
さらにまた、プリコンパイラ方式の従来技術は、プリコ
ンパイラを、前述の拡張仕様を埋め込む対象となる汎用
的高級言語(COBOL,PL/I1FORTRAN.
PASCAL等)の数だけ作成しておかなければならな
いという問題点を有している. また、前記コンパイラ独自方式による従来技術は、次に
示すような問題点を有している。
すなわち、この従来技術は、既存の汎用的高級言語コン
パイラに,データベース操作言語などの拡張仕様を実装
するのが困難であり、拡張仕様を提供するすべての汎用
的高級言語(COBOL、PL/I%FORTRAN.
PASCAL等)のコンパイラに、該拡張仕様について
の同様の処理を実装しなくてはならず、各コンパイラの
開発工数が多く、無駄であるという問題点を有している
。
パイラに,データベース操作言語などの拡張仕様を実装
するのが困難であり、拡張仕様を提供するすべての汎用
的高級言語(COBOL、PL/I%FORTRAN.
PASCAL等)のコンパイラに、該拡張仕様について
の同様の処理を実装しなくてはならず、各コンパイラの
開発工数が多く、無駄であるという問題点を有している
。
例えば、データベース操作言語は、データベース管理シ
ステムの機能拡張に伴って言語仕様も機能を拡張しなく
てはならない場合が多いが、このような拡張を行った方
式は、該拡張仕様の対象となるシステム、すなわち、前
述の例ではデータベース管理システムの機能拡張と、コ
ンパイラの機能拡張のタイミングを必ず合せなければな
らないという問題点を生じる6 本発明の目的は、前述したような従来技術の問題点の解
決を図り、利用者にとっての操作性を向上させるととも
に、コンパイラにとって拡張仕様の実装を容易化させる
ことを可能にした拡張された言語仕様のコンパイル方式
を提供することにある。
ステムの機能拡張に伴って言語仕様も機能を拡張しなく
てはならない場合が多いが、このような拡張を行った方
式は、該拡張仕様の対象となるシステム、すなわち、前
述の例ではデータベース管理システムの機能拡張と、コ
ンパイラの機能拡張のタイミングを必ず合せなければな
らないという問題点を生じる6 本発明の目的は、前述したような従来技術の問題点の解
決を図り、利用者にとっての操作性を向上させるととも
に、コンパイラにとって拡張仕様の実装を容易化させる
ことを可能にした拡張された言語仕様のコンパイル方式
を提供することにある。
[課題を解決するための手段]
本発明によれば前記目的は、汎用言語を翻訳する汎用コ
ンパイラとは別個に、特殊な用途に対する言語だけを翻
訳する特殊コンパイラを設け、特殊な用途に対する言語
が埋め込まれたソースプログラムが入力された汎用コン
パイラが、この特殊コンパイラを起動し、この同者が翻
訳動作中に入力ソースプログラム、診断メッセージ、目
的プログラム等の情報を交換しながら、それぞれの分担
にしたがって入力ソースプログラムを翻訳し、汎用コン
パイラがこの両者の翻訳結果の情報を合成し、一括して
出力するようにすることによって達成される. [作 用] 汎用コンパイラは、ソースプログラムが入力されると、
そのソースプログラムが拡張された仕様で記述されたソ
ースプログラムであれば、特殊コンパイラを起動し、特
殊コンパイラと情報の交換を行いながらソースプログラ
ムの翻訳を行い、翻訳の結果を、目的プログラム、各種
リストと共に汎用コンパイラが合成してただひとつだけ
出力する。このため、本発明によるコンパイル方式は、
利用者にとって、あたかも、汎用コンパイラだけが動作
しているように扱うことができる。
ンパイラとは別個に、特殊な用途に対する言語だけを翻
訳する特殊コンパイラを設け、特殊な用途に対する言語
が埋め込まれたソースプログラムが入力された汎用コン
パイラが、この特殊コンパイラを起動し、この同者が翻
訳動作中に入力ソースプログラム、診断メッセージ、目
的プログラム等の情報を交換しながら、それぞれの分担
にしたがって入力ソースプログラムを翻訳し、汎用コン
パイラがこの両者の翻訳結果の情報を合成し、一括して
出力するようにすることによって達成される. [作 用] 汎用コンパイラは、ソースプログラムが入力されると、
そのソースプログラムが拡張された仕様で記述されたソ
ースプログラムであれば、特殊コンパイラを起動し、特
殊コンパイラと情報の交換を行いながらソースプログラ
ムの翻訳を行い、翻訳の結果を、目的プログラム、各種
リストと共に汎用コンパイラが合成してただひとつだけ
出力する。このため、本発明によるコンパイル方式は、
利用者にとって、あたかも、汎用コンパイラだけが動作
しているように扱うことができる。
また、特殊コンパイラを複数必要とする場合、コントロ
ーラが、これらの特殊コンパイラ群を総括し、汎用コン
パイラと特殊コンパイラとの間のインターフエイスを全
て行なうので、汎用コンパイラは、コントローラだけを
意識して動作すればよく、拡張仕様や特殊コンパイラな
どの追加、変更に対して柔軟に対処することができ、シ
ステムとしての拡張性、保守性が向上する。
ーラが、これらの特殊コンパイラ群を総括し、汎用コン
パイラと特殊コンパイラとの間のインターフエイスを全
て行なうので、汎用コンパイラは、コントローラだけを
意識して動作すればよく、拡張仕様や特殊コンパイラな
どの追加、変更に対して柔軟に対処することができ、シ
ステムとしての拡張性、保守性が向上する。
また、特殊な用途に対する言語仕様が、その埋め込まれ
る汎用言語の種類に関わりなく共通であれば、この共通
な拡張された言語仕様の翻訳は、この1つの特殊コンパ
イラが行なうことができるので、各汎用言語のコンパイ
ラは、特殊コンパイラとのインターフエイスの機能だけ
を実装すれば良く、実際に拡張された仕様の翻訳に関す
る全ての機能をもつ必要がなく、従って、COBOL,
FORTRAN,PL/Iなどの様々な汎用言語につい
て、この拡張仕様を翻訳する機能を持たせることが容易
となる. [実施例コ 以下、本発明による拡張された言語仕様のコンパイル方
式の実施例を図面により詳細に説明する。
る汎用言語の種類に関わりなく共通であれば、この共通
な拡張された言語仕様の翻訳は、この1つの特殊コンパ
イラが行なうことができるので、各汎用言語のコンパイ
ラは、特殊コンパイラとのインターフエイスの機能だけ
を実装すれば良く、実際に拡張された仕様の翻訳に関す
る全ての機能をもつ必要がなく、従って、COBOL,
FORTRAN,PL/Iなどの様々な汎用言語につい
て、この拡張仕様を翻訳する機能を持たせることが容易
となる. [実施例コ 以下、本発明による拡張された言語仕様のコンパイル方
式の実施例を図面により詳細に説明する。
第1図は本発明の第1の実施例の基本構成を示すブロッ
ク図である.第1図において、l1は拡張された言語仕
様で記述されたソースプログラム、l2は汎用的高級言
語のコンパイラ(以降、汎用コンパイラと呼ぶ)、1・
3は拡張された言語仕様の部分だけを翻訳する特殊コン
パイラ、16はソースプログラムを翻訳した結果の目的
プログラム、l7は診断メッセージ、ソー−スプログラ
ムリスト、相互参照リスト等の各種リストである。また
、4は汎用コンパイラから特殊コンパイラへ渡す情報で
あり、l5は特殊コンパイラから汎用コンパイラへ渡す
情報である。
ク図である.第1図において、l1は拡張された言語仕
様で記述されたソースプログラム、l2は汎用的高級言
語のコンパイラ(以降、汎用コンパイラと呼ぶ)、1・
3は拡張された言語仕様の部分だけを翻訳する特殊コン
パイラ、16はソースプログラムを翻訳した結果の目的
プログラム、l7は診断メッセージ、ソー−スプログラ
ムリスト、相互参照リスト等の各種リストである。また
、4は汎用コンパイラから特殊コンパイラへ渡す情報で
あり、l5は特殊コンパイラから汎用コンパイラへ渡す
情報である。
利用者は、拡張言語仕様で記述されたソースプログラム
11を翻訳しようとする場合、まず、汎用コンパイラ1
2を起動する。起動された汎用コンパイラ12は、ソー
スプログラム11を取り込み、その解析を行なう.汎用
コンパイラl2は、この過程で拡張仕様で記述された部
分を発見すると、特殊コンパイラl3を起動し、その拡
張仕様部分に関わる情報l4を特殊コンパイラl3へ渡
す。
11を翻訳しようとする場合、まず、汎用コンパイラ1
2を起動する。起動された汎用コンパイラ12は、ソー
スプログラム11を取り込み、その解析を行なう.汎用
コンパイラl2は、この過程で拡張仕様で記述された部
分を発見すると、特殊コンパイラl3を起動し、その拡
張仕様部分に関わる情報l4を特殊コンパイラl3へ渡
す。
特殊コンパイラl3は、汎用コンパイラl2から受けと
った情報をもとに拡張された言語仕様の部分だけの翻訳
を行ない、目的プログラム、診断メッセージ等の翻訳結
果の情報l5を汎用コンパイラ12へ返送する. 汎用コンパイラl2は、自分の翻訳処理の結果である目
的プログラム、診断メッセージ等と、特殊コンパイラl
3から返された目的プログラム、診断メッセージ等とを
合成して、目的プログラム16、各種リストl7として
出力する。
った情報をもとに拡張された言語仕様の部分だけの翻訳
を行ない、目的プログラム、診断メッセージ等の翻訳結
果の情報l5を汎用コンパイラ12へ返送する. 汎用コンパイラl2は、自分の翻訳処理の結果である目
的プログラム、診断メッセージ等と、特殊コンパイラl
3から返された目的プログラム、診断メッセージ等とを
合成して、目的プログラム16、各種リストl7として
出力する。
このような本発明の第1の実施例によれば、翻訳の結果
は、目的プログラム、各種リストと共に汎用コンパイラ
が合成してただひとつだけ出力されるので、利用者にと
っては、あたかも、汎用コンパイラだけが動作している
ように見える。また、出力される診断結果のリストは、
利用者の記述したソースプログラムから直接得られたと
同一の形式で出力されるので、利用者にとって判り易い
ものとなる. 第2図は本発明の第2の実施例の基本構成を示すブロッ
ク図、第3図はコントローラの処理動作を説明するフロ
ーチャートである。第2図において、13a,13bは
特殊コンパイラ、18はコントローラである.また、1
4a〜14c,15a−+5bはコンパイラとコントロ
ーラとの間で送受信される情報であり、他の符号は第1
図の場合と同一である。
は、目的プログラム、各種リストと共に汎用コンパイラ
が合成してただひとつだけ出力されるので、利用者にと
っては、あたかも、汎用コンパイラだけが動作している
ように見える。また、出力される診断結果のリストは、
利用者の記述したソースプログラムから直接得られたと
同一の形式で出力されるので、利用者にとって判り易い
ものとなる. 第2図は本発明の第2の実施例の基本構成を示すブロッ
ク図、第3図はコントローラの処理動作を説明するフロ
ーチャートである。第2図において、13a,13bは
特殊コンパイラ、18はコントローラである.また、1
4a〜14c,15a−+5bはコンパイラとコントロ
ーラとの間で送受信される情報であり、他の符号は第1
図の場合と同一である。
第2図に示す本発明の第2の実施例において、ソースプ
ログラム11は、例えば、データベース操作言語及びデ
ータ通信操作言語のような、複数の拡張された言語仕様
を含むものとする。従って、この本発明の第2の実施例
は、これら複数の拡張された言語仕様のそれぞれを翻訳
するための特殊コンパイラ13a,13bを備え、これ
らの特殊コンパイラ13a,13bと汎用コンパイラ1
2との間のインターフェース制御を行うコントローラ1
8を備えて構威されている。
ログラム11は、例えば、データベース操作言語及びデ
ータ通信操作言語のような、複数の拡張された言語仕様
を含むものとする。従って、この本発明の第2の実施例
は、これら複数の拡張された言語仕様のそれぞれを翻訳
するための特殊コンパイラ13a,13bを備え、これ
らの特殊コンパイラ13a,13bと汎用コンパイラ1
2との間のインターフェース制御を行うコントローラ1
8を備えて構威されている。
利用者は、拡張言語仕様で記述されたソースプログラム
1lを翻訳しようとする場合、まず、汎用コンパイラ1
2を起動する。起動された汎用コンパイラl2は、ソー
スプログラムl1を取り込み、その解析を行なう。汎用
コンパイラ12は、この過程で拡張仕様で記述された部
分を発見すると、その拡張仕様部分に関わる情報14a
をコントローラl8へ渡す。
1lを翻訳しようとする場合、まず、汎用コンパイラ1
2を起動する。起動された汎用コンパイラl2は、ソー
スプログラムl1を取り込み、その解析を行なう。汎用
コンパイラ12は、この過程で拡張仕様で記述された部
分を発見すると、その拡張仕様部分に関わる情報14a
をコントローラl8へ渡す。
コントローラ18は、汎用コンパイラ12から受け取っ
た情報を複数存在する拡張仕様のそれぞれの部分に分割
し、また必要なら編集を行ない,それぞれの翻訳を受け
持つ特殊コンパイラ13a、13bを起動し、翻訳に必
要な拡張仕様部分の情報を情報14b,14cとしてこ
れらのコンパイラ13a.]3bに送出する。
た情報を複数存在する拡張仕様のそれぞれの部分に分割
し、また必要なら編集を行ない,それぞれの翻訳を受け
持つ特殊コンパイラ13a、13bを起動し、翻訳に必
要な拡張仕様部分の情報を情報14b,14cとしてこ
れらのコンパイラ13a.]3bに送出する。
特殊コンパイラ13a,13bは、与えられた拡張仕様
部分に関する情報の翻訳を行い、目的プログラム、診断
メッセージ等の翻訳結果の情報l5b,15cをコント
ローラl8に送出する。コントローラ18は,これらの
情報15b.15cを必要があれば編集、統合し、情報
15aとして汎用コンパイラl2に送出する. 汎用コンパイラ12は、自分の翻訳処理の結果である日
的プログラム、診断メッセージ等と、コントローラl8
から返送された目的プログラム、診断メッセージ等とを
合成して、目的プログラムl6、各種リスト17として
出力する,前述した本発明の第2の実施例におけるコン
トローラ18の処理フローが第3図に示されており、以
下、これについて説明する。
部分に関する情報の翻訳を行い、目的プログラム、診断
メッセージ等の翻訳結果の情報l5b,15cをコント
ローラl8に送出する。コントローラ18は,これらの
情報15b.15cを必要があれば編集、統合し、情報
15aとして汎用コンパイラl2に送出する. 汎用コンパイラ12は、自分の翻訳処理の結果である日
的プログラム、診断メッセージ等と、コントローラl8
から返送された目的プログラム、診断メッセージ等とを
合成して、目的プログラムl6、各種リスト17として
出力する,前述した本発明の第2の実施例におけるコン
トローラ18の処理フローが第3図に示されており、以
下、これについて説明する。
(1)汎用コンパイラl2から受け取った情報14aの
全てについて、特殊コンパイラ13aに渡すべき情報か
、特殊コンパイラ!3bに渡すべき情報かを識別分類し
、それぞれの特殊コンパイラに渡す情報を設定する(ス
テップ31〜34)。
全てについて、特殊コンパイラ13aに渡すべき情報か
、特殊コンパイラ!3bに渡すべき情報かを識別分類し
、それぞれの特殊コンパイラに渡す情報を設定する(ス
テップ31〜34)。
(2)全ての情報14aについて、ステップ33、34
の情報の設定が終了すると、次に、特殊コンパイラ13
aを起動し、該コンパイラ13aに翻訳処理を行わせ、
該コンパイラ13aから返送される情報を,汎用コンパ
イラl2に返送する情報として設定する(ステップ35
、36)。
の情報の設定が終了すると、次に、特殊コンパイラ13
aを起動し、該コンパイラ13aに翻訳処理を行わせ、
該コンパイラ13aから返送される情報を,汎用コンパ
イラl2に返送する情報として設定する(ステップ35
、36)。
(3)ステップ35、36と同様に、特殊コンパイラ1
3bを起動し、該コンパイラ13bに翻訳処理を行わせ
、該コンパイラ13bから返送される情報を、汎用コン
パイラl2に返送する情報として設定する(ステップ3
7、38)。
3bを起動し、該コンパイラ13bに翻訳処理を行わせ
、該コンパイラ13bから返送される情報を、汎用コン
パイラl2に返送する情報として設定する(ステップ3
7、38)。
なお、第3図により説明したコントローラ18の前述の
処理フローにおいて、ステップ37、38の処理は、ス
テップ35、36と並列に行われてもよい. 前述の本発明の第2の実施例によれば、汎用コンパイラ
と特殊コンパイラの間のインターフエイスが、コントロ
ーラにより一括して行われるので、汎用コンパイラは、
コントローラだけを意識して動作すれば良く、拡張仕様
、特殊コンパイラ等の追加、変更に対して柔軟に対処す
ることができ、システムとしての拡張性、保守性を向上
させることができる. 第4図は本発明の第3の実施例の基本構成を示すブロッ
ク図である.第41!Iにおいて、lla、1lbは共
通の拡張された言語仕様を含み、異なった汎用言語で記
述されたソースプログラム、l2a,12bはそれぞれ
の汎用言語を翻訳する汎用コンパイラ、16a、16b
はソースプログラムを翻訳した結果の目的プログラム,
17a.17bは診断メッセージ、ソースプログラムリ
スト、相互参照リストなどの各種リストであり、他の符
号は第1図、第2図の場合と同一である.第4図に示す
本発明の第3の実施例は、それぞれが共通の特殊操作言
語を内部に備える、異なる言語で記述された複数のソー
スプログラムの翻訳を行い得るものであり、例えば、ソ
ースプログラムllaはCOBOL言語で、ソースプロ
グラム1lbはPL/I言語で記述され、かつ共通の仕
様を持つデータベース操作言語を含むソースプログラム
である。第4図に示す例では、2種のソースプログラム
が示されているが、ソースプログラムは、さらに多数あ
ってもよく、この場合、ソースプログラムの数に合わせ
て、汎用コンパイラを増設すればよい. 利用者は、拡張言語仕様で記述されたソースプログラム
llaまたはllbを翻訳しようとする場合、まず、汎
用コンパイラ12aまたは12bをソースプログラムを
記述した汎用言語の種類にしたがって起動する。
処理フローにおいて、ステップ37、38の処理は、ス
テップ35、36と並列に行われてもよい. 前述の本発明の第2の実施例によれば、汎用コンパイラ
と特殊コンパイラの間のインターフエイスが、コントロ
ーラにより一括して行われるので、汎用コンパイラは、
コントローラだけを意識して動作すれば良く、拡張仕様
、特殊コンパイラ等の追加、変更に対して柔軟に対処す
ることができ、システムとしての拡張性、保守性を向上
させることができる. 第4図は本発明の第3の実施例の基本構成を示すブロッ
ク図である.第41!Iにおいて、lla、1lbは共
通の拡張された言語仕様を含み、異なった汎用言語で記
述されたソースプログラム、l2a,12bはそれぞれ
の汎用言語を翻訳する汎用コンパイラ、16a、16b
はソースプログラムを翻訳した結果の目的プログラム,
17a.17bは診断メッセージ、ソースプログラムリ
スト、相互参照リストなどの各種リストであり、他の符
号は第1図、第2図の場合と同一である.第4図に示す
本発明の第3の実施例は、それぞれが共通の特殊操作言
語を内部に備える、異なる言語で記述された複数のソー
スプログラムの翻訳を行い得るものであり、例えば、ソ
ースプログラムllaはCOBOL言語で、ソースプロ
グラム1lbはPL/I言語で記述され、かつ共通の仕
様を持つデータベース操作言語を含むソースプログラム
である。第4図に示す例では、2種のソースプログラム
が示されているが、ソースプログラムは、さらに多数あ
ってもよく、この場合、ソースプログラムの数に合わせ
て、汎用コンパイラを増設すればよい. 利用者は、拡張言語仕様で記述されたソースプログラム
llaまたはllbを翻訳しようとする場合、まず、汎
用コンパイラ12aまたは12bをソースプログラムを
記述した汎用言語の種類にしたがって起動する。
汎用コンパイラ12aは、ソースプログラム1】aを、
汎用コンパイラ12bは、ソースプログラムllbを取
り込み、それぞれの解析を行う。
汎用コンパイラ12bは、ソースプログラムllbを取
り込み、それぞれの解析を行う。
汎用コンパイラ12a% 12bは、この解析過程で拡
張仕様で記述された部分を発見すると、その拡張仕様部
分に関わる情報1 4 a, l 4 bを特殊コン
パイラl3へ渡す.このとき、情報14a,14bは同
一のフォーマットでで特殊コンパイラに渡される. 特殊コンパイラl3は、この情報14a,14bをもと
に翻訳を行ない、目的プログラムや、診断メッセージな
どの翻訳結果の情報15a,15bをそれぞれ汎用コン
パイラ12a,12bへ返送する。このとき、情報15
a,15bは同一のフォーマットである。
張仕様で記述された部分を発見すると、その拡張仕様部
分に関わる情報1 4 a, l 4 bを特殊コン
パイラl3へ渡す.このとき、情報14a,14bは同
一のフォーマットでで特殊コンパイラに渡される. 特殊コンパイラl3は、この情報14a,14bをもと
に翻訳を行ない、目的プログラムや、診断メッセージな
どの翻訳結果の情報15a,15bをそれぞれ汎用コン
パイラ12a,12bへ返送する。このとき、情報15
a,15bは同一のフォーマットである。
汎用コンパイラ12a% 12bは、自分の翻訳処理の
結果である目的プログラム、診断メッセージ等と、特殊
コンパイラ13から返送された目的プログラム、診断メ
ッセージ等とを合成して、目的プログラム1 6 a,
1 6 b,各種リスト17a、17bとしてそれ
ぞれ出力する. 前述した本発明の第3の実施例によれば、各汎用コンパ
イラは、特殊コンパイラとのインターフエイスの機能だ
けを実装すれば良く、拡張仕様の翻訳に関する機能の大
部分は、特殊コンパイラだけが実装することになる.そ
して、これにより、本発明の第3の実施例は、COBO
L,FORTRAN,PL/Iなどの様々な汎用言語に
ついて、その拡張仕様を翻訳することが可能となる。
結果である目的プログラム、診断メッセージ等と、特殊
コンパイラ13から返送された目的プログラム、診断メ
ッセージ等とを合成して、目的プログラム1 6 a,
1 6 b,各種リスト17a、17bとしてそれ
ぞれ出力する. 前述した本発明の第3の実施例によれば、各汎用コンパ
イラは、特殊コンパイラとのインターフエイスの機能だ
けを実装すれば良く、拡張仕様の翻訳に関する機能の大
部分は、特殊コンパイラだけが実装することになる.そ
して、これにより、本発明の第3の実施例は、COBO
L,FORTRAN,PL/Iなどの様々な汎用言語に
ついて、その拡張仕様を翻訳することが可能となる。
前述した本発明の第3の実施例は、ソースプログラム内
に含まれる拡張された言語仕様が1つであるとしたが、
本発明は、複数のソースプログラムのそれぞれに、複数
の拡張された言語仕様が含まれる場合にも適用すること
が可能であり、この場合、第4図に示す特殊コンパイラ
13の位置に、第2図に示したと同様なコントローラ1
8を置き、このコントローラ18に複数の特殊コンパイ
ラを接続すればよい6 第5図は本発明の第4の実施例の構成を示すブロック図
、第6図はデータベース操作言語SQLが埋め込まれた
PL/Iプログラムの例を示す図、第7図はPL/Iコ
ントローラからSQLコントローラへ渡す情報の内容例
を示す図,第8図は第7図内のソースプログラムに関す
る情報のフォーマット例を示す図、第9図は第7図内の
変数の属性に関する情報のフォーマット例を示す図、第
10図はSQLコントローラからPL/Iコントローラ
へ渡す情報の内容例を示す図、第11図は第10図内の
目的プログラムに関する情報のフォーマット例を示す図
、第12図は第lO図内の診断メッセージに関する情報
のフォーマット例を示す図、第13図は第10図内の名
標相互の参照関係に関する情報のフォーマット例を示す
図、第14図はPL/IとSQLコンパイラとが生成す
る目的プログラムの関係を示す図,第15図はPL/■
コンパイラの処理内容の概要を説明するフローチャート
である.第5図において、l9はデータベース操作言語
SQLが埋め込まれたPL/Iプログラム、20はPL
/Iコンパイラ、2lはSQLを翻訳するSQLコンパ
イラ、22はデータベース管理システム、23はデータ
ベースに関する情報を格納しているディスクショナリで
あり、他の符号は第1図の場合と同一である.第5図に
示す本発明の第4の実施例は、第l図により説明した本
発明の第1の実施例を具体的にしたものであり、以下、
この第4の実施例を第6図〜第15図を参照して説明す
る。
に含まれる拡張された言語仕様が1つであるとしたが、
本発明は、複数のソースプログラムのそれぞれに、複数
の拡張された言語仕様が含まれる場合にも適用すること
が可能であり、この場合、第4図に示す特殊コンパイラ
13の位置に、第2図に示したと同様なコントローラ1
8を置き、このコントローラ18に複数の特殊コンパイ
ラを接続すればよい6 第5図は本発明の第4の実施例の構成を示すブロック図
、第6図はデータベース操作言語SQLが埋め込まれた
PL/Iプログラムの例を示す図、第7図はPL/Iコ
ントローラからSQLコントローラへ渡す情報の内容例
を示す図,第8図は第7図内のソースプログラムに関す
る情報のフォーマット例を示す図、第9図は第7図内の
変数の属性に関する情報のフォーマット例を示す図、第
10図はSQLコントローラからPL/Iコントローラ
へ渡す情報の内容例を示す図、第11図は第10図内の
目的プログラムに関する情報のフォーマット例を示す図
、第12図は第lO図内の診断メッセージに関する情報
のフォーマット例を示す図、第13図は第10図内の名
標相互の参照関係に関する情報のフォーマット例を示す
図、第14図はPL/IとSQLコンパイラとが生成す
る目的プログラムの関係を示す図,第15図はPL/■
コンパイラの処理内容の概要を説明するフローチャート
である.第5図において、l9はデータベース操作言語
SQLが埋め込まれたPL/Iプログラム、20はPL
/Iコンパイラ、2lはSQLを翻訳するSQLコンパ
イラ、22はデータベース管理システム、23はデータ
ベースに関する情報を格納しているディスクショナリで
あり、他の符号は第1図の場合と同一である.第5図に
示す本発明の第4の実施例は、第l図により説明した本
発明の第1の実施例を具体的にしたものであり、以下、
この第4の実施例を第6図〜第15図を参照して説明す
る。
ソースプログラムであるSQLが埋め込まれたPL/I
プログラム19は,第6図に示すように、基本仕様で記
述されたPL/Iの文24の中に、SQLの中で使用さ
れる変数についてのPL/Iでの変数宣言25と、デー
タベース操作を指示するSQL文26とが埋め込まれて
構成されている。
プログラム19は,第6図に示すように、基本仕様で記
述されたPL/Iの文24の中に、SQLの中で使用さ
れる変数についてのPL/Iでの変数宣言25と、デー
タベース操作を指示するSQL文26とが埋め込まれて
構成されている。
このソースプログラムの例は、rJIS X 30
05−1987Jに準拠して構成されたものである. 前述のように構成されたPL/Iプログラム19を翻訳
しようとする場合、まず、PL/rコンパイラ20が起
動される. PL/Iコンパイラ20は、ソースプログラムl9を取
り込み、構文解析の結果、PL/Iプログラムl9がS
QLを使用していることが分かると、SQLコンパイラ
2lを動的にローデイングする.このSQLコンパイラ
のローデイングは、PL/Iコンパイラのコンパイラオ
プションに、SQLを使用している旨の指定があった場
合に行うことにしてもよい. そして、PL/Iコンパイラ20は、SQL文26及び
変数宣言25からSQLコンパイラ2lへ渡す情報l4
を生成する.この情報l4の内容は、第7図に示すよう
に、ソースプログラムに間する複数の情報27と、変数
の属性に間する複数の情報28等から構成されている.
ソースプログラムに関する情報のフォーマットの例を第
8図に、変数の属性に間する情報のフォーマットの例を
第9図にそれぞれ示す。そしてPL/Iコンパイラ20
は制御をSQLコンパイラ2lへ渡す.SQLコンパイ
ラ2lは、PL/Iコンパイラ20から渡された情報l
4の解析を実行する.SQLコンパイラ2lは、この解
析過程でデータベース管理システム22を経由してデー
タベースの定義情報などか格納されているディクショナ
リ23をアクセスし、SQLの意味チェックを行なう.
さらに、SQLコンパイラ21は,PL/Iコンバイラ
20から渡された情報l4に基づきSQLの翻訳を行な
い、目的プログラム、診断メッセージ等のPL/Iコン
パイラ20へ渡すべき情報l5を生成する. この情報l5の内容は、第10図に示すように、目的プ
ログラムに関する情報29、診断メッセージに関する情
報30、名標相互の参照間係に関する情報31等から構
成されている。目的プログラムに関する情報29のフォ
ーマットの例が第11図に、診断メッセージに関する情
報30のフォーマットの例が第12図に、名標相互の参
照関係に関する情報31のフォーマットの例が第13図
にそれぞれ示されている。そして、SQLコンパイラ2
lは、その制御をPL/Iコンパイラ20へ返す。
05−1987Jに準拠して構成されたものである. 前述のように構成されたPL/Iプログラム19を翻訳
しようとする場合、まず、PL/rコンパイラ20が起
動される. PL/Iコンパイラ20は、ソースプログラムl9を取
り込み、構文解析の結果、PL/Iプログラムl9がS
QLを使用していることが分かると、SQLコンパイラ
2lを動的にローデイングする.このSQLコンパイラ
のローデイングは、PL/Iコンパイラのコンパイラオ
プションに、SQLを使用している旨の指定があった場
合に行うことにしてもよい. そして、PL/Iコンパイラ20は、SQL文26及び
変数宣言25からSQLコンパイラ2lへ渡す情報l4
を生成する.この情報l4の内容は、第7図に示すよう
に、ソースプログラムに間する複数の情報27と、変数
の属性に間する複数の情報28等から構成されている.
ソースプログラムに関する情報のフォーマットの例を第
8図に、変数の属性に間する情報のフォーマットの例を
第9図にそれぞれ示す。そしてPL/Iコンパイラ20
は制御をSQLコンパイラ2lへ渡す.SQLコンパイ
ラ2lは、PL/Iコンパイラ20から渡された情報l
4の解析を実行する.SQLコンパイラ2lは、この解
析過程でデータベース管理システム22を経由してデー
タベースの定義情報などか格納されているディクショナ
リ23をアクセスし、SQLの意味チェックを行なう.
さらに、SQLコンパイラ21は,PL/Iコンバイラ
20から渡された情報l4に基づきSQLの翻訳を行な
い、目的プログラム、診断メッセージ等のPL/Iコン
パイラ20へ渡すべき情報l5を生成する. この情報l5の内容は、第10図に示すように、目的プ
ログラムに関する情報29、診断メッセージに関する情
報30、名標相互の参照間係に関する情報31等から構
成されている。目的プログラムに関する情報29のフォ
ーマットの例が第11図に、診断メッセージに関する情
報30のフォーマットの例が第12図に、名標相互の参
照関係に関する情報31のフォーマットの例が第13図
にそれぞれ示されている。そして、SQLコンパイラ2
lは、その制御をPL/Iコンパイラ20へ返す。
PL/Iコンパイラ20は、第14図に示すように、P
L/Iプログラムl9内に記述されたSQL文を.SQ
Lコンパイラ21が生成する目的プログラムの呼出し(
PL/I言語ではCALL文)に置き換えて、PL/I
言語で記述された部分の翻訳を続行する。
L/Iプログラムl9内に記述されたSQL文を.SQ
Lコンパイラ21が生成する目的プログラムの呼出し(
PL/I言語ではCALL文)に置き換えて、PL/I
言語で記述された部分の翻訳を続行する。
この翻訳が終了すると、PL/Iコンパイラ20は,S
QLコンパイラ2lより受け取った情報l5を自分の翻
訳結果と合成して、目的プログラムl6と各種のりスト
l7を出力する。
QLコンパイラ2lより受け取った情報l5を自分の翻
訳結果と合成して、目的プログラムl6と各種のりスト
l7を出力する。
前述したPL/Iコンパイラ20における処理内容の概
要が第15図にフローチャートとして示されており、以
下、これについて説明する。
要が第15図にフローチャートとして示されており、以
下、これについて説明する。
PL/Iコンパイラ20における処理は、第15図に示
すように、構文解析処理と、宣言解析処理と、目的プロ
グラム生成及びリスト出力の処理とにより行われる. 構文解析処理は、ソースプログラムが入力された後、そ
のソースプログラム内のSQL文を抽出し、抽出された
SQL文に基づいて、SQLコンパイラへ渡す情報を設
定し、ソースプログラムをC:ALL文に変換すると共
に,SQL文以外に対して通常の処理を施すことにより
行われる.宣言解析処理は、ソースプログラム内の宣言
文を解析し、その宣言文が、SQL文の中で使用されて
いる場合に、そのSQL文の中で使用されている宣言文
に基づいて、SQLコンパイラへ渡す情報を設定する処
理である。
すように、構文解析処理と、宣言解析処理と、目的プロ
グラム生成及びリスト出力の処理とにより行われる. 構文解析処理は、ソースプログラムが入力された後、そ
のソースプログラム内のSQL文を抽出し、抽出された
SQL文に基づいて、SQLコンパイラへ渡す情報を設
定し、ソースプログラムをC:ALL文に変換すると共
に,SQL文以外に対して通常の処理を施すことにより
行われる.宣言解析処理は、ソースプログラム内の宣言
文を解析し、その宣言文が、SQL文の中で使用されて
いる場合に、そのSQL文の中で使用されている宣言文
に基づいて、SQLコンパイラへ渡す情報を設定する処
理である。
また、目的プログラム生成及びリスト出力の処理は、ソ
ースプログラム内にSQL文があった場合に、SQLコ
ンパイラから渡された目的プログラム及び各種リストと
、自PL/Iコンパイラで生成した目的プログラム及び
各種リストとを合成し、出力する処理である。
ースプログラム内にSQL文があった場合に、SQLコ
ンパイラから渡された目的プログラム及び各種リストと
、自PL/Iコンパイラで生成した目的プログラム及び
各種リストとを合成し、出力する処理である。
前述したPL/Iコンパイラの処理において、目的プロ
グラムの合成は、PL/rコンパイラ20が出力する目
的プログラムとSQLコンパイラ2lが出力する目的プ
ログラムとをそれぞれ別の制御セクションとして出力し
、その結合を編集結合プログラム(リンケージエディタ
)に行なわせるようにしてもぐ、また、PL/Iコンパ
イラ20が、SQLコンパイラ2lの出力する目的プロ
グラムの中のオフセット情報等を書き換えて、自分の出
力する目的プログラムと同一の制御セクションとして出
力するようにしても良い。
グラムの合成は、PL/rコンパイラ20が出力する目
的プログラムとSQLコンパイラ2lが出力する目的プ
ログラムとをそれぞれ別の制御セクションとして出力し
、その結合を編集結合プログラム(リンケージエディタ
)に行なわせるようにしてもぐ、また、PL/Iコンパ
イラ20が、SQLコンパイラ2lの出力する目的プロ
グラムの中のオフセット情報等を書き換えて、自分の出
力する目的プログラムと同一の制御セクションとして出
力するようにしても良い。
また、PL/Iコンパイラ20とSQLコンパイラ2l
との間で送受信される情報14.15は、主記憶装置を
介して相互に転送してもよく、あるいは,外部記憶装置
を介して相互に転送してもよい。
との間で送受信される情報14.15は、主記憶装置を
介して相互に転送してもよく、あるいは,外部記憶装置
を介して相互に転送してもよい。
また、PL/Iコンパイラ20とSQLコンパイラ2l
との間の制御の移行は、前述の本発明の複数の実施例の
場合のように1回だけでも良いし、宣言解析のとき、構
文解析のとき、意味解析のとき等、複数回に分けて行な
っても良い。
との間の制御の移行は、前述の本発明の複数の実施例の
場合のように1回だけでも良いし、宣言解析のとき、構
文解析のとき、意味解析のとき等、複数回に分けて行な
っても良い。
[発明の効果]
以上説明したように、本発明によれば次のような効果を
奏することができる。
奏することができる。
利用者は、汎用コンパイラだけを起動すればよく、ジョ
ブステップも一つであるため、操作性が良い。
ブステップも一つであるため、操作性が良い。
特殊コンパイラの出力する診断メッセージ等は、汎用コ
ンパイラから文番号等の情報を貰うことにより、正しい
形式、すなわち、利用者の記述したソースプログラムか
ら直接得られたと同一の形式で出力することが出来るの
で利用者にとって分かりやすいものとなる。
ンパイラから文番号等の情報を貰うことにより、正しい
形式、すなわち、利用者の記述したソースプログラムか
ら直接得られたと同一の形式で出力することが出来るの
で利用者にとって分かりやすいものとなる。
字句切り出し、構文解析等のコンパイラの内部処理に関
しても、例えば、汎用コンパイラがすべてを行ない、そ
の結果を中間語として特殊コンパイラへ渡すという手法
、または、汎用コンパイラが、拡張仕様の開始を認識し
た時点で次の文の先頭まで無条件に解析処理を行なわず
に,特殊コンパイラの処理にまかせるという手法等を採
用することにより,無駄な処理の重複を避けることが出
来る。このため、計算機資源の損失を最低限にとどめる
ことができる。
しても、例えば、汎用コンパイラがすべてを行ない、そ
の結果を中間語として特殊コンパイラへ渡すという手法
、または、汎用コンパイラが、拡張仕様の開始を認識し
た時点で次の文の先頭まで無条件に解析処理を行なわず
に,特殊コンパイラの処理にまかせるという手法等を採
用することにより,無駄な処理の重複を避けることが出
来る。このため、計算機資源の損失を最低限にとどめる
ことができる。
ソースプログラム内部で宣言されている名標の情報等は
、汎用コンパイラが解析し、その解析結果の情報を特殊
コンパイラへ渡す、あるいは、拡張仕様で記述された部
分を特殊コンパイラが解析し、その解析結果の情報を汎
用コンパイラへ渡すことによって、より厳密なエラーチ
ェックが翻訳時に可能となる。
、汎用コンパイラが解析し、その解析結果の情報を特殊
コンパイラへ渡す、あるいは、拡張仕様で記述された部
分を特殊コンパイラが解析し、その解析結果の情報を汎
用コンパイラへ渡すことによって、より厳密なエラーチ
ェックが翻訳時に可能となる。
基本仕様部分は、全て汎用コンパイラが処理し、特殊コ
ンパイラは、拡張仕様で記述された部分しか処理しない
ため、言語仕様に不自然な制約を受けることがない。
ンパイラは、拡張仕様で記述された部分しか処理しない
ため、言語仕様に不自然な制約を受けることがない。
拡張仕様の追加、変更によるコンパイラの改造を、特殊
コンパイラの改造のみに局所化することができるので、
システムとしての拡張性、保守性の向上を図ることがで
きる。
コンパイラの改造のみに局所化することができるので、
システムとしての拡張性、保守性の向上を図ることがで
きる。
複数の拡張仕様を含むプログラムを扱う際に、コントロ
ーラを設け、該コントローラに各拡張仕様のための特殊
コンパイラを総括させることにより、汎用コンパイラが
意識しなくてはならないインターフエイスは、コントロ
ーラとのインターフエイスだけになり、汎用コンパイラ
の開発を容易に行うことが可能となる. 拡張仕様を追加して、特殊コンパイラの個数が増加した
場合にも、汎用コンパイラとコントローラとのインター
フエイスは変わらないため、汎用コントローラの改造が
不要であり、改造が必要な場合にも微小で済む. 例えば、データベース操作言語であるSQL言語は、r
JIs X 3005−1987J規格によれば、
COBOL.PL/I,FORTRANなどの既存の汎
用的高級言語に埋め込まれる場合でも、拡張部分に関し
てはすべて同一の構文、及び同一の意味規則を有してい
る。従って、このような拡張仕様については、該拡張仕
様を処理する特殊コンパイラをただ一つ開発すれば、各
種の汎用コンパイラは、この特殊コンパイラとのインタ
ーフエイスを行なう機能だけを実装し、この特殊コンパ
イラとハンドシエイクさせることにより、各種の汎用的
高級言語で容易にこの拡張仕様を使用することができる
。このため、コンパイラの開発に要する費用の低減を図
ることが出来る。
ーラを設け、該コントローラに各拡張仕様のための特殊
コンパイラを総括させることにより、汎用コンパイラが
意識しなくてはならないインターフエイスは、コントロ
ーラとのインターフエイスだけになり、汎用コンパイラ
の開発を容易に行うことが可能となる. 拡張仕様を追加して、特殊コンパイラの個数が増加した
場合にも、汎用コンパイラとコントローラとのインター
フエイスは変わらないため、汎用コントローラの改造が
不要であり、改造が必要な場合にも微小で済む. 例えば、データベース操作言語であるSQL言語は、r
JIs X 3005−1987J規格によれば、
COBOL.PL/I,FORTRANなどの既存の汎
用的高級言語に埋め込まれる場合でも、拡張部分に関し
てはすべて同一の構文、及び同一の意味規則を有してい
る。従って、このような拡張仕様については、該拡張仕
様を処理する特殊コンパイラをただ一つ開発すれば、各
種の汎用コンパイラは、この特殊コンパイラとのインタ
ーフエイスを行なう機能だけを実装し、この特殊コンパ
イラとハンドシエイクさせることにより、各種の汎用的
高級言語で容易にこの拡張仕様を使用することができる
。このため、コンパイラの開発に要する費用の低減を図
ることが出来る。
第1図は本発明の第1の実施例の基本構成を示すブロッ
ク図、第2図は本発明の第2の実施例の基本構成を示す
ブロック図、第3図はコントローラの処理動作を説明す
るフローチャート、第4図は本発明の第3の実施例の基
本構成を示すブロック図、第5図は本発明の第4の実施
例の構成を示すブロック図、第6図はデータベース操作
言語SQLが埋め込まれたPL/rプログラムの例を示
す図、第7図はPL/IコントローラからSQLコント
ローラへ渡す情報の内容例を示す図、第8図は第7図内
のソースプログラムに関する情報のフォーマット例を示
す図、第9図は第7図内の変数の属性に関する情報のフ
ォーマット例を示す図、第lO図はSQLコントローラ
からPL/Iコントローラへ渡す情報の内容例を示す図
、第11図は第10図内の目的プログラムに関する情報
のフォーマット例を示す図、第.12図は第10図内の
診断メッセージに関する情報のフォーマット例を示す図
、第13図は第lO図内の名標相互の参照関係に関する
情報のフォーマット例を示す図,第14図はPL/rと
SQLコンパイラとが生成する目的プログラムの関係を
示す図、第15図はPL/Iコンパイラの処理内容の概
要を説明するフローチャート、第16図、第17図は従
来技術の構成を示すブロック図である。 11・・・・・・拡張された言語仕様で記・述されたソ
−スプログラム、12・・・・・・汎用コンパイラ、1
3・・・・・・特殊コンパイラ、l4・・・・・・汎用
コンパイラから特殊コンパイラへ渡す情報、15・・・
・・・特殊コンパイラから汎用コンパイラへ渡す情報、
16・・・・・・ソースプログラムを翻訳した結果の目
的プログラム、17・・・・・・診断メッセージ、ソー
スプログラムリストなどの各種リスト、18・・・・・
・特殊コンパイラ群を総括して制御を行なうコントロー
ラ、l9・・・・・・データベース操作言MrIS Q
Lが埋め込まれたPL/Iプログラム、20・・・・
・・PL/rコンパイラ、2】・・・・・・SQLを翻
訳するSQLコンパイラ、22・・・・・・データベー
ス管理システム、23・・・・・・データベースに関す
る情報を格納してあるデクショナリ。 第 6 図 JE21!1 第3図 第10図 第7図 第8図 第9図 第11図 第12図 #!13図 )一ベトo R +r < 叫宕トO水1♂4 第16図 第17図
ク図、第2図は本発明の第2の実施例の基本構成を示す
ブロック図、第3図はコントローラの処理動作を説明す
るフローチャート、第4図は本発明の第3の実施例の基
本構成を示すブロック図、第5図は本発明の第4の実施
例の構成を示すブロック図、第6図はデータベース操作
言語SQLが埋め込まれたPL/rプログラムの例を示
す図、第7図はPL/IコントローラからSQLコント
ローラへ渡す情報の内容例を示す図、第8図は第7図内
のソースプログラムに関する情報のフォーマット例を示
す図、第9図は第7図内の変数の属性に関する情報のフ
ォーマット例を示す図、第lO図はSQLコントローラ
からPL/Iコントローラへ渡す情報の内容例を示す図
、第11図は第10図内の目的プログラムに関する情報
のフォーマット例を示す図、第.12図は第10図内の
診断メッセージに関する情報のフォーマット例を示す図
、第13図は第lO図内の名標相互の参照関係に関する
情報のフォーマット例を示す図,第14図はPL/rと
SQLコンパイラとが生成する目的プログラムの関係を
示す図、第15図はPL/Iコンパイラの処理内容の概
要を説明するフローチャート、第16図、第17図は従
来技術の構成を示すブロック図である。 11・・・・・・拡張された言語仕様で記・述されたソ
−スプログラム、12・・・・・・汎用コンパイラ、1
3・・・・・・特殊コンパイラ、l4・・・・・・汎用
コンパイラから特殊コンパイラへ渡す情報、15・・・
・・・特殊コンパイラから汎用コンパイラへ渡す情報、
16・・・・・・ソースプログラムを翻訳した結果の目
的プログラム、17・・・・・・診断メッセージ、ソー
スプログラムリストなどの各種リスト、18・・・・・
・特殊コンパイラ群を総括して制御を行なうコントロー
ラ、l9・・・・・・データベース操作言MrIS Q
Lが埋め込まれたPL/Iプログラム、20・・・・
・・PL/rコンパイラ、2】・・・・・・SQLを翻
訳するSQLコンパイラ、22・・・・・・データベー
ス管理システム、23・・・・・・データベースに関す
る情報を格納してあるデクショナリ。 第 6 図 JE21!1 第3図 第10図 第7図 第8図 第9図 第11図 第12図 #!13図 )一ベトo R +r < 叫宕トO水1♂4 第16図 第17図
Claims (1)
- 【特許請求の範囲】 1、汎用的な言語の中に特殊な用途に対する拡張された
言語仕様が埋め込まれた形式のソースプログラムを翻訳
し、目的プログラムを生成するコンパイラにおいて、汎
用的な言語を翻訳する汎用コンパイラと、特殊な用途に
対する拡張された言語を翻訳する特殊コンパイラとを備
え、ソースプログラムが入力された前記汎用コンパイラ
は、前記特殊コンパイラに対して、前記特殊な用途にの
ために記述された部分を翻訳するための情報を渡し、前
記特殊コンパイラは、この情報をもとに特殊な用途に対
する言語で記述された部分を翻訳し、翻訳結果の情報を
前記汎用コンパイラへ返送し、前記汎用コンパイラは、
この情報と、汎用的な言語で記述された部分を汎用コン
パイラ自身が翻訳した結果の情報とを合成し、一括して
出力することを特徴とする拡張された言語仕様のコンパ
イル方式。 2、前記ソースプログラムが、複数種類の特殊な用途に
対する拡張された言語仕様が埋め込まれたソースプログ
ラムである場合、これらの特殊な用途に対する言語を翻
訳する複数の特殊コンパイラと、これらの特殊コンパイ
ラを総括するコントローラとを備え、前記コントローラ
は、汎用的な言語を翻訳する汎用コンパイラとのインタ
ーフェイスを行なうことを特徴とする特許請求の範囲第
1項記載の拡張された言語仕様のコンパイル方式。 3、前記ソースプログラムが複数種類あり、これらのソ
ースプログラムの中に、共通な仕様を持つ特殊な用途に
対する拡張された言語が埋め込まれているた場合、この
特殊な用途に対する言語を翻訳する特殊コンパイラを、
前記ソースプログラムを翻訳する複数の汎用コンパイラ
に対して共通に備えることを特徴とする特許請求の範囲
第1項または第2項記載の拡張された言語仕様のコンパ
イル方式。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP16267089A JPH0328932A (ja) | 1989-06-27 | 1989-06-27 | 拡張された言語仕様のコンパイル方式 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP16267089A JPH0328932A (ja) | 1989-06-27 | 1989-06-27 | 拡張された言語仕様のコンパイル方式 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0328932A true JPH0328932A (ja) | 1991-02-07 |
Family
ID=15759054
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP16267089A Pending JPH0328932A (ja) | 1989-06-27 | 1989-06-27 | 拡張された言語仕様のコンパイル方式 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0328932A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014211729A (ja) * | 2013-04-18 | 2014-11-13 | 株式会社日立製作所 | 計算機、プログラム及びデータ生成方法 |
-
1989
- 1989-06-27 JP JP16267089A patent/JPH0328932A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2014211729A (ja) * | 2013-04-18 | 2014-11-13 | 株式会社日立製作所 | 計算機、プログラム及びデータ生成方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5230049A (en) | Program source code translator | |
| JP2666847B2 (ja) | 異種言語間連絡方式 | |
| CN102365621B (zh) | 使用嵌入式解释器类型和变量的基于解释器的程序语言翻译器 | |
| US5812855A (en) | System and method for constaint propagation cloning for unknown edges in IPA | |
| CN111796831A (zh) | 一种多芯片兼容的编译方法和装置 | |
| JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
| JP2001184218A (ja) | Mpiプログラムのコンパイルにおける最適化方法 | |
| JPH0328932A (ja) | 拡張された言語仕様のコンパイル方式 | |
| CN115268918A (zh) | 一种基于规则模板的c++代码向c代码的自动转化方法 | |
| JPH09218789A (ja) | 分割コンパイル方式 | |
| JP3889227B2 (ja) | プログラム実行装置、プログラム実行方法、記録媒体、及び制御プログラム | |
| KR101099491B1 (ko) | 소모전력 분석방법 | |
| JP3630086B2 (ja) | プログラム変換装置、プログラム変換方法及び記録媒体 | |
| JPS6365530A (ja) | コ−ド最適化方式 | |
| JPH02205930A (ja) | インタフェースチェック処理方法 | |
| JPH06119203A (ja) | デバック行削除装置 | |
| JP3424596B2 (ja) | シンボル参照情報のキャッシュ方法ならびに装置 | |
| JPH02245934A (ja) | データ処理装置 | |
| CN114489683A (zh) | 一种类java语言基于JVM的函数式编程语法实现方法 | |
| JPS58169637A (ja) | コンパイル処理方式 | |
| JPH02100732A (ja) | プログラム文法チェック方式 | |
| JPH04209029A (ja) | 並列処理プログラム翻訳処理装置 | |
| JP2001034482A (ja) | コンパイル装置、プログラム最適化装置、コンパイル処理方法及び記録媒体 | |
| JPS61235949A (ja) | 翻訳方式 | |
| Hari et al. | CHILL toolset for C-DOT DSS |