"Mappings and Grammars on Trees" (1970)
Context-Free Tree Grammar (CFTG) とは
G = <Σ,N,S,R>
- Σ : アルファベット(要は木のノードのラベル。ranked = ラベルによってこの数は固定)
- N : 非終端記号(ranked)
- S ∈ N : 開始記号。rank=0
- R : 導出規則
- A(x1,...,xk) → RHS where RHS ::= σ(RHS,...,RHS) | A(RHS,...,RHS) の集まり
S から始めて非終端記号がなくなるまで書き換えを続けてってできたものが出力木、という形で木言語を定義する。
Context-Free Grammar(文字列) との関係
全ての非終端記号を rank=1 か rank=0 にすると文字列の文脈自由文法になる
S→aSa | bSb | a | b
は
S→S1($)
S1(x) → a(S1(a(y))) | b(S(b(y))) | a(y) | b(y)
こういう。
文字列 ⇔ 木 に関して
- Context-Free Grammar の導出木 ⇔ Regular Tree Grammar
- Macro Grammar の導出木 ⇔ Context-Free Tree Grammar
のような対応関係になっている。一段ずれたところに対応関係。
IO と OI
Macro Grammar 同様に、IO と OI の区別は本質的に重要。[Rounds70] では OI だけ考察されている。IO と OI をCFTGに最初に持ち込んで議論したのはどの論文だろう。。。
Pushdown?
トップダウンのプッシュダウンツリーオートマトン。かなり自然なモデル。OI-CFTGと対応する。
ボトムアップ。これもOI-CFTGと対応する。左辺にnonlinearな変数をおいて木と木の同値性をチェックできるモデルになっているんだけどちょっと強力すぎやしないかなあ。
IO-CFTGに対応するプッシュダウンツリーオートマトンは知られていない?
最終更新:2009年04月07日 10:51