JPH02183338A - プログラム言語トランスレータ生成装置および方法 - Google Patents

プログラム言語トランスレータ生成装置および方法

Info

Publication number
JPH02183338A
JPH02183338A JP29988089A JP29988089A JPH02183338A JP H02183338 A JPH02183338 A JP H02183338A JP 29988089 A JP29988089 A JP 29988089A JP 29988089 A JP29988089 A JP 29988089A JP H02183338 A JPH02183338 A JP H02183338A
Authority
JP
Japan
Prior art keywords
language
translator
node
lexical
input
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP29988089A
Other languages
English (en)
Inventor
Domingo Segundo Hidalgo
ドミンゴ・セグンド・ヒダルゴ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02183338A publication Critical patent/JPH02183338A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Machine Translation (AREA)

Abstract

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

Description

【発明の詳細な説明】 A、産業上の利用分野 この発明は全般的にはコンピュータ・プログラミング言
語の変換に関し、より具体的にはコンピュータ・プログ
ラミング言語用のトランスレータを記述するプロセスを
自動化するシステムおよび方法に関する。
B、従来の技術 ]ンピュータ・プログラミング言語を用いて、デジタル
・コンピュータが処理すべき操作シーケンスを記述する
ようになっている。多くの異種のプログラミング言語が
存在し、その幅は、ハードウェアが直接変換するマシン
言語から、八−ドウエアによる実効に先立って等価形態
に変換しなければならない高レベル言語まである。
「トランスレーション」 (変換)はプログラムの形態
を1の言語から他の言語に変化させることを指す用語で
ある。「コンパイル」は「トランスレーションJの類似
語であるけれども、一般には高レベル言語を機械語すな
わちコンピュータ・システムのハードウェアで直接に実
行できる言語に変換する処理を指すものと了解されてい
る。あるいは高レベル言語を、アッセンブリ言語すなわ
ち比較的わずかな操作で機械語に直接に変換できる言語
に、変換する処理を指すものと了解されている。
言語トランスレーションをプログラムする際の問題を解
決するために多くの研究がなされてきた。
そして1つの言語から他の言語へのトランスレータを書
く者をアシストする理論的ないし実際的なツールも利用
可能である。この点に関し、多くの文献があるけれども
、プログラム言語のトランスレーションの理論および実
際を解説するものとして広く知られているものとしては
、”The Theoryof Parsing、Tr
anslation and Compiling” 
、 A。
AhoおよびJ、Vllman、Prentice−1
1all、EngelwoodCliffs、New 
Jersey(1972)および“Pr1nciple
sof Compiler Design” 、A、A
hoおよびJ、Vllman。
Addjson Wesley、Reading、Ma
ryland(1977)がある。
プログラム言語トランスレータを書くのは大変に複雑で
困難な作業である。トランスレータはいくつかの処理を
実行しなければならず、それら処理の各々は個別的にも
複雑なプログラム上の課題である。これら個別の事項は
広い意味でいえば字句解析、構文解析および意味解析を
含む。これらはソース・プログラムの解析ならびに最適
化およびコード生成と関連し、また出力ファイルの構築
にも関連する。
トランスレーション処理のある部分は自動化の余地があ
る。とくに字句解析および構文解析のステップは厳格な
形式的な解析にまかされてきた。
その結果、字句スキャナすなわち字句解析を実行する部
分およびパーサすなわち構文解析を実行する部分を大体
自動的に生成するツールを利用できるようになっている
。このようなツールの一例はLexおよびyaccであ
り、Unix (商標)および関連ソフトウェア・シス
テム上で利用可能である。
Lexおよびyaccのような現行ツールではプログラ
ム言語トランスレータを自動的に生成するという観点か
ら望まれる多くの事項を未解決としている。これらツー
ルは字句スキャニングおよび構文パージングを実行する
プログラム・コードを生成するけれども、統合化されて
いない。Lexによって生成された統語スキャナの出力
を取り出し、yaccによって生成された構文パーサで
利用可能な入力に変換するコードを書くのは依然人間の
トランスレータ・ライタである。さらに人間のトランス
レータ・ライタはすべての必要な意味解析を作成しなけ
ればならない。
Lexおよびyaccのような利用可能なプログラムの
出力は、変換すべき言語の仕様に変更があると自動生成
コード全体にわたって多くの点で変更が必要となるとい
う欠点があった。トランスレータ・ライタは、2度目に
ツールを用いて新しい言語仕様を実行したのちに、トラ
ンスレータ・ライタ自身が個別にコードのすべての部分
を変更してLexおよびyaccで生成したコードの変
更に適合するようにしなければならない。このような変
更は複雑であり極めて多岐にわたるため、変更により加
わったエラーがないと保障するのは困難である。また一
つの部分たとえば字句スキャナになされた変更が他の部
分たとえばパーサに適切に反映すると保障するのも困難
である。
プログラム言語トランスレータ生成処理の部分を、種々
の部分の間の一貫性を、穏やかな要件の下で保障しなが
ら自動化するシステムを提供することが好ましい。さら
にトランスレータのうち自動的に生成された部分と、人
間のトランスレータ・ライタが書くべき部分との間のイ
ンターフェースを簡易に行えるシステムが望まれる。
C1発明が解決しようとする課題 この発明は以上の事情を考慮してなされたものであり、
プログラムの言語トランスレータのソース・コードの部
分を自動的に生成するシステムおよび方法を提供するこ
とを目的としている。
またこの発明はトランスレータのうちユーザが記述すべ
き部分と簡易にインターフェースを行いながらトランス
レータのソース・コードの部分を自動的に生成するシス
テムおよび方法を提供することを目的としている。
さらにこの発明は変換すべき言語に仕様変更がある場合
に簡易にメインテナンスを行えるシステムを提供するこ
とを目的としている。
91課題を解決するための手段 この発明では以上の目的を達成するために、入力言語の
仕様を目的言語の一組のオブジェクトに変換し、これら
オブジェクトを目的言語のプログラム・コードと結合し
て入力言語用のトランスレータを生成するようにしてい
る。
E、実施例 以下の説明では3つのプログラム言語に触れる。
これら3つの言語はメタ言語、目的言語および入力言語
である。メタ言語は入力言語を様式化したものである。
入力言語にはトランスレータがそのために記述されると
ころの言語である。目的言語はトランスレータを記述す
るのに用いる言語である。
第1図において、メタ言語ソース・ファイル10は入力
言語の形式的な仕様を含んでいる。仕様は好ましくは標
準的なフォーマットたとえばBackus−Naurフ
ォーマット(BNF)とされ、入力言語の語常、統語仕
様。および構文を記述する。
メタ言語ソース・ファイル10のステートメントはメタ
言語トランスレータ12により読み取られ、目的言語オ
ブジェクトを含むファイル14に変換される。
メタ言語トランスレータ12は、メタ言語ソース・ファ
イル10を以下の特徴を有する目的言語オブジェクト1
4に変換できる任意のプログラムであってよい。この発
明にあっては、メタ言語ソース・ファイル10およびト
ランスレータ12自体はなくてもよく、目的言語オブジ
ェクト14が直接に保持されてもよい。ただしメタ言語
ソース・ファイル10を用いれば、一般にユーザ(プロ
グラム言語トランスレータを記述する人)が入力言語の
仕様をより明瞭に理解できることになる。
オブジェクト14を記述する目的言語は、トランスレー
タを記述するのに適したいかなる言語であってもよい。
そうような言語の例はC,Pa5calおよびAdaで
ある。目標言語の選択は入力言語と別個に行うことがで
き、一般にユーザが使いなれている言語が選ばれる。
目的言語オブジェクト14は完全なトランスレータを表
わしていない。ユーザは、トランスレータの意味解析部
およびコード生成部を含む1以上のユーザ・ソース・フ
ァイル16を提供する必要がある。ユーザ・ソース16
および目的言語オブジェクト14は目的言語トランスレ
ータ18への入力として用いられる。目標言語トランス
レータ18は実行可能な入力言語トランスレータ20を
生成する。このトランスレータ20は入力言語ソース・
ファイル22からソース・プログラムを読み出して、変
換済み入力言語ファイル24を生成する。変換済み入力
言語ファイル24は実行可能ファイルでもよく、また実
行可能ファイルに実質的に変換できる任意の形態のファ
イルでもよい。
変換済み入力言語ファイル24の形態は、入力言語トラ
ンスレータ20のコード生成部によって決まり、これは
ユーザ・ソース・ファイル16中のコードにより定義さ
れる。
第2図は変換済み入力言語ファイル24を生成するため
に第1図のシステムで実行する一連のステップを示して
いる。まず入力言語の形式定義を生成する(ステップ3
0)。そしてこれをメタ言語ソース・ファイル10に配
置する。つぎに形式定義を目的言語オブジェクト14に
変換する(ステップ32)。ユーザ・ソース・コード1
6(自動生成された目的言語オブジェクトと別個に生成
されている)を結合する(ステップ34)。そして入力
言語トランスレータを生成する(ステップ36)。つぎ
に入力言語トランスレータ20を用いて入力言語ソース
を変換する(ステップ38)。
目的言語オブジェクト14はその性質および機能から、
入力言語トランスレータの字句解析、構文解析および意
味解析の部分を高レベルに統合できる。表1は好ましい
実現例で用いる11個の標準オブジェクトのリストであ
る。
犬よ 1)辞書 2)アルファベット定義 3)字句オブジェクト 4)字句規則リスト 5)字句スキャナ・オブジェクト 6)文法ゴール 7)トータル・グループ・メンバーシップ8)意味機能
リスト 9)構文グラフ・ノード 10)構文グラフ 11)パーサ・オブジェクト 第1のオブジェクトは辞書である。辞書は入力言語用に
語常または予約語を含んでいる。辞書のデータ構造タイ
プは実現急用に応じて決定され、好ましくは効率を向上
させる点からオープン・アドレスのハツシング・スキー
ムを採用する。
2番目のオブジェクトはアルファベット定義オブジェク
トである。このオブジェクトは、入力言語ソース・ファ
イル22をなすキャラクタ・ストリームを、トランスレ
ータ20で用いる内部アルファベットに再定義するのに
用いる。アルファベット定義オブジェクトを用いてユー
ザ定義クラスを保持する。ユーザ定義クラスは字句オブ
ジェクトの定義において単一のエンティティとして扱う
ことができる。アルファベット定義オブジェクトを用い
て通常すべてのキャラクタを大文字ないし小文字に変換
し、またすべての空白(余白)キャラクタたとえばブラ
ンク、タブ、ライン・フィード、キャラリッジ・リター
ンを単一の空白キャラクタ、通常はASCIIの“bl
ank”キャラクタに変換する。アルファベット定義オ
ブジェクトは効率良く、−次元アレイのキャラクタとし
て実現できる。入力ファイル22から読み出された各キ
ャラクタのASCII値はアレイのインデックスとして
用いられ、アレイの各位置のキャラクタがキャラクタの
変換値となる 字句オブジェクトは入力言語のトークンに用いる字句規
則を定義する。3)字句オブジェクトおよび4)字句規
則リストについては第3図を参照して詳細に説明する。
表1の第5番目のオブジェトクは字句スキャナ・オブジ
ェトクであり、字句スキャナが必要とするすべてのデー
タ構造を識別する。表1に示した好ましい実現例では、
これはシンプルストラフチャ(C)またはレコード(P
ascal)であり、項目1〜4へのリンク(たとえば
ポインタ)を含んでいる。
項目6−11は入力言語ソース・ファイル22の構文解
析に用いる。一般に、パーサは許容される構文構造を表
現するグラフをトラバース(横断)して動作する。文法
ゴール・オブジェクト(表1の第6番目)は構文グラフ
内の所定のノードへのポインタを含む。これらポインタ
は、選択された構文構造たとえばプログラム、サブルー
チン、およびステートメント等を定義するために用いる
第1のノードをポイントする。このオブジェクト自体は
ポインタのアレイとして実現できる。
表1の第7番目のオブジェトクすなわちトータル・グル
ープ・メンバーシップは、トークンが予め定められたト
ータル・グループの中の1のトークンかどうかを判別す
るのに用いられる。このオブジェクトは種々の態様で実
現することができる。
好ましくは所定のトークンが具体的なグループに含まれ
るかどうかを表わすプール値を返す1グループの機態か
らなる。あるいは、組のメンバーシップを判別する他の
手法を用いてもよい。
第8番目のオブジェクトすなわち意味機能リストは、ユ
ーザの個別に記述されたソース・ファイル16中にユー
ザにより供給される意味機能へのポインタのリストであ
る。これら手続き(機能)へのポインタはアレイに効率
良くストアできる。
アレイへのインデックスはどの意味機能が用いられるべ
きかを表わすのに用いられる。第4図および表3を参照
して後述するように、パーサはこのアレイで参照される
任意のユーザ供給機能を呼び出すことができる。
第9番目のオブジェクトすなわち構文グラフ・ノードは
構文グラフすなわち第10番目のオブジェクトのすべて
のノードのテンプレートである。
パーサは第4図参照して後述するようにこのグラフをト
ラバースして動作する。
最後のオブジェクトは、パーサ・オブジェクトであり、
このオブジェクトは単にベース位置であり、必要なデー
タ構造の残りを特定する。したがってパーサ・オブジェ
クトは要素5.6.7.8および10の各々へのリンク
を含む。
表1に挙げたオブジェクトはすでに初期化されているデ
ータ構造として供給される。たとえば構文グラフは、メ
タ言語ソース・ファイル1oに与えられているBNF風
のプロダクション(生成)に基づいて完全に構築される
。表1に挙げられているオブジェクトは標準フオームで
あり、入力言語の具体的な要件にしたがって変更する必
要がないことが好ましい。なすなわち単一の目的言語を
用いて種々の異なる入力言語トランスレータを記述する
のなら、標準オブジェクト14のフォーマットを同じも
のにできる。単にオブジェクトに配す実際の値たとえば
辞書、トークン・グループ・メンバーシップおよび構文
グラフを変更するだけでよい。
表1に示したオブジェクトのうちのいくつかをより詳細
に説明しよう。表2は字句オブジェクト中に含まれる情
報を示す。初期キャラクタの組みは、単に字句トークン
を表わすキャラクタ・ストリングの最初のキャラクタと
して許容されるキャラクタの組みである。本体中のキャ
ラクタの組みは同様に許容されるキャラクタの組みであ
る。ただし字句トークン中の最後のキャラクタとして許
容される。キャラクタの部分集合である。スキャナが空
白キャラクタ等の区切りを次キャラクタとして読み出そ
うとするとき、現キャラクタは終了キャラクタの組みの
要素でなければならない。そうでなければ現行の字句オ
ブジェクトは有効でない。終了キャラクタの組みが空集
合であれば、空白キャラクタは字句トークンの終了とし
て解釈される。
スーー々 1)初期キャラクタの組み 2)本体のキャラクタの組み 3)終了キャラクタの組み 4)次字句要素へのポインタ 5)許容キャラクタの最大数 6)キャラクタ出力ファイル・フラグ 7)キャラクタ・バッファ・フラグ 8)終端包含規則 各字句要素は1つの種類の字句オブジェクトをスキャン
する規則を定義する。各タイプの多くの異なる字句オブ
ジェクトが、通常、単一のプログラムの処理の間にスキ
ャンされる。字句要素のタイプはたとえば識別子、数、
操作子、ストリングおよびコメントを含む。
次の字句要素へのポインタすなわち表2の第4番目の項
目は字句要素のリストを一緒に結合するのに用いられる
。第3図は生成された字句規則リスト構造を示す。字句
規則リスト(表1の項目4)自体は第1の字句要素52
への単なるポインタ50である。字句要素52はっぎの
字句要素54をポイントする。この結合リスト構造によ
り、字句スキャニング時に簡易に文脈切り換えを行える
2つの異なる入力言語を含む入力ファイルを変換できる
ようにするのが望まれるのであれば、個別の結合リスト
を双方の字句規則用にそれぞれ保持できる。文脈切り換
えを行うには単に字句規則リスト・ポインタ50を切り
換えて規則の第2リスト中の第1の字句要素をポイント
するようにするだけでよい。
表2の項目5は、トークン中に最大許容文字数がある場
合に、その値を示す。第6項目は、入力文字が読み出さ
れるときにそれら入力文字が出力ファイルにコピーされ
るかどうかを示すのに用いるプール・フラグである。文
字を出力ファイルにコピーすることにより、コンパイル
の出力リストを生成する。第7項目は、トータルが生成
されたのちにこのトータルをバッファに一時的にストア
するかどうかを示すプール・フラグである。パーサが使
用するトークンはストアされ、他方パーサが使用しない
トークンたとえばコメントは廃棄される。
第8項目はトータルを表わすストリングの本体に終端文
字を含ませんのに用いる規則のタイプを示す。この項目
はたとえばストリングを走査する債に有益である。Cに
おいてはストリングを引用符によって区分けし、バック
スラッシュエスケープ文字として用いて引用符をストリ
ング中の文字として扱えるようにする。バックスラッシ
ュによって、スキャナはつぎの引用符がトークンの終端
でないことを判別する。Pa5calにおいては、スト
リング中に単一の引用符を含ませるのに、2つの継続す
る文字にシンボルを繰り返すようにしている。これら2
つの例は、終端包含規則項目の2つの実現可能な値を示
すものである。すなわち二重操作子(Pascalにお
いて)および特殊操作子(Cにおいて)である。
字句走査は新たな字句オブジェクトの第1文字をリスト
中の各字句要素の最初の文字とマツチングさせることに
よって行う。このマツチングは−致が判別されるまで行
われる。つぎに、継続する文字が走査され、本体文字の
組に対してマツチングされる。このマツチングは、区切
りすなわち終端文字の集合の要素たる文字に到達するま
で行う。
この時点では字句オブジェクト中の最後の文字が終端文
字集合と比較されていることになるる字句オブジェクト
が有効であれば字句要素タイプに応じたトークンが生成
される。これが、構文チエツクに必要なすべてである。
ただし、ユーザとしては、この時点でサブルーチンを付
加してトークンを個別に識別し、シンボル・テーブルに
挿入してトランスレータのコード生成部で利用できるよ
うにすることを望であろう。
表3は各構文グラフ・ノード(表1の第9項目)中に含
まれる情報を示す。ノード・タイプ要素はノードのタイ
プを記述し、他方ノード値要素は関連する値を付与する
。好ましい実現例では4つのノード・タイプがある。す
なわち「意味」 :この場合のノード値は意味機能リス
ト・オブジェクト(表1の第8項目)へのインデックス
である、「予約語」 :この場合のノード値は辞書オブ
ジェクト(表1の第1項目)へのインデックスである、
「字句要素名」 :この場合のノード値は字句トークン
のタイプであり、これ自体構文文法中の終端要素である
、「非終端」 :この場合のノード値は文法ゴール・オ
ブジェクト(表1の第6項目)へのインデックスであり
、これが構文グラフへのエントリ点を与える。
聚y 1)ノード・タイプ 2)ノード値 3)次ノードへのポインタ 4)代替ノードへのポインタ 表3の第3および第4のオブジェクトはポインタである
。現行トークンが当該ノードに予定されるトークンと一
致すると次ノードへのポインタが辿られる。現行トーク
ンが当該ノードに示されるトークンと一致しなければ代
替ノードへのポインタが辿られる。
第4図はどのように構文グラフ・ノードを用いて構文グ
ラフを構築するかを示す。第4図は単純な構文グラフの
わずかな部分を示すにすぎない。
第4図は各オブジェクト60〜76は1個の構文グラフ
・ノード(表1の第9項目)を表わす。各ノードは2つ
のポインタを含み、これらは表3の項目3および4に対
応する。各オブジェクトの上側のポインタは次ノードへ
のポインタであり、下側のポインタが代替ノードへのポ
インタである。
NIL (突)へのポインタは次リンクがないことを示
す。
構文グラフはグラ・ノードのタイプをチエツクしてトラ
バースされる。ノード・タイプが予約語または字句名で
あると、字句トークンを読み出して、当該ノードに予定
されている値と比較される。
トークンを構文グラフ中のノードと比較する処理は構文
ノード・タイプに応じて変化する。ノード・タイプが予
約語であればトークンは値フィールドに示される正確な
予約語でなけばならない。ノード・タイプが字句基であ
れば、トークンは値フィールドに示されるタイプの字句
でなければならない。
ノード・タイプが意味であれば、当該ノードに関連する
機能が呼び出され、パースが進行すべきか停止すべきか
を示す結果が返される。意味機能はまた非意味の作用た
とえばトークンをシンボル・テーブルに配置したり、シ
ンボル・テーブルと比較したり、変数タイプへ割り当て
たり変数タイプを比較したり、という作用または他の意
味解析やコード生成機能を実行する。
ノード・タイプが非終端であれば、グラフの現行位置が
スタックに挿入され、当該値フィールドに示されるグラ
フ位置にジャンプがなされる。このジャンプはサブゴー
ルを示す。サブゴールが終了すると(所定の次ノード・
ポインタ・フィールドのNILに到達したことにより表
わされる)現行位置がスタックから取り出され、次ノー
ド・ポインタが辿られて処理が続けられる。サブゴール
自体は再起的に付加的なサブゴールを生成してもよい。
サブゴールへジャンプが行われると、1つの位置にスタ
ックに挿入され、復帰時にその位置がスタックからポツ
プする。プログラムに構文エラーがなければ、最後のト
ークンが読まれた時点でスタックは空となる。
第4図において、構文グラフ中の現行ノードがノード6
0と仮定しよう。そうすると最初のトークンがノード6
0のノード・タイプおよびノード値に比較される。トー
クンが一致すると、構文グラフが辿られてノード62に
到り、第2のトークンがノード62と突き合わされる。
ここで一致が判明すると、グラフが辿られてノード62
に到り、次のノードが突き合わされる。ノード64から
の次ノード・ポインタがNILをポンイトし、この結果
、このノードにおける突き合わせの成功によってグラフ
の当該トラバースが終了することを示される。ノード6
2および64に対する代替ノード・ポインタはともにN
ILをポンイとし、この結果代替がないことが示される
。適切なトークン=23− がノード62ともノード64とも一致しなければ、代替
ノードがないということによって構文エラーが起こって
いることが示される。
ノード60はノード66に対する代替ノードを有する。
したがって、もし最初のトークンがノード60と一致し
ないのであれば、この最初のトークンはノード66と比
較されることになる。このトークンがノード66と一致
しなければ、代替ノードポインタを辿ってノード68に
到り、比較が行われ、さらにグラフにわたって処理が続
けられる。最初のノードがノード66と一致すると、次
のトークンがノード70と比較され、さらに次トークン
がノード70と一致すると第3のトークンがノード72
と比較される。これは上述と同様である。第2のトーク
ンがノード70と一致しなければ代替ノード・ポインタ
により、第2のトークンをノード70と突き合わせなけ
ればならないことが示される。ノード74との突き合わ
せが成功すると、第3のトークンがノード76比較され
る。
上述のシステムによれば、トランスレータが対象とする
入力言語が何であろうと、既知の態様で操作される標準
オブジェクト組を提供できる。したがって、字句スキャ
ニングおよびパージングを入力言語について実行するの
に、入力言語の特別な知識を必要とすることがない。言
語の特別な情報はすべて標準オブジェクトにストアされ
る値に入れ込まれる。したがって、たとえば入力言語の
構文は、ストアされるデータと、初期化された構文グラ
フのノードとの相互関係によって完全に定義される。1
つの構文グラフを他の構文ダラムに置き換えることによ
って、パージング・ルーチンに悪影響を与えることなく
新しい入力言語を定義できる。単にデータが変更される
だけである。
F1発明の詳細 な説明したように、この発明によれば入力言語の仕様を
目的言語の一組のオブジェクトに変換し、これらオブジ
ェクトを目的言語のプログラム・コードと結合して入力
言語用のトランスレータを生成するようにしているので
、トランスレータのうちユーザが記述すべき部分と簡易
にインターフエースを行いながらトランスレータのソー
ス・コードの部分を自動的に生成でき、さらに仕様変更
に簡易に対処できる。
【図面の簡単な説明】
第1図はこの発明の実施例を示すブロック図、第2図は
第1図実施例を説明するフローチャート、第3図は上述
実施例の字句スキャナで用いるデータ構造を示す図、第
4図は上述実施例のパーサで用いるデータ構造を示す図
である。 10・・・・・・メタ言語ソース・ファイイル、12・
・・・・メタ言語トランスレータ、14・・・・・・目
的言語オブジェクト、16・・・・・・ユーザ・ソース
・ファイル。 18・・・・・・目的言語トランスレータ、20・・・
・・・入力言語トランスレータ、22・・・・・入力言
語ソース・ファイル、24・・・・・・変換済み入力言
語ファイル。 出願人  インターナショナル・ビジネス・マシーンズ
・コーポレーション 復代理人 弁理士 澤 1)俊 夫

