JPS62163146A - 計算機言語の変換処理方式 - Google Patents

計算機言語の変換処理方式

Info

Publication number
JPS62163146A
JPS62163146A JP539286A JP539286A JPS62163146A JP S62163146 A JPS62163146 A JP S62163146A JP 539286 A JP539286 A JP 539286A JP 539286 A JP539286 A JP 539286A JP S62163146 A JPS62163146 A JP S62163146A
Authority
JP
Japan
Prior art keywords
language
tree
node
word
computer
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
JP539286A
Other languages
English (en)
Inventor
Keisuke Toyama
圭介 十山
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP539286A priority Critical patent/JPS62163146A/ja
Publication of JPS62163146A publication Critical patent/JPS62163146A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は計算機言語の変換処理方式に関し、特に計算機
言語(以下、単に「言語」という)を翻訳するシステム
における言語の計算機内部表現である中間語の構成とそ
の操作において、計算機の機種や翻訳する言語に依存し
ない論理性の高さ、操作の一般性に優れた言語の変換処
理方式に関する。
〔従来の技術〕
言語の処理プログラムにおいては、入力された高級言語
を直接に対象計算機の機械語に変換するのではなく、何
段階かの中間的なレベルの言語を設定し、それらを順次
適用することによって翻訳処理を進めるのが通常のやり
方である。このとき言語の意味情報は記号表や属性等で
表現される。
上述の各種のレベルの中間語や属性の集合は対象とする
言語や計算機機種によって異なるため、従来、コンパイ
ラの開発は個別言語・個別計算機毎のものとならざるを
得なかった。
この問題を解決する手段として、カーネギ−・メロン大
学のPQCCプロジェクト等での取組みが行われて来た
(例えば、”An 0vervj、ew of t、h
eP roductj、on −Q ualj ty 
  Compi、ler −Compj、1erPro
ject”、Computer、August 198
0参照)が、属性文法等最近の手法を全過程にわたって
系統的に適用するには、未だ不充分な点がある。
この他の参考文献としては、コンピュータソフトウェア
V o 1 、2 N o 、 3 (1985) 記
載(7) ” fFA 性交法” 。
情報処理学会第31回(昭和60年後期)全国大会講演
要旨集pP307記載の″拡張属性文法に基づくCコン
パイラの意味解析仕様記述等がある。
〔発明が解決しようとする問題点〕
コンパイラを作る場合には、この部分はこうするという
如く、処理の内容がある程度固定されていることが望ま
しい。しかしながら、上述の各方式においても、個々に
異なる中間語からコードを生成することに重点が置かれ
ているのが実状であり、その前の段階である、意味を記
述する段階での系統的な処理の確立に関しては、殆んど
考慮されていない。
本発明の目的は、従来の言語の変換処理方式における上
述の如き問題を解消し、翻訳過程を統一化した処理によ
り効率良く行うことが可能で、多機種、多言語に対する
高品質で高性能なコンパイラを短期間で開発可能とする
言語の変換処理方式を提供するごとにある。
〔問題点を解決するための手段〕
本発明の目的は、中間語の論理的構造を固定し、中間語
要素を参照・更新する操作をパッケージ化して抽象デー
タとして扱い、計算機機種・言語における差異は付与さ
れた属性の情報を可変とすることで、翻訳過程における
処理ならびに翻訳過程そのものを系統化することを可能
とする言語の変換処理方式によって達成される。
〔作用〕
本発明の作用は、翻訳処理系において、中間語の論理的
な構造を木構造として固定し、その各節点に可変個数の
属性を付与する構成とし、該木構造をなすデータの集合
や属性の集合に対して、専用の手続きだけを介して参照
・更新を行うことにより、それぞれのデータの内容に依
存しない処理を可能とするものである。翻訳処理は属性
の評価と木の節点の変換によって進行する。
〔実施例〕
以下、本発明の原理を簡単に説明した後、実施例により
本発明をより詳細に説明する。
前述の中間語の木は、節点の集合と相異なる節点を論理
的に結びつける枝の集合とによって構成される。第2図
は6個の節点1〜6から成る木を例示するものである。
7〜11は節点からその子供となる節点への枝を示して
いる。1つの節点が従える子供となる節点の数は有限の
可変数である。
各節点の論理的な構造は第3図に示す通りである。12
は節点を識別する名称、13は枝情報、14以下はこの
節点に付与された属性である。節点は1つの中間語のオ
ペレーションを他から区別するための「入れ物」であり
、属性によって節点の性質、すなわち、言語が持つ意味
情報が表現される。広い意味では、第3図の節点名称1
2.枝情報13も属性であるが、ここでは、節点名称や
枝情報は属性とは区別して扱う。
第1図は本発明の要点である木構造中間語を用いた翻訳
過程の概念を示す。コンパイラの入力となるソース言語
(]、)15は構文解析系(P )16で文法規則の検
査を受け、抽象構文木として中間語(1)17が出力さ
れる。更に、この抽象構文木は意味解析系(S)]、8
で意味の検査を受け、得られた意味情報を抽象構文木の
属性として付与した属性付き抽象構文木として中間語(
2)19が出力される。
上記中間語(2)19は更に変換され、中間語(3)2
0以下の何段階かの中間語を経る変換過程で、記憶域の
割付けやデータへのアクセスパス、レジスタの割当て等
が順次割当て系(A)22によってなされ、最後にコー
ド生成系(C)2/Iによって対象計算機機種のオブジ
ェクト(1)21に移って行く。上記変換過程のある段
階(一つまたは複数)で最適化処理が行われる。これは
最適化系(○)23で行われるものであり、不要なコー
ドの除去やループ内での演算の軽減等を、フロー情報の
属性を利用して行う。
コードは部分木に対応し、その除去や移動、誘導変数の
処理を実現するコードの生成はすべて部分木に対する基
本操作で実現される。その処理は木という論理的に固定
された形式に対して共通にすることが可能であり、第1
図25以下のソース言語および26以下のオブジェクト
として、対象計算機として複数のものを与えても、中間
語の形式を木構造として固定することにより、アクセス
ルーチン27は共通のものとして構成できる。
コンパイラにおける木の操作は、文字列から木および木
から木の2種類に大きく分類され、その一般的手順は第
4図、第5図に示すようになる。
木から文字列への変換は、文字列を一段階だけの子供を
持つ木とみなすことで一般化する。
′a:=b′が代入文として認識され、第4図のステッ
プ28に従って「代入文」の構文要素が入力されて、代
入文に対する意味材はルーチンが起動された場合の′a
:=b′に対する属性付き抽象構文木の生成過程を以下
に示す。
ア) 節点名称’assign’を持つ2子節点(その
子供として2つの部分木を持つ節点)を、アクセスルー
チン’make’を呼出すことによって作成する(第4
図ステップ29)。
イ) 節点名称’j−d’を持っ0子節点(葉節点)を
上記’make’で作成する。
つ) 上記節点に対して変数名aに付随する記情報を属
性として付与する。この操作はアクセスルーチン’at
tach’を呼出すことによって行う。
工)、オ) 変数すに対して上記手順イ)、つ)を行う
力) 上記節点’assign’の第1子に、」二記手
順イ)、つ)で得られた節点を、また、第2子に」二記
手順工)、オ)で得られた節点を結び付ける(ステップ
30)。この操作はアクセスルーチン’connect
’を呼出すことによって行う。
キ) 代入文に対して与えられている意味情報からその
属性を得て、上記’assjgn’節点に付与する。
上述のア)〜キ)の手順により、第6図に示す部分木(
中間語)が生成される。この部分木は第4図における処
理ステップ29〜33を繰返して適用することによって
、更に上位の構文要素に対する節点の子供として結び付
けられ、中間語プログラムとなる。
次に、第5図により上記代入文の削除について説明する
。この代入文はassign’を根部点とした部分木で
ある。処理ステップ34により、上記節点’assig
n・を訪れ、属性によってこの部分木が削除対象である
と判明する。ステップ38により共通アクセスルーチン
の中の部分木削除ルーチンを呼出し、削除を実行する。
次に、ステップ39.40によって中間語の木が終了し
ていなければ、次の部分木ト;対して処理を続ける。
上述の如く、構文規則や木構造という一定の構造を有す
る中間語を、その解析手法に従って辿りながらアクセス
ルーチンを呼出して行くことにより変換を進行させ翻訳
を行う。
アクセスルーチンは木構造という論理的な構造だけに依
存するものである。木構造はその節点によるランダムア
クセスが可能であり、構造に従って各節点をアクセスす
ることにより、指定した順序で辿ることが可能である。
更に、一つの節点はそれ以外の部分木を同時に示してい
るため、木の変換が部分木に対する変換として記述でき
る。
上述の如く、木構造に対しては 1) 節点の構造に従ってその子供をアクセスする 2) 節点の子供として他の節点を結び付ける(con
nect) 3) 新たな節点を作成する(make)という基本操
作の組合せで任意の操作が実現できる。第1図に示した
共通アクセスルーチンパッケージ27はこのようにして
実現される。
中間語へのアクセスを上記アクセスルーチンだけに限定
することにより、その使用者は中間語の物理的な構成を
意識せずに利用できるという効果を奏する。
〔発明の効果〕
以上述べた如く、本発明によ九ば、コンパイラの開発に
関して次の如き効果を奏する。
■) 中間語の構造が固定されているため、コンバイラ
作成者が中間語の形式やその物理的な編成を意識する必
要がない。
2) 中間語に対する操作が共通のものとしてパッケー
ジ化されているため、コンパイラ作成者は中間語に対す
る操作をアクセスルーチンの呼出しの系列として記述で
きるので、高信頼、高効率な開発が可能になる。
3) 言語や計算機機種に依存する情報を属性として中
間語の構造と独立させたことにより、多機種・多言語に
対しても中間語の枠組を一定として対処できる。
以上により、翻訳過程を統一化した処理により効率良く
行うことが可能となり、多機種、多言語に対する高品質
で高性能なコンパイラを短期間で開発することが可能と
なる。
【図面の簡単な説明】
第1図は本発明の実施例を示すコンパイル過程を示す図
、第2図は本発明の基本的考え方である木構造の例を示
す図、第3図は一つの節点の論理的構造を示す図、第4
図は文字列から木への変換手順を示す図、第5図は木か
ら別な木への変換手順を示す図、第6図は部分木を示す
図である。 1〜6:節点、7へ・11:枝、16:構文解析系、1
8:意味解析系、22:割当て系、23;最適化系、2
4:コード生成系、27:木構造・属性アクセスルーチ
ンパッケージ。

