1234567891011121314151617
  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]+