Claims (2)

    【特許請求の範囲】
  1. (1)入力言語の仕様を生成するステップと、上記入力
    言語の仕様を目的言語の一組のオブジェクトに変換する
    ステップと、 上記オブジェクトと、目的言語で独立して生成されたコ
    ードとを結合するステップと、 上記コードを実行可能な形態に変換して入力言語トラン
    スレータを生成するステップとを有することを特徴とす
    るプログラム言語トランスレータ生成方法。
  2. (2)入力言語の字句および構文の仕様を含む第1のソ
    ース・ファイルと、 上記第1のソース・ファイルを目的言語の複数のオブジ
    ェクトに変換し、これらオブジェクトによって上記入力
    言語の字句および構文の構造を定義する第1の変換手段
    と、 上記目的言語のプログラム・コードを含む第2のソース
    ・ファイルと、 上記目的言語のプログラム・コードおよび目的言語のオ
    ブジェクトを単一の実行可能ファイルに変換して上記入
    力言語用のトランスレータとする第2の変換手段とを有
    することを特徴とするプログラム言語トランスレータ生
    成装置。
JP29988089A 1988-11-29 1989-11-20 プログラム言語トランスレータ生成装置および方法 Pending JPH02183338A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US27755288A 1988-11-29 1988-11-29
US277552 1988-11-29

