trans.Add(変換元パターン,変換先パターン)で変換ルールを登録します。 パターン中、SN(name,children)は「名前がname、子ノードがchildrenであるノード」、SV(value)は「値がvalueであるノード」を表します。DNは「変換先パターン」内で使う事以外はSNと同じです。S1はSN()[1]、D1はDN()[1]の省略形です(以下の説明では省略しないで書きます)。 TreeConverterはまず、与えられたノードが、登録された各「変換元パターン」にマッチするかどうか調べます。例えば は、FIVrmlParserTest.cpp:100で登録された SN(vntNodeStatement, SV("USE") >> SN()[1]) にマッチします。 この時、ラベル [n] の付いた部分にマッチしたノード(列)を覚えておきます。ここでは、 [1] ==> です。次に、上で覚えたノードを、上の手順で再帰的に変換します。この例ではこれ以上変換できないので、そのまま [1] ==> となります。 最後に、対応する「変換先パターン」のラベルが付いた部分に、上記のノードを当てはめます。この例の変換先パターンは DN("Use", DN()[1]) なので、生成されるノードは となります。