JPH06282442A - Compiler device - Google Patents

Compiler device

Info

Publication number
JPH06282442A
JPH06282442A JP6894893A JP6894893A JPH06282442A JP H06282442 A JPH06282442 A JP H06282442A JP 6894893 A JP6894893 A JP 6894893A JP 6894893 A JP6894893 A JP 6894893A JP H06282442 A JPH06282442 A JP H06282442A
Authority
JP
Japan
Prior art keywords
input
statement
output
processing
program
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
JP6894893A
Other languages
Japanese (ja)
Inventor
Yuuji Tsujimori
誘二 辻森
Katsumi Oishi
勝己 大石
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 JP6894893A priority Critical patent/JPH06282442A/en
Publication of JPH06282442A publication Critical patent/JPH06282442A/en
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

PURPOSE:To obtain the compiler device which improves translation processing for an input/output statement which is specified in array format in the translation processing for a source program of a computer. CONSTITUTION:An analytic part 1 analyzes the source program and specifies elements within a range determined by the execution result of programs in a desired array as input/output data as to the input/output instruction statement of the source program; when the specification of an error branch destination in the case of error detection by input/output processing is discriminated, the analysis result of the input/output statement is sent to an insertion part 2, which inserts an insert program for branching to an error branch destination after processing for releasing a storage area obtained as a work area for holding the input/output data as to the analysis result of the input/output statement and changes the branch destination at the time of the error detection of the input/output statement to branching to the entrance of the insert program. Then a translation part 3 performs translation processing as to the result of processing of the insertion part 2.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は計算機の原始プログラム
を、目的プログラムに翻訳する処理において、入出力デ
ータとして配列式を指定した入出力命令文の翻訳処理を
改良したコンパイラ装置に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a compiler device for improving the translation process of an input / output command statement in which an array expression is designated as input / output data in the process of translating a source program of a computer into a target program.

【0002】[0002]

【従来の技術と発明が解決しようとする課題】図2(a)
は、FORTRAN プログラミング言語を例として、入出力命
令文の一つであるWRITE 文の一例を示し、図の例は公知
のように「配列Aの要素A(I)と配列Bの要素B(I)の加算
結果を装置参照番号「1」の装置へ出力する」ことを指
定する文である。
2. Prior Art and Problems to be Solved by the Invention FIG. 2 (a)
Shows an example of a WRITE statement, which is one of the input / output command statements, using the FORTRAN programming language as an example, and the example of the figure shows “element A (I) of array A and element B (I of array B ) Is output to the device having the device reference number “1” ”.

【0003】この文をコンパイラが翻訳するために解析
すると、図2(b) に解析結果を概念的に示すように、コ
ンパイラは作業域として、いわゆる生成名S0001 で識別
する領域を設けて、A(I)+B(I)をS0001に代入し、S0001
の内容を出力するようにする。ここで生成名S0001 の領
域の大きさは、明らかに配列A又はBの1要素の大きさ
である。
When this statement is analyzed by the compiler for translation, the compiler provides a working area, which is identified by the so-called generated name S0001, as shown conceptually in FIG. 2 (b). Substituting (I) + B (I) into S0001, S0001
Output the contents of. Here, the size of the area of the generated name S0001 is obviously the size of one element of the array A or B.

【0004】WRITE文の中のERR指定子で指定される「ER
R=999」は、公知のようにWRITE文による入出力処理でエ
ラーを検出した場合には、WRITE 文を終了して次の命令
文へ進まないで、ラベル「999」へ分岐することを指定
するものである。
[ER] specified by the ERR specifier in the WRITE statement
R = 999 "specifies that if an error is detected in the I / O processing by the WRITE statement, as is well known, the WRITE statement is not terminated and the processing proceeds to the next statement, and the processing branches to the label" 999 ". To do.

【0005】前記例のようにして出力するデータが、例
えばA(1)+B(1)、A(2)+B(2)....と連続する場合等に
は、以上のようなWRITE 文を、DOループ等によりIを順
次変更して繰り返し実行するように原始プログラムを記
述し、コンパイラはその場合に、作業域として生成名S0
001の領域を繰り返し使用するようにする。
When the data to be output as in the above example is continuous as A (1) + B (1), A (2) + B (2) .... , Write a source program so that I is changed sequentially by a DO loop or the like and repeatedly executed, and in that case, the compiler creates a generated name S0 as a work area.
Make sure to use the area 001 repeatedly.

