JPH04342026A - 構造体データのパターンマッチング方式 - Google Patents

構造体データのパターンマッチング方式

Info

Publication number
JPH04342026A
JPH04342026A JP11464291A JP11464291A JPH04342026A JP H04342026 A JPH04342026 A JP H04342026A JP 11464291 A JP11464291 A JP 11464291A JP 11464291 A JP11464291 A JP 11464291A JP H04342026 A JPH04342026 A JP H04342026A
Authority
JP
Japan
Prior art keywords
data
matching
tag
parts
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.)
Withdrawn
Application number
JP11464291A
Other languages
English (en)
Inventor
Satoshi Hosoi
聡 細井
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 JP11464291A priority Critical patent/JPH04342026A/ja
Publication of JPH04342026A publication Critical patent/JPH04342026A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、構造体データどうしの
パターンマッチング方式に関する。
【0002】Prologなどの人工知能言語や、 G
HC(Guarded Horn CLause ) 
,Linda などの並列論理型言語においては、パタ
ーンマッチングが頻繁に現れる。従ってこのような言語
の処理系を効率的に実現するには、パターンマッチング
を高速に実現する必要があり、特にLinda などで
は、各引数が整数、文字ポインタなどの単純なデータ型
であり、引数の数もせいぜい4つ程度と少ない。 なお、引数として文字列も多く現れるが、これはポイン
タにより処理されている。
【0003】
【従来の技術】このような単純型データのマッチングの
例を図4を参照して説明する。構造体データとして(x
,1,? y , ” abc ” ) を考える。あ
る構造体データが(x,1,? y , ” abc 
” ) にマッチングするか否かの判定は次のように行
う。
【0004】■各引数のデータ型が同じか否かのチェッ
ク ■各引数のデータが等しいか否かのチェックという処理
を行った後マッチしていたら、■引数の一方が変数で、
もう一方が定数ならば、変数に定数を代入した後に同じ
か否かのチェックを行う。
【0005】なお、変数yの前に?がある場合は、その
構造体がマッチした場合に、その変数に値が代入される
ことを表す。?がない場合は単なる比較である。例えば
、この場合、このマッチングの時点でx=2,y=5と
いう値が入っているならば、構造体データ(x,1,?
 y , ” abc ” ) は(2, 1, 5,
 ” abc ” ) とマッチングすることができ?
yの値は5となる。
【0006】
【発明が解決しようとする課題】構造体データ(x,1
,? y , ” abc ” ) の引数情報は図4
のようなレコード領域に格納されるが、パターンマッチ
ングを行う際以下の問題があった。■各引数ごとに、ま
ずタグ部のチェックを行い、その後データ部のチェック
を行っていたので、タグ部のチェックには引数の数に比
例したコストが必要となる。また第1引数、第2引数が
マッチしても、第3引数がマッチしなければそれまでに
行った第1引数、第2引数のデータ部に対する比較のコ
ストが無駄になる。
【0007】■さらに、データ部に代入を行っていた場
合には、その値を元に戻す必要があり、そのためのコス
トも余分にかかる。■また、引数のデータ部に等しいか
否かをチェックする際整数型のような単純なデータ型の
場合は、等しいか否かの判定は、例えば整数の比較命令
1個ですむので容易に行える。しかし、文字列同志の比
較のような場合には、一般には1文字ずつ比較すること
が必要となり、複数命令で行わなければならず、複雑と
なりコスト高となる。
【0008】本発明は、上述の問題点に鑑みてなされた
もので、文字列も含む単純データ型の構造体データのパ
ターンマッチングを高速に行う方式を提供することを目
的とする。
【0009】
【課題を解決するための手段】上記目的を達成するため
、構造体データどうしのパターンマッチング方式におい
て、各引数のタグ部とデータ部を分離し、タグとデータ
をそれぞれ別々にまとめて格納し、まずタグ部間のマッ
チングを行い、一致していれば次にデータ部間のマッチ
ングを行う。
【0010】また、前記データ部間のマッチングに際し
、まず定数データ間の比較を行い、一致した場合、次に
変数に対し値を代入してマッチングをする。
【0011】また、前記データ部に文字列が含まれる場
合、各文字列をそれぞれ固有の識別符号で表しこの識別
符号同志のマッチングを行う。
【0012】
【作用】上記構成により、タグ部間のマッチングの段階
で不一致がチェックされれば、その時点でマッチングが
終了するので無駄な比較を行わなくなる。
【0013】また、まず定数データ間の比較を行い、一
致した後に変数に値を代入してマッチングをするので、
定数データの段階で不一致が発生すれば、変数への代入
およびマッチング終了後のその値の戻し処理を行う必要
がなくなる。
【0014】また、文字列をそれ固有の識別符号で表し
、その識別符号どうしが一致するか否かをチェックする
ので、文字の比較を1文字ずつ行う必要がなくなり高速
マッチングが可能となる。
【0015】
【実施例】以下、本発明の実施例を図面を参照して説明
する。図1は本実施例の構造体データの格納方法を示す
。各引数のタグ部とデータ部とを分離し、タグはタグ、
データはデータごとにまとめて格納する。文字列の比較
は一般には単純ではない。然し文字列を整数などの定数
値で代用することは可能であっても、プログラムにバク
を潜ませてしまう可能性が高くなる。プログラムのあち
こちで、パターンマッチングを行うようなプログラムを
書いていると、マッチしてはいけない者同志をマッチン
グさせてしまうことがある。例えば、“begin ”
 , “end ” , “here” など意味のあ
