必修★片桐さん ~パターン照合~
Posted On 2009年1月17日土曜日 at 時刻: 15:27 by ゆーり■Matching
・パターンがアサーションに一致するかどうかをテスト
・実行には2つ引数を用意
【アサーション: Hanako is a girl】
・TrueであるアサーションをFactと呼ぶ
【パターン: ?x is a girl】
・Hanako is a girl と ?x is a girl のパターンマッチング
⇒"?x" を "Hanako"に具体化(変数束縛)し、true
【プログラム】
class Matching
arg.lengthの長さが一緒かどうか
一緒なら、Matcherクラスのmatchingへ
class Matcher
public boolean matching(String string1,String string2)
同じなら成功
各トークンに分ける
数が異なったら失敗(countToken)
定数通しでトークンがマッチングに失敗したら失敗(tokenMatchingで行う)
最後までOKなら成功
boolean tokenMatching
■Unify
・パターンとパターンが一致するかどうかをテスト
・変数同士の比較をユニフィケーションという
・
以下のプログラムはUnifierである
構造は、マッチングとほぼ変わらないが、上記のプログラムで全てのトークンをいったん配列に格納している。
これは、ある変数に束縛されたとき、同じ変数名のトークンをあらかじめ具現化しておくためである。