Publications (1)

Publication Number Publication Date
JPH02183338A true JPH02183338A (ja) 1990-07-17

Family

ID=23061358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29988089A Pending JPH02183338A (ja) 1988-11-29 1989-11-20 プログラム言語トランスレータ生成装置および方法

Country Status (3)

Country Link
EP (1) EP0371943A3 (ja)
JP (1) JPH02183338A (ja)
BR (1) BR8906004A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426534A (zh) * 2011-11-02 2012-04-25 大唐移动通信设备有限公司 一种实现测试脚本语言转换成可执行指令的方法及系统

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06332680A (ja) * 1993-05-21 1994-12-02 Tadao Shogetsu プログラム自動生成装置
FI111107B (fi) * 2001-05-15 2003-05-30 Softageneraattori Oy Menetelmä translaattorin kehittämiseksi ja vastaava järjestelmä
CN109933786B (zh) * 2019-02-13 2022-08-30 卡斯柯信号有限公司 基于编译规则的应答器报文工具的构建方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6293735A (ja) * 1985-10-17 1987-04-30 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コンパイラ

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6293735A (ja) * 1985-10-17 1987-04-30 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション コンパイラ

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102426534A (zh) * 2011-11-02 2012-04-25 大唐移动通信设备有限公司 一种实现测试脚本语言转换成可执行指令的方法及系统
CN102426534B (zh) * 2011-11-02 2014-06-04 大唐联仪科技有限公司 一种实现测试脚本语言转换成可执行指令的方法及系统

