JPH0424746A - プログラム翻訳処理装置 - Google Patents
プログラム翻訳処理装置Info
- Publication number
- JPH0424746A JPH0424746A JP12500190A JP12500190A JPH0424746A JP H0424746 A JPH0424746 A JP H0424746A JP 12500190 A JP12500190 A JP 12500190A JP 12500190 A JP12500190 A JP 12500190A JP H0424746 A JPH0424746 A JP H0424746A
- Authority
- JP
- Japan
- Prior art keywords
- expression
- program
- tree structure
- delimiters
- operand
- 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
【発明の詳細な説明】
〔概 要〕
計算機の原始プログラムを目的プログラムに翻訳するた
めのプログラム翻訳処理装置に関し、プログラム文の構
造を表す木構造を生成して、高度の翻訳処理を比較的容
易に構成できるようにした、プログラム翻訳処理装置を
目的とし、構文解析部と、意味解析部と詳細解析部とを
有し、該構文解析部は、所与の原始プログラムを解析し
て、所定の文法の構文規則に従う該原始プログラムを所
定の区切り記号によって切り分けて、文節と区切り記号
の列に分解し、該意味解析部は、該文法の意味規則に従
う該文節と区切り記号の列について、所定の括弧の包含
関係に基づいて定まる木構造を生成し、該木構造は、該
原始プログラムの、演算を表す式と、該演算のオペラン
ドを指定する情報に含まれる式とを区別する構造を有し
、該詳細解析部は、該木構造に基づいて、該区分に従い
当該式を処理して、各該オペランドについて当該オペラ
ンドの相対位置を直接表す所定の中間言語表現を生成す
るように構成する。
めのプログラム翻訳処理装置に関し、プログラム文の構
造を表す木構造を生成して、高度の翻訳処理を比較的容
易に構成できるようにした、プログラム翻訳処理装置を
目的とし、構文解析部と、意味解析部と詳細解析部とを
有し、該構文解析部は、所与の原始プログラムを解析し
て、所定の文法の構文規則に従う該原始プログラムを所
定の区切り記号によって切り分けて、文節と区切り記号
の列に分解し、該意味解析部は、該文法の意味規則に従
う該文節と区切り記号の列について、所定の括弧の包含
関係に基づいて定まる木構造を生成し、該木構造は、該
原始プログラムの、演算を表す式と、該演算のオペラン
ドを指定する情報に含まれる式とを区別する構造を有し
、該詳細解析部は、該木構造に基づいて、該区分に従い
当該式を処理して、各該オペランドについて当該オペラ
ンドの相対位置を直接表す所定の中間言語表現を生成す
るように構成する。
本発明は、計算機の原始プログラムを目的プログラムに
翻訳するプログラム翻訳処理装置に関する。
翻訳するプログラム翻訳処理装置に関する。
FORTRAN等のプログラミング言語で記述された計
算機の原始プログラムを、所要の計算機で実行するため
の目的プログラムに翻訳する、いわゆるコンパイラはよ
く知られている。第4図はこのようなコンパイラ機能を
実行するプログラム翻訳処理装置1の構成例である。
算機の原始プログラムを、所要の計算機で実行するため
の目的プログラムに翻訳する、いわゆるコンパイラはよ
く知られている。第4図はこのようなコンパイラ機能を
実行するプログラム翻訳処理装置1の構成例である。
プログラム翻訳処理装置1は、例えばFORTRAN言
語TR法された原始プログラム2を入力すると、構文解
析部3がFORTRAN言語TR法に従う構文解析を行
って、構文上の誤りを検査し、構文誤りの無い原始プロ
グラムについて、文節と区切り記号の列4を生成する。
語TR法された原始プログラム2を入力すると、構文解
析部3がFORTRAN言語TR法に従う構文解析を行
って、構文上の誤りを検査し、構文誤りの無い原始プロ
グラムについて、文節と区切り記号の列4を生成する。
文節と区切り記号の列4は、所定の区切り記号、例えば
= (、)、十その他の記号、を区切りとし、その他の
文字、数字等の記号からなる文節と区切り記号との集合
に切り分けてつないだもので、例えば、 C=A (B (I+1) +1)+A、(J+1)の
ような代入文は、 “C=→”Aじ→“Bじ→“工+゛ →″1)“′→°′φ十′′→°“l)”→“φ+”→
“Aじ→“J+”→“1)”。
= (、)、十その他の記号、を区切りとし、その他の
文字、数字等の記号からなる文節と区切り記号との集合
に切り分けてつないだもので、例えば、 C=A (B (I+1) +1)+A、(J+1)の
ような代入文は、 “C=→”Aじ→“Bじ→“工+゛ →″1)“′→°′φ十′′→°“l)”→“φ+”→
“Aじ→“J+”→“1)”。
のようになる。こ\で、「“」と「”」とで囲まれる各
部が切り分は結果の各集合であり、「→」でそれらがリ
ンクされていることを概念的に示す。
部が切り分は結果の各集合であり、「→」でそれらがリ
ンクされていることを概念的に示す。
なお、「φ」は区切り記号が連続している場合等に制御
のために置かれる記号である。
のために置かれる記号である。
次に意味解析部5が、文節と区切り記号の列4について
、FORTRAN言語TR法に従う意味解析を行って誤
り検査を行い、正しければ配列データの添字の解析等を
行い、固定部と可変部を求めて、各変数をij域と領域
内相対位置で直接表現した形の中間言語表現6を生成す
る。
、FORTRAN言語TR法に従う意味解析を行って誤
り検査を行い、正しければ配列データの添字の解析等を
行い、固定部と可変部を求めて、各変数をij域と領域
内相対位置で直接表現した形の中間言語表現6を生成す
る。
この中間言語表現6について、翻訳部7がいわゆる最適
化処理を行った後コード化処理をすることによって、い
わゆる機械語に対応する目的プログラム8を生成する。
化処理を行った後コード化処理をすることによって、い
わゆる機械語に対応する目的プログラム8を生成する。
以上の処理において、演算を表す式は、例えば代入文の
右辺で代入結果を求めるための演算を指定する式の他に
、その演算のオペランドを定義するために、配列要素の
添字等に現れる式がある。
右辺で代入結果を求めるための演算を指定する式の他に
、その演算のオペランドを定義するために、配列要素の
添字等に現れる式がある。
後者の種類の式には、1配列要素を定義するために、「
配列名(添字式)」の形で使用されるもの、複数の配列
要素を配列区分として定義するために「配列名(添字式
:添字式:一−−−−・−:添字式)」の形で使用され
るものがあり、又文字型変数や、配列の1要素の一部を
取り出すための定義として「文字型変数名(開始位置式
:終了位置式)」、又は[文字型配列基(添字式)(開
始位置式:終了位置式)」の形で使用される部分列式等
の各弐等がある。
配列名(添字式)」の形で使用されるもの、複数の配列
要素を配列区分として定義するために「配列名(添字式
:添字式:一−−−−・−:添字式)」の形で使用され
るものがあり、又文字型変数や、配列の1要素の一部を
取り出すための定義として「文字型変数名(開始位置式
:終了位置式)」、又は[文字型配列基(添字式)(開
始位置式:終了位置式)」の形で使用される部分列式等
の各弐等がある。
それらの式の評価については、代入文の演算式とは区別
して、指定の各データ要素を決定する結果を得るように
処理する必要があり、例えば配列の添字式は固定部と可
変部から成るようにして、機械語のインデクスと変位に
対応できるようにする。又、デバッグ機能で指定される
場合には、添字式の値が配列で宣言されている下限と上
限の間にあるかをチエツクし、又部分列式の開始及び終
了位置の妥当性等をチエツクするための準備が要求され
る。
して、指定の各データ要素を決定する結果を得るように
処理する必要があり、例えば配列の添字式は固定部と可
変部から成るようにして、機械語のインデクスと変位に
対応できるようにする。又、デバッグ機能で指定される
場合には、添字式の値が配列で宣言されている下限と上
限の間にあるかをチエツクし、又部分列式の開始及び終
了位置の妥当性等をチエツクするための準備が要求され
る。
[発明が解決しようとする課題]
以上の処理のために意味解析部5は、文節と区切り記号
の列を処理する場合に、括弧の対応を管理して配列要素
の引用の添字式の中に更に配列要素の引用があるような
場合を識別して、添字式や部分列式と他の式とを区別し
ながら、式の評価を処理する必要があるので、処理が複
雑化し易く、処理性能の改善や、高度な最適化処理の導
入等を困難にしている。
の列を処理する場合に、括弧の対応を管理して配列要素
の引用の添字式の中に更に配列要素の引用があるような
場合を識別して、添字式や部分列式と他の式とを区別し
ながら、式の評価を処理する必要があるので、処理が複
雑化し易く、処理性能の改善や、高度な最適化処理の導
入等を困難にしている。
本発明は、プログラム文の構造を表す木構造を生成して
、高度の翻訳処理を比較的容易に構成できるようにした
、プログラム翻訳処理装置を目的とする。
、高度の翻訳処理を比較的容易に構成できるようにした
、プログラム翻訳処理装置を目的とする。
第1図は、本発明の構成を示すブロック図である。
図はプログラム翻訳処理装置10の構成であって、構文
解析部3と、意味解析部11と詳細解析部12とを有し
、構文解析部3は、所与の原始プログラム2を解析して
、所定の文法の構文規則に従う該原始プログラムを所定
の区切り記号によって切り分けて、文節と区切り記号の
列4に分解し、意味解析部11は、該文法の意味規則に
従う文節と区切り記号の列4について、所定の括弧の包
含関係に基づいて定まる木構造13を生成し、木構造1
3は、原始プログラム2の、演算を表す式と、該演算の
オペランドを指定する情報に含まれる式とを区別する構
造を有し、詳細解析部12は、木構造13に基づいて、
該区分に従い当該式を処理して、各該オペランドについ
て、当該オペランドの相対位置を直接表す所定の中間言
語表現14を生成する。
解析部3と、意味解析部11と詳細解析部12とを有し
、構文解析部3は、所与の原始プログラム2を解析して
、所定の文法の構文規則に従う該原始プログラムを所定
の区切り記号によって切り分けて、文節と区切り記号の
列4に分解し、意味解析部11は、該文法の意味規則に
従う文節と区切り記号の列4について、所定の括弧の包
含関係に基づいて定まる木構造13を生成し、木構造1
3は、原始プログラム2の、演算を表す式と、該演算の
オペランドを指定する情報に含まれる式とを区別する構
造を有し、詳細解析部12は、木構造13に基づいて、
該区分に従い当該式を処理して、各該オペランドについ
て、当該オペランドの相対位置を直接表す所定の中間言
語表現14を生成する。
このプログラム翻訳処理装置により、文節と区切り記号
の列について先ず本発明の意味解析部までで構文の構造
解析と所要の意味解析を行って、構文を表す木構造を生
成し、その木構造を詳細解析部が処理して中間言語表現
を生成して、翻訳部に渡す。従って詳細解析部は、式を
評価するために木構造から式を取り出すとき、その式が
添字式等か、代入文右辺の式なのか等の区分が自動的に
識別され、その区分に従って式の処理に入ることができ
る。このようにして、処理の構成が簡明になり、処理性
能の改善や、高度な最適化処理の導入等を容易化する。
の列について先ず本発明の意味解析部までで構文の構造
解析と所要の意味解析を行って、構文を表す木構造を生
成し、その木構造を詳細解析部が処理して中間言語表現
を生成して、翻訳部に渡す。従って詳細解析部は、式を
評価するために木構造から式を取り出すとき、その式が
添字式等か、代入文右辺の式なのか等の区分が自動的に
識別され、その区分に従って式の処理に入ることができ
る。このようにして、処理の構成が簡明になり、処理性
能の改善や、高度な最適化処理の導入等を容易化する。
第2図(a)は前記と同様の代入文に対応する木構造の
例を示し、構文ノードは文の種類「代入文」と、左辺、
右辺の内容を指すポインタからなり、左辺は変数名「C
」を指示し、右辺は演算とオペランドを示すための2項
演算ノードを指示する。
例を示し、構文ノードは文の種類「代入文」と、左辺、
右辺の内容を指すポインタからなり、左辺は変数名「C
」を指示し、右辺は演算とオペランドを示すための2項
演算ノードを指示する。
2項演算ノードは演算子とその後に2項のポインタで、
オペラン°ド又は次の演算を示す2項演算ノードを指示
するようにする。
オペラン°ド又は次の演算を示す2項演算ノードを指示
するようにする。
本例の場合両ポインタでオペランドを指示するが、配列
要素、配列区分、部分列等は副オブジェクトノードで表
すものとし、第1のオペランドについては、名前のポイ
ンタで「A」を指示し、添字式のポインタでは、添字式
が演算子を持つ式なので2項演算ノードを指示し、この
2項演算ノードの指示するオペランドの一方は配列要素
なので副オブジェクトノードを指示し、他方は定数なの
でその定数を示す領域を指示する。このようにして、代
入文に対応する木構造を構成する。
要素、配列区分、部分列等は副オブジェクトノードで表
すものとし、第1のオペランドについては、名前のポイ
ンタで「A」を指示し、添字式のポインタでは、添字式
が演算子を持つ式なので2項演算ノードを指示し、この
2項演算ノードの指示するオペランドの一方は配列要素
なので副オブジェクトノードを指示し、他方は定数なの
でその定数を示す領域を指示する。このようにして、代
入文に対応する木構造を構成する。
第2図(b)は部分列を表す副オブジェクトノードの例
であって、部分列をr A (3,2) (2:3)
Jとした場合に、名前ポインタで「A」、添字ポインタ
で添字ノード、部分列ポインタで部分列ノードを指示す
る図のような構成になる。なお、以上の各ノードにはノ
ードの種類を示す情報があるが図では省略しである。
であって、部分列をr A (3,2) (2:3)
Jとした場合に、名前ポインタで「A」、添字ポインタ
で添字ノード、部分列ポインタで部分列ノードを指示す
る図のような構成になる。なお、以上の各ノードにはノ
ードの種類を示す情報があるが図では省略しである。
第1図において、構文解析部3は従来と同様に、原始プ
ログラム2から文節と区切り記号の列4をによって誤り
検査を行うが、本発明により、従来のような中間言語表
現出力までの処理は行わず、文節と区切り記号の列4を
括弧の内包関係に着目して構造化し、前記例のような木
構造13を生成する。そこで、詳細解析部12が木構造
13を処理して、中間言語表現14を生成する。
ログラム2から文節と区切り記号の列4をによって誤り
検査を行うが、本発明により、従来のような中間言語表
現出力までの処理は行わず、文節と区切り記号の列4を
括弧の内包関係に着目して構造化し、前記例のような木
構造13を生成する。そこで、詳細解析部12が木構造
13を処理して、中間言語表現14を生成する。
第3図は、詳細解析部12が前記の2項演算ノード等か
ら指示する1オペランドを取り出して処理する場合の処
理の流れの一例であり、処理ステップ20でオペランド
の最初のノードを取り出し、処環ステップ21でそれが
副オブジェクトノードか識別し、副オブジェクトノード
でない場合には処理ステップ22で他の種類のオペラン
ド、即ち定数や単純変数オペランドの場合の処理をする
。
ら指示する1オペランドを取り出して処理する場合の処
理の流れの一例であり、処理ステップ20でオペランド
の最初のノードを取り出し、処環ステップ21でそれが
副オブジェクトノードか識別し、副オブジェクトノード
でない場合には処理ステップ22で他の種類のオペラン
ド、即ち定数や単純変数オペランドの場合の処理をする
。
副オブジェクトノードであれば、処理ステップ23で添
字があるか識別し、添字があれば処理ステップ24で、
添字式のポインタの指示するノードを取り出して添字式
の処理をする。
字があるか識別し、添字があれば処理ステップ24で、
添字式のポインタの指示するノードを取り出して添字式
の処理をする。
次の処理ステップ25で再び副オブジェクトノードによ
り部分列があるか識別し、部分列があれば処理ステップ
26で、部分列のポインタの指示するノードを取り出し
て部分列の処理をする。
り部分列があるか識別し、部分列があれば処理ステップ
26で、部分列のポインタの指示するノードを取り出し
て部分列の処理をする。
以上の添字式の処理、部分列の処理において、構文によ
り更に2項演算ノード、そのオペランドの副オブジェク
トノード等がリンクしていれば、それらを再帰的に処理
する。
り更に2項演算ノード、そのオペランドの副オブジェク
トノード等がリンクしていれば、それらを再帰的に処理
する。
以上の後処理ステップ27で、添字や部分列の値を固定
部と可変部で表すように処理し、処理ステップ28で識
別して、この翻訳処理のオプションとしてデバッグ指定
があれば処理ステップ29で添字、部分列の検査の処理
をし、以上の各処理の結果として、必要な中間言語表現
14を出力する。
部と可変部で表すように処理し、処理ステップ28で識
別して、この翻訳処理のオプションとしてデバッグ指定
があれば処理ステップ29で添字、部分列の検査の処理
をし、以上の各処理の結果として、必要な中間言語表現
14を出力する。
このように、従来であれば線形にリンクされた文節と区
切り記号の列を左から順次走査して、例えば「A(式:
」まで進んだとき、これが添字の無い文字型変数Aにつ
いて、部分列を指定するもので「式」がその上限値であ
ること、又は配列Aの配列区分であることが初めて識別
されることになるが、本発明では副オブジェクトノード
で添字の有無、添字、部分列が直ちに識別でき、それぞ
れの局所化された処理を選択して実行すればよいように
なる。
切り記号の列を左から順次走査して、例えば「A(式:
」まで進んだとき、これが添字の無い文字型変数Aにつ
いて、部分列を指定するもので「式」がその上限値であ
ること、又は配列Aの配列区分であることが初めて識別
されることになるが、本発明では副オブジェクトノード
で添字の有無、添字、部分列が直ちに識別でき、それぞ
れの局所化された処理を選択して実行すればよいように
なる。
以上のようにして詳細解析部12が出力した中間言語表
現14は、翻訳部7によって従来と同様に処理され、目
的プログラム8が生成される。
現14は、翻訳部7によって従来と同様に処理され、目
的プログラム8が生成される。
以上の説明から明らかなように本発明によれば、計算機
の原始プログラムを目的プログラムに翻訳する場合に、
プログラム文の構造を表す木構造を生成することによっ
て、高度の翻訳処理を比較的容易に構成できるようにな
るという著しい工業的効果がある。
の原始プログラムを目的プログラムに翻訳する場合に、
プログラム文の構造を表す木構造を生成することによっ
て、高度の翻訳処理を比較的容易に構成できるようにな
るという著しい工業的効果がある。
第1図は本発明の構成を示すブロック図、第2図は本発
明の木構造の例を説明する図、第3図は本発明の処理の
流れ図、 第4図は従来の構成例を示すブロック図である。 図において、 1.10はプログラム翻訳処理装置、 2は原始プログラム、 3は構文解析部、4は文節と区
切り記号の列、 5.11は意味解析部、 6.14は中間言語表現、7
は翻訳部、 8は目的プログラム、12は詳細
解析部、 13は木構造、20〜29は処理ステッ
プ を示す。
明の木構造の例を説明する図、第3図は本発明の処理の
流れ図、 第4図は従来の構成例を示すブロック図である。 図において、 1.10はプログラム翻訳処理装置、 2は原始プログラム、 3は構文解析部、4は文節と区
切り記号の列、 5.11は意味解析部、 6.14は中間言語表現、7
は翻訳部、 8は目的プログラム、12は詳細
解析部、 13は木構造、20〜29は処理ステッ
プ を示す。
Claims (1)
- 【特許請求の範囲】 構文解析部(3)と、意味解析部(11)と詳細解析部
(12)とを有し、 該構文解析部(3)は、所与の原始プログラム(2)を
解析して、所定の文法の構文規則に従う該原始プログラ
ムを所定の区切り記号によって切り分けて、文節と区切
り記号の列(4)に分解し、 該意味解析部(11)は、該文法の意味規則に従う該文
節と区切り記号の列(4)について、所定の括弧の包含
関係に基づいて定まる木構造(13)を生成し、該木構
造(13)は、該原始プログラム(2)の、演算を表す
式と、該演算のオペランドを指定する情報に含まれる式
とを区別する構造を有し、 該詳細解析部(12)は、該木構造(13)に基づいて
、該区分に従い当該式を処理して、各該オペランドにつ
いて、当該オペランドの相対位置を直接表す所定の中間
言語表現(14)を生成するように構成されていること
を特徴とするプログラム翻訳処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP12500190A JPH0424746A (ja) | 1990-05-15 | 1990-05-15 | プログラム翻訳処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP12500190A JPH0424746A (ja) | 1990-05-15 | 1990-05-15 | プログラム翻訳処理装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0424746A true JPH0424746A (ja) | 1992-01-28 |
Family
ID=14899425
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP12500190A Pending JPH0424746A (ja) | 1990-05-15 | 1990-05-15 | プログラム翻訳処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0424746A (ja) |
-
1990
- 1990-05-15 JP JP12500190A patent/JPH0424746A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6219831B1 (en) | Device and method for converting computer programming languages | |
| EP0204942A2 (en) | Compiler for a source program, a method of making the same and its use | |
| JPS6375835A (ja) | 目的コ−ド、プログラム・リスト及び設計文書を生成する装置 | |
| Cameron et al. | Grammar-based definition of metaprogramming systems | |
| US5949993A (en) | Method for the generation of ISA simulators and assemblers from a machine description | |
| JPH06501580A (ja) | 多言語最適化コンパイラ内のシンボル テーブル構成用インタフェイス | |
| KR20230040516A (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
| CN116755769A (zh) | 一种源代码注释生成方法、装置、存储介质及计算机设备 | |
| Mi et al. | Boosting just-in-time code comment updating via programming context and refactor | |
| MacLennan | The Synmac syntax macroprocessor: Introduction and manual, version 5 | |
| Sunitha | Compiler construction | |
| JPH07121379A (ja) | 複数言語混在コンパイラ | |
| Qian et al. | A Survey of Learning-based Method Name Prediction | |
| Pranav et al. | On–Device Translation of Dynamically Typed and Interpreted Languages | |
| Dempsey et al. | A regular expression pattern matching processor for APL | |
| CN121657981A (zh) | 基于图模型与多阶段dsl生成的ai编码工具增强方法 | |
| JP2580336B2 (ja) | 言語処理系における名前の属性検査処理方式 | |
| Matsushita | Expressive power of declarative programming languages | |
| Muthukumar et al. | Implementing a Multilingual Lexical Analyser for Java, C and C++ | |
| KR0168929B1 (ko) | 칠 전위처리기의 전위처리 방법 | |
| Sommerville | A pattern matching system | |
| Saxena et al. | Compiler Design | |
| Vander Mey et al. | SYMPLE: a general syntax directed macro preprocessor | |
| Pierce et al. | A transformation-directed compiling system | |
| Almufti | A SYSTEM FOR THE MANIPULATION |