JPS63269229A - 文字列操作系命令コンパイル処理方式 - Google Patents

文字列操作系命令コンパイル処理方式

Info

Publication number
JPS63269229A
JPS63269229A JP10396887A JP10396887A JPS63269229A JP S63269229 A JPS63269229 A JP S63269229A JP 10396887 A JP10396887 A JP 10396887A JP 10396887 A JP10396887 A JP 10396887A JP S63269229 A JPS63269229 A JP S63269229A
Authority
JP
Japan
Prior art keywords
subscript
text
instruction
intermediate text
read
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.)
Granted
Application number
JP10396887A
Other languages
English (en)
Other versions
JPH0690669B2 (ja
Inventor
Kuniko Ajiro
網代 邦子
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP10396887A priority Critical patent/JPH0690669B2/ja
Publication of JPS63269229A publication Critical patent/JPS63269229A/ja
Publication of JPH0690669B2 publication Critical patent/JPH0690669B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概要〕 添字評価時期が命・令実行の最初に1回だけ行うように
定められた文字列操作系命令の翻訳処理にあたって3中
間テキストが添字である場合には。
それを直ちにオブジェクト展開し、添字以外である場合
には、一旦0作業用テキスト記憶部に格納しておき、そ
の命令についての中間テキスl了時に、順次1作業用テ
キスト記憶部から読み込んでオブジェクト展開すること
により、簡単な処理構成で、添字評価を先に行うことが
できるようにしている。
〔産業上の利用分野〕
本発明は8例えばC0BOLコンパイラなどの文字列操
作系命令コンパイル処理方式に関するものである。
計算機言語の1つであるC0BOLにおける表の扱いで
は、−意名を添字として使用することが可能である。こ
の添字評価時期については、c。
BOLの標準規格により、各命令単位に決定されている
。命令の中で添字付けされたデータが記述された時点と
、添字評価時期が異なる場合にも。
闇単に統一的に、予め定められた位置において。
添字のオブジェクトを展開することが必要とされる。
〔従来の技術〕
第5図は従来方式の問題点説明図である。
例えば、C0BOLニア7パイラは、C0I3OL言語
で記述された原始プログラムを入力し1実行可能形式と
なっているプログラム(以下、オブジェクトモジュール
という)に翻訳する処理を行う。
このコンパイラは、構文解析フェーズとコード生成フェ
ーズとからなり、2つのフェーズ間には。
中間テキストと呼ばれる特殊コードが介在する。
ところで、C0BOL原始プログラムには。
「裏操作」というデータの扱いがある。1つのデータ形
式を複数個集めて、1つのデータとして扱うもので、各
々の要素を参照するために、指標付けまたは添字付けを
行う。通常、C0BOLの各命令において、指標や添字
は、そのデータが記述された時点で評価すればよいので
、構文解析フェーズは、指標や添字が出現したタイミン
グで、添字評価用の中間テキストを出力し、コード生成
フェーズも、添字評価用の中間テキストを読み込んだと
きに、そのオブジェクトを展開するという処理を行う。
ところが1例えばANS  C0BOL (Ameri
−can NaLional 5tandard CO
B OL) 1985の規格では、いわゆるlN5PE
CT命令、5TRING命令、UNSTRING命令な
どの文字列操作系の命令で、−意名に関する添字は、命
令の実行の最初に1回だけ評価するという規格になって
いる0文字列操作系命令は、複数個の中間テキストに分
割され2構文解析フェーズは2文字列操作系命令の添字
の評価時期を意識せずに中間テキストを作成するので、
前述のように中間テキストの読み込み順に、オブジェク
トを展開した場合。
上記文字列操作系命令の規格にそぐわないオブジェクト
モジュールが生成されることになる。
これを第5図に従って、さらに詳細に説明する。
例えば、第5図(イ)に示す命令について、構文解析フ
ェーズでは、命令単位の添字評価時期を意識せずに、第
5図(ロ)に示すような複数個の中間テキストを作成す
る。従って、コード生成フェーズでは、命令によって規
定されている添字評価時期を考慮してオブジェクト展開
をする必要がある。
即ち1例えば、第5図(イ)に示す命令において1図示
1alのデータに作用の結果が転記された後。
図示(blのデータに作用の結果が転記される命令があ
るとする。(alのデータに作用の結果が転記されると
、当然、AやBの値が変更されるので、(b)のデータ
に作用結果を転記する場合、変更前の値を添字の値とし
て使用するか、変更後の値を使用するかで、結果が大き
く変わってくるからである。
しかし、従来方式によれば、コード生成フェーズは、中
間テキストの入力、各命令のオブジェクト展開、添字評
価に関するオブジェクト展開などのサブルーチン化され
た処理部によって構成され。
通常、添字に関する中間テキストが現れた時点で。
添字評価に関するオブジェクト展開のための処理部を呼
び出し、その他の場合には、各命令単位のオブジェクト
展開処理部を呼び出すので2オブジエクト展開順序が、
第5図(ロ)に示すように。
中間テキストの並びの順番になる。従って、前述の文字
列操作系命令のように、添字の評価時期が命令の実行の
最初に1回だけとなっているものについては、上記各処
理部を無条件に呼び出すと。
規格にそぐわないオブジェクトが生成されることになる
〔発明が解決しようとする問題点〕
上記問題を解決するための手段として、最初に考えられ
るのは、情交解析フェーズが作成する中間テキストの順
序を、命令毎の規格にあったものにすることである。し
かし、命令毎の添字評価時期を意識して中間テキストを
作成するのは、構文解析フェーズの改造が大きく1体系
的な処理が困難であるという問題がある。
次に、コード生成フェーズにおいて1文字列操作系命令
が出現した場合のみを特別に意識して処理することが考
えられる。この場合、メインの処理部だけでなく、添字
評価に関するオブジェクト展開のための処理部も、特別
に文字列操作系命令を意識しなければならないし、その
他の命令では。
メインの処理部が中間テキスト入力および添字評価に関
するオブジェクト展開の処理をしてから。
命令別の処理部を呼び出すのに対して2文字列操作系命
令においては、その処理部が中間テキストの入力から添
字評価に関するオブジェクト展開までのa能も網羅しな
ければならなくなり、処理負担が極めて大きいという問
題が発生する。
本発明は上記問題点の解決を図り5命令の中で添字付け
されたデータが記述された時点と、添字評価時期が異な
る場合にも、簡単な処理構成で。
統一的にオブジェクト展開を行う手段を提供することを
目的としている。
〔問題点を解決するための手段〕
第1図は本発明の原理ブロック図を示す。
第1図において、10は高級計算機言語で記述された原
始プログラム、11はCPUおよびメモリなどからなる
処理装置、12は原始プログラム10を機械語コードに
翻訳するコンパイラ、13は構文解析フェーズ、14は
中間テキスト15は中間テキストからオブジェクトのコ
ードを生成するコード生成フェーズ、16は裏操作等に
用いられる添字を判定する添字判定部、17は添字のオ
ブジェクトを展開する添字オブジェクト展開処理部、1
8は文字列操作系命令のオブジェクトを展開する文字列
操作系命令オブジェクト展開処理部、19は一般の各命
令について命令単位でオブジェクトを展開する他の命令
オブジェクト展開処理部、20は作業用メモリや外部記
憶装置等の作業用テキスト記憶部、21は1つの命令の
終了を判定する命令終了判定部、22は中間テキストを
作業用テキスト記憶部に書き出す中間テキスト書き出し
部、23は作業用テキスト記憶部20から読み込んでオ
ブジェクト展開を行うオブジェクト展開部、24は翻訳
結果であるオブジェクトのコードが格納されるオブジェ
クトモジュールを表す。
本発明では2文字列操作系命令に現れる添字について、
命令の最初に1回だけ評価することを実現するため2次
のような処理が行われる。
構文解析フェーズ13は、原始プログラム10を読み込
んで1文法上のエラーチェック等を行いながら、解析結
果を内部コードである中間テキスト14として出力する
。この処理は、従来と同様である。
コード生成フェーズ15は、中間テキスト14を読み込
んでオブジェクトモジュール24を出力する。この際、
読み込んだ中間テキスト14が。
添字に関するものであれば、添字判定部16による判定
によって、添字オブジェクト展開処理部17が起動され
、添字オブジェクト展開処理部17は、添字を評価する
機械語コードをオブジェクトモジュール24に出力する
。添字以外の場合には。
各命令単位のオブジェクト展開を行うサブルーチンによ
って構成される命令オブジェクト展開処理部が呼び出さ
れるが、特に文字列操作系命令に関するものである場合
には1文字列操作系命令オブジェクト展開処理部1日が
呼び出される。
文字列操作系命令オブジェクト展開処理部18は、命令
終了判定部21によって1文字列操作系命令の終了が判
定されるまで、中間テキスト書き出し部22を呼び出し
、中間テキスト14を順次作業用テキスト記憶部20に
出力する0作業用テキスト記憶部20には、添字に関す
るもの以外の中間テキストが一時的に格納されることに
なる。
命令終了判定部21によって、命令の終了が検出される
と、オブジェクト展開部23が呼び出され。
オブジェクト展開部23は5作業用テキスト記憶部20
から順次中間テキストを読み込んで、それをオブジェク
トに展開し、オブジェクトモジュール24に出力する。
(作用〕 本発明によれば、添字の評価時期が中間テキスト14の
並びの順でいいものについては、従来と同様に順番にオ
ブジェクト展開がなされる0例えば、ANS  C0B
OL  1985の規格における文字列操作系命令のよ
うに、添字評価時期が命令の最初でなければならないも
のについては、添字が出現したときに、添字オブジェク
ト展開処理部17によって、直ちにオブジェクトモジュ
ール24への出力が行われるが、それ以外の文字列操作
系命令の途中の中間テキストは9作業用テキスト記憶部
20に書き出され1文字列操作系命令の中間テキストが
終了したときに、改めて9作業用テキスト記憶部20か
らの読み込みによって、オブジェクト展開がなされる。
従って、従来の処理構成を大幅に変更することなく、添
字評価時期を中間テキストの並びにかかわらず、命令の
最初とすることができる。
〔実施例〕
第2図は本発明の一実施例に係るコード生成フェーズ処
理説明図、第3図は本発明の一実施例に係る文字列操作
系命令オブジェクト展開処理説明図、第4図は本発明の
詳細な説明図である。
第1図に示すコード生成フェーズ15の処理概要は8例
えば第2図に示すようになっている。以下の説明におけ
る番号Φ〜■は、第2図に示す処理に対応する。
■ 中間テキストをルーコードずつ読む。
■ 読むべき中間テキストがなくなった場合、処理を終
了する。
■ 読み込んだ中間テキストのレコードが、添字に関す
るものであるか否かを判定する。添字である場合、処理
■を実行し、添字でない場合。
処理■を実行する。
■ 添字を評価するオブジェクトを展開する。その後、
処理■へ制御を戻して同様に処理を繰り返す。
■ 各命令単位に用意されたオブジェクト展開処理部を
呼び出し、それぞれオブジェクト展開を行う、その後、
処理■へ制御を戻す。
第1図に示す文字列操作系命令オブジェクト展開処理部
18は9例えば第3図に示すように処理する。この処理
は、前述した第2図に示す処理■の1つである。以下の
説明における番号■〜■は。
第3図に示す処理■〜■に対応する。
■ 中間テキストの並びが終了したか否かを判定する。
終了した場合、処理■へ制御を移す。
■ 終了でない場合、第1図に示す作業用テキスト記憶
部20に、中間テキストのレコードをそのまま出力する
。その後1次の中間テキストを読み込むため、呼び出し
元へ制御を戻す。
■ 中間テキストの並びが終了した場合、上記処理■で
書き出しておいた中間テキストを1作業用テキスト記憶
部20からルーコードずつ読む。
■ 作業用テキスト記憶部20におけるテキストの終了
を判定し、テキストがなくなった場合。
次の命令の処理のために制御を呼び出し元へ戻す。
■ 作業用テキスト記憶部20から読み込んだ中間テキ
ストについて1文字列操作系命令のオブジェクトを展開
する。その後、処理■へ制御を戻し、同様に処理を繰り
返す。
次に、第4図に従って、簡単な具体例を説明する。なお
、この例は、添字評価が命令の最初でなくても、結果的
には同様になるが、添字評価の時期を命令の実行の最初
に行わなければならない例として説明する。
第4図に示す原始プログラムlO中の文字列操作系命令
は、いわゆるANS  C0BOL  1985の規格
による5TRING命令であって、データ名がそれぞれ
A、B、Cのデータを結合して。
データ名D (A)に作用結果を転記することを指示す
る命令である。構文解析フエーズエ3による解析により
、中間テキスト14が出力される。中間テキスト14に
おいて、rBEGINJは命令の開始、rsTRIJ、
rSTR2Jは文字列操作系命令の詳細コード、rlN
DEXJは添字。
rENDJは命令の終了を表す。
コード生成フェーズ15では、中間テキスト14から順
次5 ルーコードずつ読み込み、(1)〜(3)および
(5)のように、添字に関するもの以外のレコードを5
作業用ファイル40に書き出す。rINDEXJについ
ては、(4)のように、直ちに添字評価用のコードが生
成され、オブジェクトモジュール24に出力される。
rENDJにより命令の終了が検出されると。
(6)のように1作業用ファイル40から中間テキスト
をルーコードずつ読み込み、オブジェクト展開をして、
結果をオブジェクトモジエール24に出力する。
なお1文字列操作系命令として、5TtNG命令以外に
2文字列を分割するtJNsTRING命令や1文字列
の置換2文字数のカウント等を行う!’−NSPECT
命令についても、同様に添字評価を命令の最初に行う。
〔発明の効果〕
以上説明したように1本発明によれば、命令の中で添字
付けされたデータが記述された時点と。
添字評価時期が異なる場合にも、簡単な処理構成で、統
一的にオブジェクト展開を行うことが可能になる。
【図面の簡単な説明】
第1図は本発明の原理ブロック図、第2図は本発明の一
実施例に係るコード生成フェーズ処理説明図、第3図は
本発明の一実施例に係る文字列操作系命令オブジェクト
展開処理説明図、第4図は本発明の詳細な説明図、第5
図は従来方式の問題点説明図である。 図中、10は原始プログラム、11は処理装置。 12はコンパイラ、13は構文解析フェーズ、14は中
間テキスト、15はコード生成フェーズ。 16は添字判定部、17は添字オブジェクト展開処理部
518は文字列操作系命令オブジェクト展開処理部、1
9は他の命令オブジェクト展開処理部、20は作業用テ
キスト記憶部、21は命令終了判定部、22は中間テキ
スト書き出し部、23はオブジェクト展開部、24はオ
ブジェクトモジュールを表す。

Claims (1)

  1. 【特許請求の範囲】 添字評価を命令の実行の最初に行うように規定された文
    字列操作系命令の仕様を有する原始プログラムのコンパ
    イル処理方式であって、構文解析フェーズにより生成さ
    れた中間テキストを、コード生成フェーズにおいてオブ
    ジェクトに展開するコンパイル処理方式において、 上記中間テキストが一時的に格納される作業用テキスト
    記憶部(20)と、 上記コード生成フェーズにおける中間テキストの読み込
    み時に、読み込んだ中間テキストが添字に関するもので
    あるか否かを判定する添字判定手段(16)と、 読み込んだ中間テキストが添字である場合に、添字に関
    するオブジェクト展開を行う添字オブジェクト展開処理
    手段(17)と、 読み込んだ中間テキストが添字以外の上記文字列操作系
    命令に関するものである場合に、その命令に関する中間
    テキストの並びが終了するまで、その読み込んだ中間テ
    キストを上記作業用テキスト記憶部に書き出すと共に、
    その命令に関する中間テキストの並びが終了した場合に
    、上記作業用テキスト記憶部から中間テキストを順次読
    み込み、文字列操作系命令に関するオブジェクト展開を
    行う文字列操作系命令オブジェクト展開処理手段(18
    )とを備えたことを特徴とする文字列操作系命令コンパ
    イル処理方式。
JP10396887A 1987-04-27 1987-04-27 文字列操作系命令コンパイル処理方式 Expired - Fee Related JPH0690669B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10396887A JPH0690669B2 (ja) 1987-04-27 1987-04-27 文字列操作系命令コンパイル処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10396887A JPH0690669B2 (ja) 1987-04-27 1987-04-27 文字列操作系命令コンパイル処理方式

Publications (2)

Publication Number Publication Date
JPS63269229A true JPS63269229A (ja) 1988-11-07
JPH0690669B2 JPH0690669B2 (ja) 1994-11-14

Family

ID=14368155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10396887A Expired - Fee Related JPH0690669B2 (ja) 1987-04-27 1987-04-27 文字列操作系命令コンパイル処理方式

Country Status (1)

Country Link
JP (1) JPH0690669B2 (ja)

Also Published As

Publication number Publication date
JPH0690669B2 (ja) 1994-11-14

Similar Documents

Publication Publication Date Title
JPH06103463B2 (ja) コード生成方法
JPH0766342B2 (ja) プログラムテスト装置
JPS63269229A (ja) 文字列操作系命令コンパイル処理方式
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
JPH11154093A (ja) プログラムコンパイラ及びコンパイラ用プログラムを記録した記録媒体
JP3018783B2 (ja) コンパイル方式
JP2721377B2 (ja) Basicプログラム圧縮方法
JPH03186933A (ja) 言語処理システムのシンボル処理方式
KR100229567B1 (ko) 오버레이 코딩시 좌표값과 텍스트값 생성방법
JP3044953B2 (ja) 言語処理システムのシンボル処理方式
JPH0695890A (ja) コンパイラにおける名前置換方式
JPS58169637A (ja) コンパイル処理方式
JP3424596B2 (ja) シンボル参照情報のキャッシュ方法ならびに装置
JPH0237428A (ja) 登録集展開時の置換処理方式
JPS61235949A (ja) 翻訳方式
JPS5846439A (ja) 計算機のプログラム編集方法
JPH06110750A (ja) 関係データベースをアクセス可能なアプリケーションプログラムのメイクファイルの自動生成方法
JPH0334029A (ja) 索引入出力の指定方式
JPH07105014A (ja) 言語処理システムのシンボル処理方式
JPH02178845A (ja) データベース操作言語のプリコンパイル方式
JPS60237541A (ja) プログラム組込方式
JPS62182843A (ja) 高速コンパイル/リンク方式
JPH01209542A (ja) 論理検証装置
HARVARD COLL CAMBRIDGE MA PRESIDENT AND FELLOWS Research on Automatic Programming
JPH04209029A (ja) 並列処理プログラム翻訳処理装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees