<< 目次を表示 >> ページ位置: ソースコードの生成と読み込み > コード分析 > コード分析 フレームワーク > コード分析のクエリ > コード分析のクエリ言語 (mFQL) > 結合 |
and |
and(left: set, right: set)
and結合は2つのセットの両方に含まれるノードのセットを返します。この結合は、AND結合であるとも言えます。
{1, 2, 3} と {2, 3, 4} のintersect結合の結果は、 {2, 3} となります。
次の例は、属性名が“TYPE”で、その値が“int”のものだけを抽出しています。
and( find("int"), with("TYPE") ) |
Union |
union(left: set, right: set [, right: set])
union結合は2つのセットの少なくとも片方に含まれるノードのセットを返します。この結合は、OR結合であるとも言えます。
この結合のパラメータは3つ以上にできます。その場合には、すべてのセットに含まれている内容を結合したものになります。最低でも2つのセットが必要です。
この関数の結合の結果は、渡されるセットに重複がない限りは、結果にも重複はありません。渡されるセットに重複がある場合には、結果にも重複が残ります。 {1, 2, 3} と {2, 3, 4} のunion結合の結果は、{1, 2, 3, 4} となります。
次の例は、属性名が“TYPE”か、その値が“int”.のものかの両方を抽出しています。
union( getByValue("int"), getByName("TYPE") ) |
except |
except(left: set, right: set)
Except結合は 2つのセットの片方にのみ含まれるノードのセットを返します。この結合は、XOR結合であるとも言えます。
{1, 2, 3} と {2, 3, 4} のexcept結合の結果は、{1, 4} となります。
次の例は、属性名が“TYPE”でその値が“int”ではないか、属性名が“TYPE”ではなく、その値が“int”であるものの両方を抽出しています。
except( find("int"), with("TYPE") ) |
exclude |
exclude(left: set, right: set)
Exclude結合は、最初のパラメータのセットには含まれるが、2番目のパラメータのセットには含まれないものを返します。
{1, 2, 3} と {2, 3, 4} のexclude結合の結果は、{1, 4} となります。
次の例は、属性の値が“int”であるもののなかで、属性名が“TYPE”のセットには含まれないものを抽出しています。
Exclude( find(“int”), with(“TYPE”) ) |
andat |
andat(count: number, left: set, right: set) andat(value: string, left: set, right: set) andat(count: number, value: string, left: set, right: set)
andat関数は、ancestorやfilterのような走査と、intersect結合とを同時に行う関数です。左のセットについて走査を実施し条件を満たすセットを取得後、右のセットとのintersect結合を行います。 走査についてのパラメータは、ancestorやfilterと同じです。
次の例は、ノード名が “NAME” のノードのセットに対してその1つ上位の親ノードから取得したセットと、名前が “CLASS” のノードとのintersect結合を返します。つまり、両方に含まれている喉のみが返されます。その結果、NAMEのノードのすぐ上の親のノードが"CLASS"であるもののみが、結果セットに含まれることになります。
andat(1, type(“NAME”), type(“CLASS”) ) |