【0006】しかし、このようなDOループを使用しない
で、配列要素の連続する範囲を直接指定する記述を可能
にする言語仕様がFORTRAN 等に設けられ、例えば「A(1:
3)」によって、配列Aの要素A(1)、A(2)、A(3)を指定す
ることができるようになり、これを入出力命令文のデー
タの指定に使用して、図3(a) のようなプログラムの記
述ができるようになった。
[0006] However, a language specification is provided in FORTRAN or the like that enables a description that directly specifies a continuous range of array elements without using such a DO loop. For example, "A (1:
3) ”makes it possible to specify the elements A (1), A (2), and A (3) of the array A, which are used to specify the data of the input / output statement, and You can now write programs like (a).

【0007】このプログラムの行は副プログラムの宣
言文であって、副プログラム名SUBで、仮引数が変数
A、B、I、Jであることを示す。行は配列の宣言文
で、A、Bが配列であり、*は配列要素の数が実行時に
定まることを示す。なお、データの型は暗黙に、A、B
は4バイトの実数型、I、Jは4バイトの整数型とされ
る。
The line of this program is a declarative statement of the sub-program, the sub-program name is SUB, and the dummy arguments are variables A, B, I, and J. A line is an array declaration statement, A and B are arrays, and * indicates that the number of array elements is determined at the time of execution. The data type is implicitly A, B
Is a 4-byte real type, and I and J are 4-byte integer types.

【0008】行は前記と同様のWRITE 文であるが、出
力するデータが配列式の形式で指定されているので、配
列AとBの要素について、A(I)+B(I)からA(J)+B(J)ま
でが出力の対象となる。即ち、この副プログラムの呼び
出しで、例えばI=1、J=3が指定されれば、A(1)+B(1)、
A(2)+B(2)、A(3)+B(3)を出力することになる。
The line is a WRITE statement similar to the above, but since the data to be output is specified in the form of an array expression, the elements of arrays A and B are from A (I) + B (I) to A (J ) + B (J) are output targets. That is, if I = 1 and J = 3 are specified in the call of this subprogram, A (1) + B (1),
A (2) + B (2) and A (3) + B (3) will be output.

【0009】行はPRINT 文で文字列をディスプレイ等
に出力する命令文であり、この例では、文字列「OK
!」の出力を指定している。行はWRITE 文でエラーが
でた場合の分岐先で、この例では公知のCONTINUE文であ
るので、この文自体では何もせず、エラーの場合に行
のPRINT 文をスキップするように置かれているが、必要
ならこの位置にエラー処理を置く。最後の行は副プロ
グラムの終了を示すEND 文である。
A line is an instruction statement for outputting a character string to a display or the like by a PRINT statement. In this example, the character string "OK"
!! Output is specified. The line is the branch destination when an error occurs in the WRITE statement, and since it is a well-known CONTINUE statement in this example, nothing is done in this statement itself, and it is placed so as to skip the PRINT statement of the line in the case of an error. Yes, but put error handling in this position if necessary. The last line is an END statement that marks the end of the subprogram.

【0010】コンパイラは、このようなプログラムのWR
ITE 文の解析結果を概念的に示すと、例えば図3(b)を
得る。図3(b)の行は記憶領域を獲得するGET 文で、
生成名SOOO1の領域を獲得する。
The compiler uses the WR of such a program.
When the analysis result of the ITE sentence is conceptually shown, for example, FIG. 3 (b) is obtained. The line in Fig. 3 (b) is a GET statement that acquires a storage area.
Acquire the area with the generated name SOOO1.

【0011】〜行は、S0001の各領域にA(I)+B
(I)、A(I+1)+B(I+1)...、A(J)+B(J)を格納するための
代入文であり、行はS0001の内容を出力するWRITE文で
あり、行はWRITE 文のエラー時の分岐先である。この
ようにすることにより、出力データが配列式で指定され
ている場合にも、WRITE 文は前記図2の場合と同様の実
行内容でよく、WRITE文とのインタフェースも従来と変
わらない。
~ Line is A (I) + B in each area of S0001
(I), A (I + 1) + B (I + 1) ..., A (J) + B (J) assignment statement for storing, line is a WRITE statement that outputs the contents of S0001 , Line is the branch destination in case of error in WRITE statement. By doing so, even when the output data is specified by the array expression, the WRITE statement may have the same execution content as in the case of FIG. 2, and the interface with the WRITE statement is the same as the conventional one.