Also Published As

Publication number Publication date
BR8906004A (pt) 1990-06-19
EP0371943A3 (en) 1991-09-25
EP0371943A2 (en) 1990-06-06

Similar Documents

Publication Publication Date Title
US5895446A (en) Pattern-based translation method and system
EP0204942A2 (en) Compiler for a source program, a method of making the same and its use
Cheatham Jr The introduction of definitional facilities into higher level programming languages
Breuer et al. A prettier compiler‐compiler: Generating higher‐order parsers in C
Kastens Attribute grammars in a compiler construction environment
Koskimies et al. The design of a language processor generator
JPH02183339A (ja) コンピユータ・プログラム変換装置および方法
JPH02183338A (ja) プログラム言語トランスレータ生成装置および方法
Paakki Prolog in practical compiler writing
Marti RLISP'88: an evolutionary approach to program design and reuse
Greenwood MACRO: a programming language
Abramson Definite Clause Translation Grammars and the Logical Specification of Data Types as Unambiguous Context Free Grammars
Abrahams The CIMS PL/I compiler
Nirenburg et al. HUHU: the hebrew university hebrew understander
Mössenböck A generator for fast compiler front-ends
Chisolm et al. ATLAS compiler development
KR0168929B1 (ko) 칠 전위처리기의 전위처리 방법
Lecarme Usability and portability of a compiler writing system
Lee A comparison of three parsing techniques
Lewi et al. SLS/1: a translator writing system
Piastra et al. An efficient context-free parsing algorithm with semantic actions
Klint From SPRING to SUMMER: design, definition and implementation of programming languages for string manipulation and pattern matching
Fessler et al. User's Guide for SFTRAN/360
JP3044463B2 (ja) データ変換方法
Bickmore et al. MultiLex, a pipelined lexical analyzer