EN JP CN

その他の拡張子

その他の拡張子

KAST 式および path 条件には反復シーケンスを含めることができます。反復シーケンスとは、ノードタイプで始まり修飾子で終わるサブパスのことです。

反復シーケンスは、波括弧で囲み、修飾子とノードタイプ名の間に配置できます。

//ExprBinary/Expr1::{ExprBinary/Expr2::}ExprConst

反復シーケンスは、対応する位置でゼロ回以上一致させることができます。上述の例は、次のような無限数の式に相当します。

//ExprBinary/Expr1::ExprConst //ExprBinary/Expr1::ExprBinary/Expr2::ExprConst //ExprBinary/Expr1::ExprBinary/Expr2::ExprBinary/Expr2::ExprConst

ノードの実際のタイプが重要ではない場合は、タイプ名の代わりに '*' 記号を使用することもできます。しかし、次のように 'short anonymous children' 表記を使用する方が効果的な場合もあります。

<Child name>

上記は以下と同等です。

<Child name>::*

たとえば、次の条件は同等です。

[isConstant(Expr1::*)], [isConstant(Expr1)], [(Expr1::*).isConstant()] and [Expr1.isConstant()]

すべてのケースで '*' を省略することはできないことに注意してください。KAST 式の反復シーケンスおよび末尾以外の要素では、完全な構文を使用してください。次の例を考えてください。

例:

//ExprBinary/Expr2::*[isConstant()]

上記を以下によって置換することはできません。

//ExprBinary/Expr2[isConstant()]

それは、名前の後の角括弧が兄弟インデックスの指定に使用されているからです。