11cb0ef41Sopenharmony_cirange-set ::= range ( logical-or range ) * 21cb0ef41Sopenharmony_cilogical-or ::= ( ' ' ) * '||' ( ' ' ) * 31cb0ef41Sopenharmony_cirange ::= hyphen | simple ( ' ' simple ) * | '' 41cb0ef41Sopenharmony_cihyphen ::= partial ' - ' partial 51cb0ef41Sopenharmony_cisimple ::= primitive | partial | tilde | caret 61cb0ef41Sopenharmony_ciprimitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial 71cb0ef41Sopenharmony_cipartial ::= xr ( '.' xr ( '.' xr qualifier ? )? )? 81cb0ef41Sopenharmony_cixr ::= 'x' | 'X' | '*' | nr 91cb0ef41Sopenharmony_cinr ::= '0' | [1-9] ( [0-9] ) * 101cb0ef41Sopenharmony_citilde ::= '~' partial 111cb0ef41Sopenharmony_cicaret ::= '^' partial 121cb0ef41Sopenharmony_ciqualifier ::= ( '-' pre )? ( '+' build )? 131cb0ef41Sopenharmony_cipre ::= parts 141cb0ef41Sopenharmony_cibuild ::= parts 151cb0ef41Sopenharmony_ciparts ::= part ( '.' part ) * 161cb0ef41Sopenharmony_cipart ::= nr | [-0-9A-Za-z]+ 17