atom: «string» | '*'
scope: «atom» ('.' «atom»)*
path: '^'? «scope» ('>'? «scope»)* '$'?
group: '(' «selector» ')'
filter: ("L:"|"R:"|"B:") («group» | «path»)
expression: '-'? («filter» | «group» | «path»)
composite: «expression» ([|&-] «expression»)*
selector: «composite» (',' «composite»)*
We need to add priority (to path
rule): (':' «integer»)?
. This is when multiple commands handle the same event and are using same scope (which can be the case when chaining e.g. documentation commands).
We probably need ~
for negative-look ahead, e.g.: text.html ~ meta.embedded
.