【0012】しかし、前記図2の例と異なり、図3(b)
の行に示すように生成名S0001の領域を翻訳時に設け
ないで、GET 文を置いて実行時に獲得するようにするの
は、図3の例の場合には仮引数I、Jの値によって出力
データの要素数が定まるので、S0001の大きさが実行時
にしか定まらないからである。
However, unlike the example of FIG. 2 described above, FIG.
In the case of the example of FIG. 3, the area of the generated name S0001 is not provided at the time of translation and is acquired at the time of execution without providing the area of the generated name S0001. Because the number of data elements is determined, the size of S0001 is determined only at the time of execution.

【0013】従って、この場合には、WRITE 文の終了時
には必ず獲得した領域をシステムに返すようにしない
と、このようなWRITE文が実行されるごとに獲得した領
域が累積し、システムの管理する記憶領域を圧迫し、影
響が甚だしい場合には、プログラムを実行できなくなる
可能性があり、領域解放処理を所要個所に設ける必要が
ある。
Therefore, in this case, unless the area that has been acquired must be returned to the system at the end of the WRITE statement, the acquired area is accumulated every time such a WRITE statement is executed, and the system manages it. If the storage area is compressed and the effect is severe, the program may not be able to be executed, and it is necessary to provide the area release processing at the required location.

【0014】しかし、そのことをプログラマに意識させ
ることは勿論、いわゆる言語ライブラリとして準備され
ている、既存のWRITE 文等の入出力文とのインタフェー
スや、それらの実行内容を変更することは、従来のプロ
グラムへの影響が生じるので避けなければならない。
However, it is of course not necessary for the programmer to be aware of this, but for changing the interface with the existing input / output statements such as the WRITE statement prepared as a so-called language library and the execution contents thereof. It must be avoided as it will affect the program.

【0015】本発明は、前記のような入出力文のために
動的に獲得する領域の解放処理を、既存の入出力文をそ
のままにして、翻訳処理の中で処理するようにしたコン
パイラ装置を目的とする。
According to the present invention, the compiler device for dynamically releasing an area for an input / output statement as described above is processed in a translation process while leaving the existing input / output statement as it is. With the goal.

【0016】[0016]

【課題を解決するための手段】図1は、本発明の構成を
示すブロック図である。図はコンパイラ装置の構成であ
って、所定のプログラミング言語で記述された原始プロ
グラムを目的プログラムに翻訳する装置であって、解析
部1と、挿入部2と、翻訳部3とを有する。
FIG. 1 is a block diagram showing the configuration of the present invention. The figure shows a configuration of a compiler apparatus, which is an apparatus for translating a source program written in a predetermined programming language into a target program, and has an analysis unit 1, an insertion unit 2, and a translation unit 3.

【0017】解析部1は該原始プログラムを解析し、該
原始プログラムの入出力命令文が、所要の配列の当該プ
ログラムの実行結果によって定まる範囲の要素を入出力
データとして指定し、且つ当該入出力の処理によってエ
ラーが検出された場合のエラー分岐先を指定しているこ
とを識別した場合には、該入出力文の解析結果を挿入部
2に渡す。
The analysis unit 1 analyzes the source program, and the input / output command statement of the source program specifies, as input / output data, an element in a range determined by the execution result of the program in a required array, and outputs the input / output. When it is identified that the error branch destination is specified when an error is detected by the processing of 1, the analysis result of the input / output statement is passed to the insertion unit 2.

【0018】挿入部2は、該入出力文の解析結果につい
て、該入出力データを保持する作業領域として獲得した
記憶領域を解放する処理を実行した後に該エラー分岐先
へ分岐するようにした挿入プログラムを挿入し、該入出
力文のエラー検出時の分岐先を当該挿入プログラムの入
口への分岐に変更し、翻訳部3は、挿入部2の処理した
結果について翻訳処理を実行する。
The inserting section 2 inserts the analysis result of the input / output statement so as to branch to the error branch destination after executing the processing of releasing the storage area acquired as the work area for holding the input / output data. The program is inserted, the branch destination at the time of error detection of the input / output statement is changed to the branch to the entrance of the inserted program, and the translation unit 3 executes the translation process on the result processed by the insertion unit 2.

【0019】[0019]

【作用】本発明のコンパイラ装置により、入出力文のた
めの動的な領域獲得及び解放処理が、プログラマが記述
する必要無く自動的に組み込まれ、そのために挿入され
る処理はその入出力文の外に設け、入出力文について
は、入出力文のERR 指定子等で指定する分岐先を、領域
解放処理を経由するように修正するのみであるので、ラ
イブラリの入出力文の内容及びインタフェースには全く
変更の必要が無いので、そのライブラリの使用について
は全く他のプログラムに影響を生じない。
With the compiler apparatus of the present invention, the dynamic area acquisition and release processing for an input / output statement is automatically incorporated without the need for the programmer to describe, and the processing inserted for that is the input / output statement's For external I / O statements, the branch destination specified by the ERR specifier etc. of the I / O statement is only modified so as to go through the area release processing. Does not need to be changed at all, so its use of the library does not affect other programs at all.

