mirror of https://github.com/kdl-org/kdl.git
kql: only allow top() at start of selector (#388)
This commit is contained in:
parent
fa204cec62
commit
6a77436e09
|
|
@ -30,6 +30,11 @@ properties, node names, etc). With the exception of `top()` and `()`, they are a
|
||||||
used inside a `[]` selector. Some matchers are unary, but most of them involve
|
used inside a `[]` selector. Some matchers are unary, but most of them involve
|
||||||
binary operators.
|
binary operators.
|
||||||
|
|
||||||
|
The `top()` matcher can only be used as the first matcher of a selector. This means
|
||||||
|
that it cannot be the right operand of the `>`, `>>`, `+`, or `++` operators. As `||`
|
||||||
|
combines selectors, the `top()` can appear just after it. For instance,
|
||||||
|
`a > b || top() > b` is valid, but `a > top()` is not.
|
||||||
|
|
||||||
* `top()`: Returns all toplevel children of the current document.
|
* `top()`: Returns all toplevel children of the current document.
|
||||||
* `top() > []`: Equivalent to `top()` on its own.
|
* `top() > []`: Equivalent to `top()` on its own.
|
||||||
* `(foo)`: Selects any element whose type annotation is `foo`.
|
* `(foo)`: Selects any element whose type annotation is `foo`.
|
||||||
|
|
@ -111,7 +116,8 @@ what they expand to.
|
||||||
```
|
```
|
||||||
query-str := $bom? query
|
query-str := $bom? query
|
||||||
query := selector q-ws* "||" q-ws* query | selector
|
query := selector q-ws* "||" q-ws* query | selector
|
||||||
selector := filter q-ws* selector-operator q-ws* selector | filter
|
selector := filter q-ws* selector-operator q-ws* selector-subsequent | filter
|
||||||
|
selector-subsequent := matchers q-ws* selector-operator q-ws* selector-subsequent | matchers
|
||||||
selector-operator := ">>" | ">" | "++" | "+"
|
selector-operator := ">>" | ">" | "++" | "+"
|
||||||
filter := "top(" q-ws* ")" | matchers
|
filter := "top(" q-ws* ")" | matchers
|
||||||
matchers := type-matcher $string? accessor-matcher* | $string accessor-matcher* | accessor-matcher+
|
matchers := type-matcher $string? accessor-matcher* | $string accessor-matcher* | accessor-matcher+
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue