Policy ::= RepStmt, [RepStmt], CbtStmt?, [SelectStmt], [FilterStmt], ; RepStmt ::= 'REP', Number1, (* number of object replicas *) ('AS', Ident)? (* optional selector name *) ; CbtStmt ::= 'CBF', Number1 (* container backup factor *) ; SelectStmt ::= 'SELECT', Number1, (* number of nodes to select without container backup factor *) ('IN', Clause?, Ident)?, (* bucket name *) FROM, (Ident | '*'), (* filter reference or whole netmap *) ('AS', Ident)? (* optional selector name *) ; Clause ::= 'SAME' (* nodes from the same bucket *) | 'DISTINCT' (* nodes from distinct buckets *) ; FilterStmt ::= 'FILTER', AndChain, ['OR', AndChain], 'AS', Ident (* obligatory filter name *) ; AndChain ::= Expr, ['AND', Expr] ; Expr ::= '@' Ident (* filter reference *) | Key, Op, Value (* attribute filter *) ; Op ::= 'EQ' | 'NE' | 'GE' | 'GT' | 'LT' | 'LE' ; Key ::= Ident | String ; Value ::= Ident | Number | String ; Number1 ::= Digit1 [Digit]; Number ::= Digit [Digit]; Digit1 ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' ; Digit ::= '0' | Digit1;