Claims (1)

    【特許請求の範囲】
  1. (1)一つの計算機言語から他の計算機言語への変換処
    理を行う情報処理装置において、後述する木構造および
    属性情報をアクセスするためのルーチンプログラムを格
    納する手段を設け、計算機言語の論理構造を各種の計算
    機言語ならびに計算機機種について共通の木構造として
    表現し、計算機言語や計算機機種に依存する情報を属性
    として抽出して木構造の節点に付与し、前記ルーチンプ
    ログラムにより、前記木構造あるいは各種の付与属性に
    対する設定や参照を、木構造や属性の物理的な表現形式
    に依存しない共通の処理手続きを経由してのみ行うこと
    を特徴とする計算機言語の変換処理方式。
JP539286A 1986-01-14 1986-01-14 計算機言語の変換処理方式 Pending JPS62163146A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP539286A JPS62163146A (ja) 1986-01-14 1986-01-14 計算機言語の変換処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP539286A JPS62163146A (ja) 1986-01-14 1986-01-14 計算機言語の変換処理方式

Publications (1)

Publication Number Publication Date
JPS62163146A true JPS62163146A (ja) 1987-07-18

Family

ID=11609886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP539286A Pending JPS62163146A (ja) 1986-01-14 1986-01-14 計算機言語の変換処理方式

