Scope Selector Syntax

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.