る文字列を単なる0,1,2,などに置き換えてしまう
と、そのうち本来どれとどれをマッチングさせるべきか
わかりにくくなってくる。
【0016】そこで本実施例では「定数ポインタ型」と
いう新しいデータ型を導入する。この「定数ポインタ型
」データは、プログラム全体でグローバルであり、かつ
実行中に誤って値を変更してしまうことのないように、
プログラム実行中は値が不変な「定数」とする。しかも
、表示が異なれば、決してマッチしないものとする。具
体的には、この形のデータが出現する度に(コンパイル
時に)、各文字列にユニークな整数値をコンパイラが割
り当てるようにする。例えば文字列“abc ”に0を
割り当て、文字列“abcd” に1を割り当てる。こ
れにより“abc ” と“abcd” はマッチしな
いということが整数値の比較の場合と同じコストで実現
されることになる。図2はこのように定数型ポインタで
文字列“abc ” を0と表した状態を示す。
【0017】次にマッチング動作について説明する。ま
ず引数のタグ部のチェックを連続して行う。構造体の引
数はせいぜい4個だとすると、全てのタグを4バイト(
1ワード)内に収めることができるので、ワードの比較
命令1個で行える。引数の数が8個程度なら2命令で済
むことになり、ダブルワードの比較命令があるマシンな
ら1命令で行える。
【0018】タグ部のマッチングで不一致があればそこ
で中止し、全て一致していればデータ部のチェックを連
続して行う。この場合、必ず定数同志の比較を行ったあ
とで変数に定数の代入を行う。
【0019】図3はマッチングを行うプログラムの一例
を示したものである。マッチングをする構造体データは
(x,1,? y , ” abc ” ) とし、i
nt x,y;const   abc ; x=2 y=3 であるとき、マッチングする構造体データを捜す場合を
表す。
【0020】まず、このパターンマッチングの部分を図
3に示すようにC言語に一度展開し、更にこれをコンパ
イルするという方式をとる。またコンパイルにより、構
造体データ(x,1,? y , ” abc ” )
 の引数情報を図2のように格納する。
