version 1 .

Selector = [Step ...] .

Predicate =
/ Selector
/ <not @pred Predicate>
/ <or @preds [Predicate ...]>
/ <and @preds [Predicate ...]>
.

Step = Axis / Filter / Function .

Axis =
/ <values>
/ <descendants>
/ <at @key any>
/ <label>
/ <keys>
/ <length>
/ <annotations>
/ <embedded>
/ <parse @module [symbol ...] @name symbol>
/ <unparse @module [symbol ...] @name symbol>
.

Filter =
/ <nop>
/ <compare @op Comparison @literal any>
/ <regex @regex string>
/ <test @pred Predicate>
/ <real>
/ <int>
/ <kind @kind ValueKind>
.

Comparison = =eq / =ne / =lt / =ge / =gt / =le .

ValueKind =
/ =Boolean / =Float / =Double / =SignedInteger / =String / =ByteString / =Symbol
/ =Record / =Sequence / =Set / =Dictionary
/ =Embedded
.

Function =
/ <count @selector Selector>
.
