1 | range-set ::= range ( logical-or range ) *
|
2 | logical-or ::= ( ' ' ) * '||' ( ' ' ) *
|
3 | range ::= hyphen | simple ( ' ' simple ) * | ''
|
4 | hyphen ::= partial ' - ' partial
|
5 | simple ::= primitive | partial | tilde | caret
|
6 | primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
|
7 | partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
|
8 | xr ::= 'x' | 'X' | '*' | nr
|
9 | nr ::= '0' | [1-9] ( [0-9] ) *
|
10 | tilde ::= '~' partial
|
11 | caret ::= '^' partial
|
12 | qualifier ::= ( '-' pre )? ( '+' build )?
|
13 | pre ::= parts
|
14 | build ::= parts
|
15 | parts ::= part ( '.' part ) *
|
16 | part ::= nr | [-0-9A-Za-z]+
|