【0021】このようにすることにより、■全てのタグ
部の比較を1つの比較演算で行うことができる。■代入
よりも比較を先行して行っているので、無駄な代入操作
を行うことがない。■各データ部の比較も全て、単純な
ワード比較命令1個で行える。
【0022】
【発明の効果】以上の説明から明らかなように、本発明
は、■まず全引数のタグ部のチェックをまとめて行い、
次にデータ部のチェックを行うので不一致を早期に発見
し無駄なマッチングを行わない。■データ部のチェック
に際しては必ず比較を代入より先に行うことにより、無
駄な代入操作を行わない。■文字列の比較は定数ポイン
タ型を設け各文字列にユニークな数値を割り当てて行う
ので整数値の比較の場合と同じコストで実現できる。以
上により構造体データのパターンマッチングを高速で行
うことができる。
【図面の簡単な説明】
【図1】本実施例の構造体データ格納方法を示す図であ
る。
【図2】本実施例の文字列の定数型ポインタの例を表す
図である。
【図3】本実施例を表すプログラムの一例を示す図であ
る。
【図4】従来の構造体データ格納方法を示す図である。

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】  構造体データどうしのパターンマッチ
    ング方式において、各引数のタグ部とデータ部を分離し
    、タグとデータをそれぞれ別々にまとめて格納し、まず
    タグ部間のマッチングを行い、一致していれば次にデー
    タ部間のマッチングを行うことを特徴とする構造体デー
    タのパターンマッチング方式
  2. 【請求項2】  前記データ部間のマッチングに際し、
    まず定数データ間の比較を行い、一致した場合、次に変
    数に対し値を代入してマッチングをすることを特徴とす
    る請求項1記載の構造体データのパターンマッチング方
    式。
  3. 【請求項3】  前記データ部に文字列が含まれる場合
    、各文字列をそれぞれ固有の識別符号で表しこの識別符
    号同志のマッチングを行うことを特徴とする請求項1記
    載の構造体データのマッチング方式。
JP11464291A 1991-05-20 1991-05-20 構造体データのパターンマッチング方式 Withdrawn JPH04342026A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11464291A JPH04342026A (ja) 1991-05-20 1991-05-20 構造体データのパターンマッチング方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11464291A JPH04342026A (ja) 1991-05-20 1991-05-20 構造体データのパターンマッチング方式

Publications (1)

Publication Number Publication Date
JPH04342026A true JPH04342026A (ja) 1992-11-27

Family

ID=14642917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11464291A Withdrawn JPH04342026A (ja) 1991-05-20 1991-05-20 構造体データのパターンマッチング方式

Country Status (1)

Country Link
JP (1) JPH04342026A (ja)

Similar Documents

Publication Publication Date Title
US4712189A (en) Table driven translator
US7711685B1 (en) Method and system for an extensible macro language
US5367683A (en) Smart recompilation of performing matchup/difference after code generation
US20190317879A1 (en) Deep learning for software defect identification
KR20020070809A (ko) 포스트-링크 코드 최적화
US5625822A (en) Using sorting to do matchup in smart recompilation
JP2018510445A (ja) プログラム性能を向上させる領域特化システムおよび方法
US5446899A (en) Hint generation in smart recompilation
Neuhold The formal description of programming languages
US5535392A (en) Using hint generation to cause portions of object files to remain the same
JP3318051B2 (ja) 翻訳処理方法
Warshall et al. A general-purpose table-driven compiler
Hayes-Roth Representation of structured events and efficient procedures for their recognition
Zosel A parallel approach to compilation
JPH04342026A (ja) 構造体データのパターンマッチング方式
Freiburghouse The multics PL/1 compiler
US5671431A (en) Method for processing user program on a parallel computer system by inserting a tag during compiling
JPH0784797A (ja) ロードモジュールへのソースコード行番号登録方法および装置
Karjoth Implementing LOTOS specifications by communicating state machines
WO1997007452A1 (en) Programmable compiler
EP0856789A2 (en) Smart recompilation of source program
JP2000207226A (ja) コ―ド最適化装置、言語処理装置及びコ―ド最適化方法
Lutz Program debugging by near-miss recognition and symbolic evaluation
Harada et al. An automatic programming system SPACE with highly visualized and abstract program specification
Patnaik et al. DFL: a data flow language

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980806