修飾子

軸修飾子は次のように複数あります。

parent

Type1/parent::Type2

タイプ Type1 のノードはタイプ Type2 の親を持つことを意味します。

ancestor

Type1/ancestor::Type2

タイプ Type1 のノードはタイプ Type2 の祖先を持つことを意味します。

descendant

Type1/descendant::Type2

タイプ Type1 のノードはタイプ Type2 の子孫を持つことを意味します。

descendant-or-self

Type1/descendant-or-self::Type2

1) Type1 はタイプ Type2 のスーパータイプであるか、2) タイプ Type1 のノードはタイプ Type2 の子孫を持つことを意味します。特に、この軸は Type1 の代わりに '*' が使用されている場合に役立ちます。

following-sibling

Type1/following-sibling::Type2

2 つのノードが同じリストの子に属し、このリストではタイプが Type2 のノードがタイプ Type1 のノードの後 (直後または推移的) に続くことを意味します。

next-sibling

Type1/next-sibling::Type2

2 つのノードが同じリストの子に属し、このリストではタイプが Type2 のノードがタイプ Type1 のノードの直後に続くことを意味します。

child_name

Type1/<child_name>::Type2

Type1 ノードの子 child-name はタイプ Type2 であることを意味します。そのような子を持つ AST タイプがない場合は、エラーが報告されます。

sibling_indexafter a child name

Type1/<child name>[<sibling_index>]::Type2

タイプ Type1 のノードが、タイプ Type2 のノードのリストの子の sibling_index-th 要素であることを意味します。

sibling qualifierafter a child name

//ExprCall/Params[*]::ExprBinary

角括弧の間に数値ではなくアスタリスクが指定されている場合、対応するリストの子で最初に一致する要素が使用されます。上の式は、関数呼び出しにタイプ 'ExprBinary' の引数が少なくとも 1 つある場合に一致します。