【0020】[0020]

【実施例】図4は本発明のコンパイラ装置の処理の流れ
の一例を示す図である。図1の解析部1は、所与の原始
プログラム入力について処理ステップ10で各命令文を入
力し、処理ステップ11でその解析処理を従来と同様に実
行する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS FIG. 4 is a diagram showing an example of the processing flow of the compiler apparatus of the present invention. The analysis unit 1 in FIG. 1 inputs each command statement in a processing step 10 for a given source program input, and in the processing step 11, executes the analysis processing as in the conventional case.

【0021】解析結果は翻訳部3に渡すが、但し処理ス
テップ12で、解析した命令文が入出力データを配列式に
よって指定し、動的な領域獲得を要するか識別し、その
場合には解析結果を挿入部2に渡し、そうでなければ直
接に翻訳部3に渡す。
The analysis result is passed to the translation unit 3. However, in processing step 12, it is identified whether the analyzed statement specifies input / output data by an array expression and whether dynamic area acquisition is required. The result is passed to the inserting unit 2, and otherwise it is directly passed to the translating unit 3.

【0022】挿入部2は、例えば前記図3(a)のWRITE文
の解析結果として概念的に(b) に示すような解析結果を
受け取ると、処理ステップ13でGET 文で獲得する領域の
生成名を取り出し、処理ステップ14でWRITE文のERR指定
子の指定を取り出して、ERR指定子の指定先を挿入プロ
グラムの入口に変更する。
When the inserting section 2 receives the analysis result as conceptually shown in (b) as the analysis result of the WRITE statement of FIG. 3 (a), it generates the area to be acquired by the GET statement in the processing step 13. The name is fetched, the ERR specifier specification of the WRITE statement is fetched in processing step 14, and the designation destination of the ERR specifier is changed to the entry point of the insertion program.

【0023】次に処理ステップ15で、取り出してある生
成名の領域の領域解放処理を行った後、ERR指定子の元
の指定先へ分岐するようにした挿入プログラムを解析結
果に挿入して翻訳部3に渡す。
Next, in processing step 15, after the area release processing of the area of the extracted generated name is performed, an insertion program that branches to the original designated destination of the ERR specifier is inserted into the analysis result and translated. Hand over to Part 3.

【0024】以上の処理の結果、図3(b)の解析結果
が、(c)に例示するように変更される。図3(c)の行〜
行は(b)の同一行に対応し、行〜行が挿入プログ
ラムであり、(c)の行は(b)の行に対応する元のERR
指定子指定先で、エラー時の分岐先である。
As a result of the above processing, the analysis result of FIG. 3B is changed as illustrated in FIG. Line in Figure 3 (c)
The lines correspond to the same line in (b), lines to lines are insert programs, and the line in (c) corresponds to the line in (b).
This is the specifier specification destination and the branch destination at the time of error.

【0025】処理ステップ16で識別して、未処理の命令
文があれば処理ステップ10に戻り、原始プログラムの解
析をすべて終了すると、処理ステップ17で翻訳部3が解
析結果を目的プログラムに翻訳し、処理ステップ18で出
力する。
If there is an unprocessed statement that is identified in processing step 16, the process returns to processing step 10 and when the analysis of the source program is completed, the translation unit 3 translates the analysis result into the target program in processing step 17. , Output in process step 18.

【0026】[0026]

【発明の効果】以上の説明から明らかなように本発明に
よれば、計算機の原始プログラムの翻訳処理において、
入出力文のための動的な領域獲得及び解放処理が自動的
に組み込まれ、且つそのためにライブラリの入出力文の
内容及びインタフェースには全く変更の必要が無いの
で、そのライブラリの使用については全く他のプログラ
ムに影響を生じないという効果がある。
As is apparent from the above description, according to the present invention, in the translation process of the source program of the computer,
Since the dynamic area acquisition and release processing for I / O statements is automatically incorporated, and because there is no need to change the contents and interface of the I / O statements of the library, there is no need to use the library. This has the effect of not affecting other programs.

【図面の簡単な説明】[Brief description of drawings]

