# 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`.