JPS63271636A - 言語用マクロプロセツサ - Google Patents

言語用マクロプロセツサ

Info

Publication number
JPS63271636A
JPS63271636A JP10442087A JP10442087A JPS63271636A JP S63271636 A JPS63271636 A JP S63271636A JP 10442087 A JP10442087 A JP 10442087A JP 10442087 A JP10442087 A JP 10442087A JP S63271636 A JPS63271636 A JP S63271636A
Authority
JP
Japan
Prior art keywords
macro
statements
language
identification symbol
statement
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
JP10442087A
Other languages
English (en)
Inventor
Tsukasa Takiguchi
滝口 司
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 JP10442087A priority Critical patent/JPS63271636A/ja
Publication of JPS63271636A publication Critical patent/JPS63271636A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】 〔概 要〕 言語用マクロプロセッサを言語無依存とするために、マ
クロ文の識別記号を可変として言語に依存しない任意の
識別記号を設定し、この設定された識別記号を参照して
入力プログラム文中の識別記号を検出してマクロ文とそ
の他の文の識別分離を行う。これにより言語用マクロプ
ロセッサを言語無依存とし、マクロライブラリを各言語
に共通化し、マクロ定義の作成を容易化することができ
る。
〔産業上の利用分野〕
本発明は、プログラム文中のマクロ文とその他の文を識
別分離し、マクロ文に対する展開を行う言語用マクロプ
ロセッサ、特に、各プログラム言語に共通な、すなわち
言語無依存の言語用マクロプロセッサに関する。
〔従来の技術〕
アセンブラ、PLI、C言語等、各種のプログラム言語
においては、プログラム文中に同じ内容の命令群が反復
して現れる場合が多い。そこで、同じ内容の各命令群毎
にそれぞれマクロ文を対応させ、これらのマクロ文を用
いてプログラム文を作成することにより、プログラム文
を効率的に作成することが行われている。マクロ文がど
のような命令群から成り立っているか定義したものは、
マクロ定義と呼ばれている。
マクロ文を含むプログラム文においては、マクロ文とそ
の他の文を識別できるようにするため、マクロ文に対し
て特定の識別記号が付加されている。
識別記号は、第4図に示すようにそのプログラム言語に
おいて意味を持たないような記号が用いられ、通常キー
ワードの直前に付加される。
第4図において、プログラム言語のPLIにおいては記
号“%”が意味を持たない記号であるので、そのマクロ
文の識別記号として用いられ、C言語では記号“#”が
意味を持たない記号であるので、そのマクロ文の識別記
号として用いられている。
このようなマクロ文を含むプログラム文を作成すること
により、プログラム文を少ない工数で効率良く作成する
ことができる。また、プログラム文自体も簡単化される
とともに、見やすくかつ分りやすくすることができる。
第5図は、このようなマクロ文を含むプログラム文を処
理する従来の言語用マクロプロセッサの構成をブロック
図で示したものである。
第5図において、30は言語用マクロプロセッサで、内
部に構文解析部31、マクロライブラリ32、マクロ展
開部33及び入出力制御部34を備え、入力されたプロ
グラム文よりマクロ文とその他の文を識別分離し、マク
ロ文をマクロ展開する処理を行う。
構文解析部31は、入力されたプログラム文よりマクロ
文字とその他の文を識別分離する処理を行う。マクロラ
イブラリ32には、各マクロ文に対するマクロ定義が格
納されている。マクロ展開部33は、マクロライブラリ
32を参照して入力されたマクロ文を元の命令群に展開
する処理を行う。入出力制御部34は、プログラム文、
マクロ文、その他の文、マクロ展開された文等の入出力
制御を行う。
40はコンパイラで、言語用マクロプロセッサ30より
入力されたプログラム文をコンパイルする処理を行う。
この構成で、図示しない上位装置よりマクロ文を含むプ
ログラム文がマクロプロセッサ30に入力されると、入
出力制御部34は、入力されたプログラム文を構文解析
部31に送る。
構文解析部31は入力されプログラム文を解析し、その
識別記号よりマクロ文とその他の文を識別分離し、マク
ロ文の場合はマクロ展開部33に送り、その他の文の場
合は入出力制御部34に送る。
マクロ展開部33は、マクロライブラリ32を参照して
入力されたマクロ文をマクロ展開した後、入出力制御部
34に送る。マクロ展開処理は、サブルーチンのように
コール(call)やリターン(return)処理を
必要としないので、速やかに実行される。
入出力制御部34は、構文解析部31又はマクロ展開部
33より送られた文をコンパイラ40に送り、コンパイ
ル処理を行わせる。
一般に言語仕様は各プログラム言語毎になっており、一
方のプログラム言語において無意味な記号が他方のプロ
グラム言語においては意味を持つ場合がある。このため
、第4図に例示したように、マクロ文とその他の文を区
別する識別記号は、各プログラム言語毎に異なっている
このようなことから、コンパイラ40及び言語用マクロ
プロセッサ20は、そのマクロライブラIJ32を含め
て、各プログラム言語毎に設けられている。
〔発明が解決しようとする問題点〕
マクロ文を含むプログラム文をコンパイルする場合、従
来は前述のように、各プログラム言語毎に言語用マクロ
プロセッサを用意する必要があった。このため、各プロ
グラム言語に共通なマクロ定義の場合であっても、各プ
ログラム言語毎に別々に作成して、それぞれのマクロラ
イブラリに格納する必要があった。
このように、プログラム言語の数だけ言語用マクロプロ
グラムが必要となるため、プログラム言語数に比例して
マクロプロセッサのためのバード量やスペース、マクロ
定義の作成工数、各マクロライブラリの管理工数等が増
大するという不都合があった。
本発明は、各プログラム言語に共通に使用できる、すな
わち言語無依存の言語用マクロ展開部・7すを提供する
ことを目的とする。
C問題点を解決するための手段〕 言語に依存しない言語用マクロプロセッサを考えるとき
、プログラム文から各言語に依存することなくマクロ文
とその他の文とを識別し、分離できることが必要である
そこで、本発明は、マクロ部とその他の文を識別する識
別記号を固定することなく変更可能とし、言語に依存し
ない識別記号をユーザが任意に指定できるようにする。
この設定された識別記号を参照して入力プログラム文よ
りこの指定された識別記号の有無を検出すれば、言語に
関係なくプログラム文よりマクロ文とその他の文を識別
、分離することができる。
このようにすることにより、言語用マクロプロセッサを
言語無依存として共通化することができる。
したがって、本発明に用いられるプログラム文における
識別記号は各言語毎に固定されておらず、ユーザによっ
て任意に指定される。
以下、本発明の講じた解決手段を、第1図を参照して説
明する。第1図は、本発明の基本構成をブロック図で示
したものである。
第1図において、10は言語用マクロプロセッサで、識
別記号設定部11、構文解析部12、マクロライブラリ
13及びマクロ展開部14を備えている。
識別記号設定部11は、マクロ文の可変の識別記号を指
定された識別記号に設定する処理を行う。
この識別記号設定部11への識別記号の入力は、例えば
外部から直接に、例えばユーザにより人力されるか、プ
ログラム文に識別記号設定部の形で挿入して行われる。
構文解析部12は、識別記号設定部11で設定された識
別記号を参照して、入力されたプログラム文中の識別記
号を検出し、この識別記号に基づいてプログラム文より
マクロ文とその他の文を識別分離する処理を行う。
マクロライブラリ13は、各言語のマクロ文に対するマ
クロ定義が格納される各言語に共通のマクロライブラリ
である。
マクロ展開部14は、マクロライブラリ13を参照して
、構文解析部12より入力されたマクロ文をマクロ展開
する処理を行う。
〔作 用〕
識別記号設定部11は、外部から直接入力された識別記
号又はプログラム文より入力された識別記号に基づいて
、マクロ文の識別記号の設定を行う。
一方、マクロライブラリ13には、予め各マグロ命令に
対するマクロ定義が格納されている。
構文解析部12は、識別記号設定部11に設定された識
別機構を参照して、入力されたプログラム文中より識別
記号を検出し、この識別記号に基づいてプログラム文か
らマクロ文とその他の文を識別分離し、マクロ文をマク
ロ展開部14に入力する。
マクロ展開部14は、マクロライブラリ13を参照して
、構文解析部12より入力されたマクロ文をマクロ展開
する。
構文解析部13から出力されたその他の文及びマクロ展
開部14より出力されたマクロ展開部は、図示しないコ
ンパイラに送られてコンパイル処理される。
これにより、各種言語のプログラム文を1個の共通な言
語用マクロプロセッサ20で処理すること、すなわちマ
クロプロセッサ20を言語依存とすることができ、全体
のマクロプロセッサシステムの構成を簡単化することが
できる。
また、マクロライブラリも各プログラム言語に対して共
通化することができるので、マクロ定義の作成を簡単化
することができるとともにマクロライブラリの管理を容
易化することができる。
例えば、共通に使用する言語数をn、一つのマクロ定義
の行数をm、プログラム文におけるマクロ文部分の割合
を0.5、その他の文の割合を0.5とすると、従来の
マクロ定義作成行数は、(0,5+0.5)Xnxm である。これに対し、共通マクロ定義の作成行数は、 (Q、5xn+0.5)xm であり、前者よりも0.5X (n−1)Xmだけマク
ロ定義作成行数を低減させることができる。
〔実施例〕
本発明の実施例を、第2図及び第3図を参照して説明す
る。第2図は本発明の実施例の構成の説明図、第3図は
同実施例に用いられるマクロ文に対する共通の識別記号
の例を示したものである。
以下、処理対象となるプログラム文の言語がPLl及び
C言語である場合を例にとって、本発明の一実施例につ
いて説明する。
(A)実施例の構成 第2図において、言語用マクロプロセッサ10、識別記
号設定部11、構文解析部12、マクロライブラリ13
及びマクロ展開部14については、第1図で説明したと
おりである。
15は入出力制御部で、図示しない上位装置、構成解析
部12、マクロ展開部、コンパイラ段20に対するプロ
グラム文及びその他の文の入力及び出力制御を行う。
コンパイラ20において、21はPLIコンパイラで、
入出力制御部15から入力されたPLI言語のプログラ
ム文に対するコンパイル処理を行う。また、22はC言
語コンパイラで、入出力制御部15から入力されたC言
語のプログラム文に対するコンパイル処理を行う。
(B)実施例の動作 実施例の動作を、処理対象となるプログラム文の言語が
PLIとC言語である場所を例にとって、第3図を参照
して説明する。
第3図(alは従来方式におけるPLIマクロ文の識別
記号を示したもので、PLIにおいて意味を持たない1
文字の記号“%”が、固定の識別記号として用いられて
いる。同図(b)は従来方式におけるC言語を示したも
ので、C言語において意味を持たない1文字の記号“#
”が、固定の識別記号として用いられている。同図(c
)はこの実施例に用いられる共通のマクロ文に対する識
別記号の一例を示したもので、PLIとC言語の両者に
おいて意味を持たない2文字の記号“#%”が、識別記
号としてユーザにより指定される。なお、この識別記号
は、ユーザがコンパイラオプションにより変更すること
ができる。
このようにして共通のマクロ文識別記号“#%”が、こ
の実施例では、ユーザにより直接に識別記号設定部11
に入力される。識別記号設定部11は、入力された識別
記号より識別記号“#%”とその長さを取り出して構文
解析部12に送る。なお、識別記号の指定がない場合は
、省略値(例えば、“%”と長さ1)が出力される。
一方マクロライブラリ13には、予め各マクロ文に対す
るマクロ定義が格納されている。
マクロプロセッサ10の入出力制御部工5は、図示しな
い上位装置より入力されたマクロ文を含むプログラム文
を構文解析部12に送る。
構文解析部12は、識別記号設定部11より入力された
識別記号とその長さを参照して、入力されたプログラム
文中の識別記号“#%”を検出し、この識別信号“#%
”の有無によりプログラム文からマクロ文とその他の文
を識別、分離する。すなわち、識別記号設定部11より
入力された識別記号とその長さで文の先頭をチェックし
、等しければマクロ文とし、等しくなければその他の文
とする。
識別記号“#%”の付加された文は、マクロ文と識別さ
れてマクロ展開部14に送られ、識別記号“#%”の付
加されない文は、非マクロ文と識別されて入出力制御部
15に送られる。
マクロ展開部14は、マクロライブラリ13を参照して
入力されたマクロ文をマクロ展開した後、入出力制御部
15に送る。
入出力制御部15は、構文解析部12又はマクロ展開部
14より送られたプログラム文を、プログラム言語がP
LIの場合はPLIコンパイラ21に送り、C言語の場
合はC言語コンパイラ22に送り、それぞれのコンパイ
ル処理を行わせる。
以上のようにして、PLI及びC言語の各プログラム文
を、マクロプロセッサ10により共通にマクロ文とそ他
の文の識別、分離処理及びマクロ文のマクロ展開処理を
行うことができる。
以上本発明の一実施例について説明したが、本発明の構
成は、この実施例の構成に限定されるものではない。
識別記号の文字数は2文字に限定されず、p文字(pは
1以上の整数)を使用することができる。
pの値を大きくすると、識別記号の選択範囲を拡げるこ
とができる。
識別記号は、通常キーワードの直前に付加されるが、キ
ーワードの後に付加するようにしてもよい。
識別記号を“#%IF”のように“IF”の直前(又は
直後)に付加する構成の他、“ (IF)  ”のよう
な構文とすることができる。
又、識別記号の指定はオプションでなく文により行うこ
とができるは、既に述べたとおりである。
〔発明の効果〕
以上説明したように、本発明によれば次の諸効果が得ら
れる。
(イ)各種言語のプログラム文を共通の1個の言語用マ
クロプロセッサで処理することができ、全体の言語用マ
クロプロセッサシステムの構成を簡単化することができ
る。
(ロ)各種言語のマクロ文に対するマクロ定義を格納す
るマクロライブラリを共通化することができる。
(ハ)マクロ定義の作成を、簡単化することができる。
(ニ)前記(ロ)及び(ハ)により、マクロライブラリ
の管理を容易化することができる。
【図面の簡単な説明】
第1図は本発明の基本構成の説明図、 第2図は本発明の一実施例の構成の説明図、第3図は同
実施例に用いられるマクロ文に対する共通の識別記号の
説明図、 第4図は従来のマクロ文に対する識別記号の説明図、 第5図は従来の言語用マクロプロセッサの説明図である
。 第1図及び第2図において、 10・・・言語用マクロプロセッサ、11・・・識別記
号設定部、12・・・構文解析部、13・・・マクロラ
イブラリ、14・・・マクロ展開部、15・・・入出力
制御部、20・・・コンパイラ段、21・・・PLIコ
ンパイラ、22・・・C言語コンパイラ。 1−発明の蘂千精爪゛ 第1図 (PL I)  ’ (帽6) (雪糊%IF    
 $$IF    ヰ%IF%GOTO甘GOTO井%
GOTO (a)      (b)       (c)喫もe
4?lr、用、・ら扛ろマクロ文」こブイ1ル#−麺の
吉仮2・1盲乙芳曳化4々11の 1糞坂

Claims (2)

    【特許請求の範囲】
  1. (1)マクロ文の識別記号が可変である各種言語のプロ
    グラム文を入力してマクロ文とその他の文に識別分離し
    、マクロ文の展開を行う言語無依存の言語用マクロプロ
    セッサであって、 (a)マクロ文の可変の識別記号を指定された識別記号
    に設定する識別記号設定部(11)と、(b)識別記号
    設定部(11)に設定された識別記号を参照して入力プ
    ログラム文中の識別記号を検出し、この識別記号に基づ
    いてプログラム文よりマクロ文とその他の文を識別分離
    する構文解析部(12)と、 (c)各言語のマクロ命令に対するマクロ定義が格納さ
    れる各言語に共通のマクロライブラリ(13)と、 (d)マクロライブラリ(13)を参照して、構文解析
    部(12)より入力されたマクロ文のマクロ展開を行う
    マクロ展開部(14)、 を備えたことを特徴とする言語用マクロプロセッサ。
  2. (2)識別記号の指定が外部よりオプションで行われる
    ことを特徴とする特許請求の範囲第1項記載の言語用マ
    クロプロセッサ。
JP10442087A 1987-04-30 1987-04-30 言語用マクロプロセツサ Pending JPS63271636A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10442087A JPS63271636A (ja) 1987-04-30 1987-04-30 言語用マクロプロセツサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP10442087A JPS63271636A (ja) 1987-04-30 1987-04-30 言語用マクロプロセツサ

Publications (1)

Publication Number Publication Date
JPS63271636A true JPS63271636A (ja) 1988-11-09

Family

ID=14380201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10442087A Pending JPS63271636A (ja) 1987-04-30 1987-04-30 言語用マクロプロセツサ

Country Status (1)

Country Link
JP (1) JPS63271636A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02141872A (ja) * 1988-11-24 1990-05-31 Agency Of Ind Science & Technol 文生成方式および装置
JP2012160214A (ja) * 2005-06-27 2012-08-23 Ab Initio Technology Llc コンピュータ環境における式の変換

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02141872A (ja) * 1988-11-24 1990-05-31 Agency Of Ind Science & Technol 文生成方式および装置
JP2012160214A (ja) * 2005-06-27 2012-08-23 Ab Initio Technology Llc コンピュータ環境における式の変換

Similar Documents

Publication Publication Date Title
JPH0721033A (ja) 言語処理装置及びその方法
JPS63271636A (ja) 言語用マクロプロセツサ
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
JPH04286029A (ja) ソースプログラム・コンバータ
US7529658B2 (en) Method for specifying equivalence of language grammars and automatically translating sentences in one language to sentences in another language in a computer environment
JPH0760363B2 (ja) ユーザ定義コマンドの自動作成方式
JP2827724B2 (ja) プログラムデバッグ処理方法
WO1997007452A1 (en) Programmable compiler
JPH06242958A (ja) コンパイル方式
JPH0695890A (ja) コンパイラにおける名前置換方式
JPS6074039A (ja) コンパイル言語認識処理方式
JP3190377B2 (ja) 関数名変換装置
JPH10124326A (ja) コンパイル方法
JPH0231236A (ja) コンパイラ
JPS6266371A (ja) テキスト分離型学習システム
JPH05143351A (ja) 原始プログラム比較方式
JPH04237365A (ja) テキスト処理装置における差分検出方式および自動編集方式
JPH04340628A (ja) ファジィ推論処理コンパイルシステム
JPH03186933A (ja) 言語処理システムのシンボル処理方式
JPH0196732A (ja) マクロ展開リストの出力方式
JPH0546373A (ja) フローチヤート作成処理装置
JPH09198246A (ja) 関数呼出し状況の解析方法
JPH0241558A (ja) 対話型エディタのテキスト解析編集処理方式
JPH0561687A (ja) コンパイラの処理方式
JPS62216050A (ja) プログラム単位の実行cpu時間測定処理方式