Country Status (1)

Country Link
JP (1) JPS62163146A (ja)

Similar Documents

Publication Publication Date Title
US5586328A (en) Module dependency based incremental compiler and method
JP2666847B2 (ja) 異種言語間連絡方式
JPS6375835A (ja) 目的コ−ド、プログラム・リスト及び設計文書を生成する装置
JPS61282935A (ja) プログラムにおける属性割当て検査方法及び装置
US6083282A (en) Cross-project namespace compiler and method
JP2000035893A (ja) デ―タ処理システムの配列の静的初期化方法、デ―タ処理方法、並びにデ―タ処理システム及びその制御手順をコンピュ―タに実行させるプログラムを記憶したコンピュ―タ読み取り可能な記憶媒体
Shaughnessy Ruby Under a Microscope: An Illustrated Guide to Ruby Internals
CN111367937B (zh) 一种数据处理方法和装置
JPS62163146A (ja) 計算機言語の変換処理方式
JP7059757B2 (ja) Api処理方法、端末、api処理プログラム
GB2420638A (en) Method of substituting code fragments in Internal Representation
Plasmeijer Clean: a programming environment based on term graph rewriting
CN112579059A (zh) 支持有限域数据类型和运算符的编译方法
Boyland et al. Attributed transformational code generation for dynamic compilers
Feldman Edward W. Czeck
Shaughnessy Ruby Under a Microscope: Learning Ruby Internals Through Experiment
JPH04248624A (ja) プログラム変換処理装置
JPS6365530A (ja) コ−ド最適化方式
Gamble et al. Explicit Parallel Programming: System Description
JPH07141178A (ja) オブジェクトアクセス装置
Walker First-class patterns for Icon
JP2004252536A (ja) プログラム開発支援装置
Sestoft et al. From Concrete Syntax to Abstract Syntax
JPH0498322A (ja) コンパイラの作成方法
JPH08161179A (ja) 一文実行方法