JPH0659902A - 文字列置換処理方法 - Google Patents

文字列置換処理方法

Info

Publication number
JPH0659902A
JPH0659902A JP21383792A JP21383792A JPH0659902A JP H0659902 A JPH0659902 A JP H0659902A JP 21383792 A JP21383792 A JP 21383792A JP 21383792 A JP21383792 A JP 21383792A JP H0659902 A JPH0659902 A JP H0659902A
Authority
JP
Japan
Prior art keywords
character string
pointer
replacement
stack
argument
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
JP21383792A
Other languages
English (en)
Inventor
Kiyoshi Otaki
潔 大瀧
Hiroyuki Suzuki
啓之 鈴木
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.)
KOBE NIPPON DENKI SOFTWARE KK
NEC Corp
NEC Software Kobe Ltd
Original Assignee
KOBE NIPPON DENKI SOFTWARE KK
NEC Corp
NEC Software Kobe 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 KOBE NIPPON DENKI SOFTWARE KK, NEC Corp, NEC Software Kobe Ltd filed Critical KOBE NIPPON DENKI SOFTWARE KK
Priority to JP21383792A priority Critical patent/JPH0659902A/ja
Publication of JPH0659902A publication Critical patent/JPH0659902A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】従来より高速でメモリ使用効率の良い文字列置
換方法を提供する。 【構成】置換する文字列の定義情報を格納する置換文字
列テーブルを生成する。次に、このテーブル中の置換文
字列へのポインタと入力領域上の被置換文字列の引数へ
のポインタを要素としてもつスタックを用意する。入力
領域上の文字列を検索し、文字例の置換の有無を判定す
る。置換が必要でない場合、この入力領域上の文字列を
出力領域に出力する。置換が必要な場合、置換文字列テ
ーブルを参照して置換文字列へのポインタと入力領域上
の被置換文字列の引数へのポインタをスタックに格納す
る。スタック中のポインタが指す文字列を出力領域に複
写することにより、文字列を置換する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、効率の良い文字列の置
換処理方法に関する。
【0002】
【従来の技術】文字列を入力して、文字列の置換処理を
行なう方法として、従来、図6に示すような処理方法が
知られている。
【0003】この処理方式を、図8に示すようなCコン
パイラのプリプロセッサにおいて、「#define
f(x,y) x+y」という定義により、文字列「f
(100,200)」を文字列「100+200」に置
換する処理について、図6と図7を用いて説明する。
【0004】まず、置換しようとする文字列の定義情報
(この例の場合、「f(x,y)x+y」)をデータと
して格納するテーブル(以下、置換文字列テーブルと呼
ぶ)を生成する(S20)。次に図7に示すような入力
領域上の文字列を検索し、置換すべき文字列かどうか判
定する(S21)。もし、置換すべき文字列(この場合
「f」(n26)、以下、被置換文字列と呼ぶ)を発見
した場合、この被置換文字列以降(この場合、「(10
0,200)==300){」(c27))を退避領域
へ複写して退避する(S22)。退避した文字列のう
ち、被置換文字列「f」の引数(この場合「100」
(c28)と「200」(c29))までと、置換文字
列テーブルに格納している文字列(この場合「+」(c
30))を出力領域に複写する(S23)。その後、被
置換文字列の引数以降(この場合「==300){」
(c31))を出力領域に複写する(S24)。入力領
域上に置換すべき文字列がない場合、入力領域上の文字
列を出力領域に複写する(S25)。
【0005】
【発明が解決しようとする課題】前述した従来の方式で
は、置換すべき文字列を発見した場合、この被置換文字
列以降の文字列を退避する必要があるため、入力領域と
出力領域以外に新しく退避領域を用意する必要があり、
また、入力領域から退避領域へ、退避領域から出力領域
へ文字列を2度複写しなければならないため効率が悪い
という欠点がある。
【0006】
【課題を解決するための手段】本発明の文字列置換処理
方法は、入力された文字列中の置換すべき文字列の置換
を行うCコンハイラのプリプロセッサにおける文字列置
換処理方法において、置換する文字列の定義情報を格納
する置換文字列テーブルを備え、前記テーブル中の置換
文字列へのポインタと入力領域上の被置換文字列の引数
へのポインタを要素としてもつスタックを用意し、前記
入力領域上の文字列の置換の有無を判定し、前記置換が
必要でない場合前記入力領域上の文字列を予め備えた出
力領域に出力し、前記置換が必要な場合前記置換文字列
テーブルを参照して前記置換文字列へのポインタと前記
入力領域上の被置換文字列の引数へのポインタを前記ス
タックに格納し、前記スタック中のポインタが指す文字
列を前記出力領域に複写することを特徴とする。
【0007】
【実施例】次に、本発明の詳細を、Cコンパイラのプリ
プロセッサにおける文字列の置換処理を用いて、図面を
参照しながら説明する。
【0008】図1は、本発明の一実施例の処理の流れ図
である。図1を参照して本実施例の動作を説明する。
【0009】置換文字列テーブルの生成処理(S1)
は、置換しようとする文字列の定義をあらかじめトーク
ンとしてテーブルに格納するための処理である。置換文
字列テーブルは、図2の(T7)に示すように、置換文
字列名(t9)とトークン(t10)の集まりで構成さ
れる。トークンには引数ドークンと文字列トークンがあ
る。
【0010】例えば、「#define f(x,y)
x+y」という定義は、図2の(T8)という置換文
字列テーブルに格納する。置換文字列名は「f」であ
り、欄t9中に文字列として格納する。(t11)は引
数トークンであり、定義中の文字列に引数がある場合、
その引数と対応しており(この列の場合「x」と
「y」)、被置換文字列を見つけたときに、その被置換
文字列の引数の文字列でこのトークンを置き換えること
を示している。
【0011】(t12)は文字列トークンであり、定義
文字列に記述されている引数以外の文字列であることを
示している。
【0012】次に制御をスタックの生成処理(S2)に
移す。スタックの生成処理(S2)では、文字列の先頭
を指すポインタを要素にもつテーブル(これをスタッフ
と呼ぶ)を生成する。次に制御を置換文字列の検索処理
(S3)に移す。置換文字列の検索処理(S3)では、
入力領域上に置換すべき文字列があるかどうかを検索す
る。もし、置換すべき文字列が存在した場合、制御を入
力領域上の文字列のポインタをスタックに格納する処理
(S4)に移し、置換すべき文字列が存在しない場合、
制御を入力領域上に文字列を出力領域へ複写する処理
(S6)に移す。
【0013】入力領域上の文字列のポインタをスタック
に格納する処理(S4)では、先に生成した置換文字列
テーブルを参照し、置換文字列名に対応する被置換文字
列の引数と文字列トークンから、引数トークンは対応す
る引数の文字列の先頭ポインタを、文字列トークンは、
定義の引数以外の文字列へのポインタをそれぞれ格納す
る。このときスタックに格納する方法として、先入れ後
出し方式を用いる。
【0014】この列の場合、図3に示すように、置換文
字列テーブルは、置換文字列名が「f」で、トークンと
して「引数トークン1(t11)」と「文字列トークン
(t12)」と「引数トークン2(t11)」から構成
されている。トークンの並びが「引数トークン1」、
「文字列トークン」、「引数トークン2」と続いている
ため、スタックにこの順に格納する。このとき、スタッ
クに格納する方法として、先入れ後出し方式を採るの
で、まず「引数トークン2」に対応する文字列のポイン
タ、この場合「200」の先頭ポインタをスタックに格
納する(p13)。次に、文字列トークンに対応する
「△+△」の先頭ポインタをスタックに格納する(p1
4)。さらに、「引数トークン1」に対応する「10
0」の先頭ポインタをスタックに格納する(p15)。
【0015】次に制御をスタック中のポインタが指す文
字列の複写処理(S5)に移す。スタック中のポインタ
が指す文字列の複写処理(S5)では、スタックを参照
して、スタックに格納されているポインタが指す入力領
域上の文字列および定義の引数以外の文字列を出力領域
へ複写する。この例の場合、図4に示すように、まずス
タックに最後に積まれたポインタ(p15)の指す文字
列「100」を出力領域へ複写する(c16)。さら
に、スタックに2番目に積まれたポインタ(p14)が
指す文字列「△+△」を複写し(c17)、最後にスタ
ックに最初に積まれたポインタ(p13)が指す文字列
「200」を出力領域に複写する(c18)。
【0016】すべての複写を終了すると、制御を再ひ置
換文字列の検索処理(S3)に移す。
【0017】置換文字列の検索処理(S3)において、
入力領域上で検索した文字列が置換する必要がない文字
列のとき、そのまま、出力領域へ複写する(S6)。こ
の例の場合、図5に示すように、「if(」は置換する
必要がない文字列なので、そのまま出力領域に複写する
(c19)。
【0018】
【発明の効果】以上説明したように本発明によれば、文
字列へのポインタをもつスタックを用意し、そのスタッ
ク中のポインタが指す文字列を必要なときに一度だけ複
写するため、従来の方式よりも高速に処理できる効果が
ある。
【0019】また、このスタックを用意することによ
り、退避領域が不要であり、スタックの要素は、置換文
字列が存在した場合、そのトークンの数だけしか使用し
ないので、メモリの使用効率が良いという効果がある。
【図面の簡単な説明】
【図1】本発明の一実施例を示す処理の流れ図である。
【図2】置換文字列テーブルの構成例を示す図である。
【図3】本発明例における動作説明図である。
【図4】本発明例における動作説明図である。
【図5】本発明例における動作説明図である。
【図6】従来技術の処理の流れ図である。
【図7】従来技術の実施例の動作説明図である。
【図8】コンパイラの処理の流れ図である。
【符号の説明】
S1 置換文字よりテーブルの生成処理 S2 スタックの生成処理 S3 置換文字列の検索処理 S4 スタックへの格納処理 S5 スタックへの参照と出力領域への複写処理 S6 出力領域への複写処理 S20 置換文字列テーブルの生成処理 S21 置換文字列の検索処理 S22 入力領域上の文字列の退避領域への退避処理 S23 置換文字列テーブルの参照と出力領域への複
写処理 S24 退避領域上の文字列の出力領域への複写処理 S25 出力領域への複写処理

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 入力された文字列中の置換すべき文字列
    の置換を行うCコンハイラのプリプロセッサにおける文
    字列置換処理方法において、置換する文字列の定義情報
    を格納する置換文字列テーブルを備え、前記テーブル中
    の置換文字列へのポインタと入力領域上の被置換文字列
    の引数へのポインタを要素としてもつスタックを用意
    し、前記入力領域上の文字列の置換の有無を判定し、前
    記置換が必要でない場合前記入力領域上の文字列を予め
    備えた出力領域に出力し、前記置換が必要な場合前記置
    換文字列テーブルを参照して前記置換文字列へのポイン
    タと前記入力領域上の被置換文字列の引数へのポインタ
    を前記スタックに格納し、前記スタック中のポインタが
    指す文字列を前記出力領域に複写することを特徴とする
    文字列置換処理方法。
JP21383792A 1992-08-11 1992-08-11 文字列置換処理方法 Pending JPH0659902A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP21383792A JPH0659902A (ja) 1992-08-11 1992-08-11 文字列置換処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21383792A JPH0659902A (ja) 1992-08-11 1992-08-11 文字列置換処理方法

Publications (1)

Publication Number Publication Date
JPH0659902A true JPH0659902A (ja) 1994-03-04

Family

ID=16645852

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21383792A Pending JPH0659902A (ja) 1992-08-11 1992-08-11 文字列置換処理方法

Country Status (1)

Country Link
JP (1) JPH0659902A (ja)

Similar Documents

Publication Publication Date Title
JP3178475B2 (ja) データ処理装置
JP3554459B2 (ja) テキストデータ登録検索方法
JPH03266039A (ja) フリーフォーマットデータリンク処理方式
JPH07141201A (ja) 2パスコンパイラのための改良された方法
JPH0659902A (ja) 文字列置換処理方法
JP2004199264A (ja) データベース処理方法及びその実施装置並びにその処理プログラム
JPH05298173A (ja) 分散ファイル同期更新方式
JP2001338004A (ja) 高位合成システム、高位合成方法、及び高位合成方法実行プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2721377B2 (ja) Basicプログラム圧縮方法
JPH096629A (ja) プログラム変換方法
JPH0667949A (ja) ファイルレコード作成方式
JPH02302869A (ja) ファイル編集方式
JPH05181722A (ja) 索引編成ファイルのアクセス方法
JPH05334249A (ja) 対話処理システムにおけるカタログのネスティング管理方式
JPH04304537A (ja) ライブラリファイル管理方式
JPH05346847A (ja) 入力ファイル復元部付きファイル及びその生成装置
JPH05181656A (ja) シンボル情報管理方式
JPH06230951A (ja) プログラム開発支援装置
JPH03113651A (ja) ガーベジコレクション処理方式
JPS63178321A (ja) 木走査方式
JPS63201847A (ja) デリ−トしたフアイルの復活方式
JPH02263265A (ja) 作表処理装置
JP2000029750A (ja) メモリダンプファイル再構成方式
JPS59119459A (ja) ガ−ベジ・コレクシヨン方式
JPH07210570A (ja) 有向グラフ編集処理装置

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 19990907