【図1】 本発明の構成を示すブロック図FIG. 1 is a block diagram showing the configuration of the present invention.

【図2】 入出力文の例を説明する図FIG. 2 is a diagram illustrating an example of an input / output statement.

【図3】 プログラム例を説明する図FIG. 3 is a diagram illustrating a program example.

【図4】 本発明の処理の流れ図FIG. 4 is a flow chart of processing of the present invention.

【符号の説明】[Explanation of symbols]

1 解析部 2 挿入部 3 翻訳部 10〜18 処理ステップ 1 Analysis part 2 Insertion part 3 Translation part 10-18 Processing steps

Claims (1)

【特許請求の範囲】[Claims] 【請求項1】 所定のプログラミング言語で記述された
原始プログラムを目的プログラムに翻訳する装置であっ
て、 解析部(1)と、挿入部(2)と、翻訳部(3)とを有し、 該解析部(1) は該原始プログラムを解析し、該原始プロ
グラムの入出力命令文が、所要の配列の当該プログラム
の実行結果によって定まる範囲の要素を入出力データと
して指定し、且つ当該入出力の処理によってエラーが検
出された場合のエラー分岐先を指定していることを識別
した場合には、該入出力文の解析結果を該挿入部(2)に
渡し、 該挿入部(2) は、該入出力文の解析結果について、該入
出力データを保持する作業領域として獲得した記憶領域
を解放する処理を実行した後に該エラー分岐先へ分岐す
るようにした挿入プログラムを挿入し、該入出力文のエ
ラー検出時の分岐先を当該挿入プログラムの入口への分
岐に変更し、 該翻訳部(3)は、該挿入部(2)の処理した結果について翻
訳処理を実行するように構成されていることを特徴とす
るコンパイラ装置。
1. An apparatus for translating a source program written in a predetermined programming language into a target program, comprising: an analysis unit (1), an insertion unit (2), and a translation unit (3). The analysis unit (1) analyzes the source program, the input / output command statement of the source program specifies, as input / output data, a range of elements determined by the execution result of the program in a required array, and When it is identified that an error branch destination is specified when an error is detected by the processing of, the analysis result of the input / output statement is passed to the inserting section (2), and the inserting section (2) For the analysis result of the I / O statement, insert an insertion program that branches to the error branch destination after executing the process of releasing the storage area acquired as the work area for holding the I / O data, Branch destination when an error is detected in the output statement Change to branch to the inlet of the insertion program, the translation unit (3), the compiler apparatus characterized by being configured to perform the translation processing for a result of processing of the insertion section (2).
JP6894893A 1993-03-29 1993-03-29 Compiler device Pending JPH06282442A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6894893A JPH06282442A (en) 1993-03-29 1993-03-29 Compiler device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6894893A JPH06282442A (en) 1993-03-29 1993-03-29 Compiler device

Publications (1)

Publication Number Publication Date
JPH06282442A true JPH06282442A (en) 1994-10-07

Family

ID=13388401

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6894893A Pending JPH06282442A (en) 1993-03-29 1993-03-29 Compiler device

Country Status (1)

Country Link
JP (1) JPH06282442A (en)

Similar Documents

Publication Publication Date Title
US5987250A (en) Transparent instrumentation for computer program behavior analysis
US8448152B2 (en) High-level language, architecture-independent probe program compiler
JPH0721033A (en) Device and method for processing language
US5987248A (en) Debugging information display device
JPH06282442A (en) Compiler device
JPH05346332A (en) Execution method for test program
JP4055197B2 (en) Device for analyzing procedures included in the program
JPS5922140A (en) Interactive compiling system
KR100309674B1 (en) Transaction preprocessing method of real-time database management system
JPH0231235A (en) Syntax analyzing system for plural languages
JPH04364537A (en) Method, device, and compiler for optimizing program for parallel process
JP3141945B2 (en) Compiling device
KR970011897B1 (en) Words interpretating device
JPS62118448A (en) Detecting system of indefinite value reference
JPH05143356A (en) Compiler device
JP2507809B2 (en) Index input / output specification method
JPH10312312A (en) Inspecting method for computer program of c language changing in operation with specifications and program storage medium
JPH05204705A (en) Processing method for detecting undefined parameter
JPH0423102A (en) Programming device for programmable controller
JPS58169637A (en) Compile processing system
JPH04209029A (en) Parallel process program translation processor
JPS629932B2 (en)
JPH07191857A (en) Language processing system
JPH03266037A (en) Trace program inserting system
JPH01140236A (en) Inverse compile system for program

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010313