| service_desc | ::= | <L_PAREN> version rating_system rating_service ( service_option )* ( category_list )+ <R_PAREN> |
| version | ::= | <L_PAREN> ( <PICS11> | <PICS10> ) <R_PAREN> |
| rating_system | ::= | <L_PAREN> <RATSYSTEM> quoted_URL <R_PAREN> |
| rating_service | ::= | <L_PAREN> <RATSERVICE> quoted_URL <R_PAREN> |
| service_option | ::= | default_option |
| | | description | |
| | | extension | |
| | | icondef | |
| | | name | |
| category_list | ::= | <L_PAREN> <CAT> <L_PAREN> <TRANS_AS> transmit_name <R_PAREN> ( ( category_option | scale_option ) )* ( category_list )* <R_PAREN> |
| defaultable_option | ::= | extension |
| | | integer | |
| | | labeled | |
| | | max | |
| | | min | |
| | | multi | |
| | | unordered | |
| defaultable_service_option | ::= | default_extension |
| | | integer | |
| | | labeled | |
| | | max | |
| | | min | |
| | | multi | |
| | | unordered | |
| category_option | ::= | description |
| | | icondef | |
| | | name | |
| scale_option | ::= | defaultable_option |
| | | enum_list | |
| enum_list | ::= | ( enum )+ |
| enum | ::= | <L_PAREN> <LABEL> enumname ( enumdescription )? <L_PAREN> <VALUE> number <R_PAREN> ( enumicondef )? <R_PAREN> |
| default_option | ::= | <L_PAREN> <DEF> ( defaultable_service_option )+ <R_PAREN> |
| description | ::= | <L_PAREN> <DESC> quoted_string <R_PAREN> |
| enumdescription | ::= | <L_PAREN> <DESC> quoted_string <R_PAREN> |
| extension | ::= | <L_PAREN> <EXT> <L_PAREN> mand_opt quoted_URL ( data )* <R_PAREN> <R_PAREN> |
| default_extension | ::= | <L_PAREN> <EXT> <L_PAREN> mand_opt quoted_URL ( data )* <R_PAREN> <R_PAREN> |
| icondef | ::= | <L_PAREN> <ICON> quoted_URL <R_PAREN> |
| enumicondef | ::= | <L_PAREN> <ICON> quoted_URL <R_PAREN> |
| integer | ::= | <L_PAREN> <INT> ( bool )? <R_PAREN> |
| labeled | ::= | <L_PAREN> <L_ONLY> ( bool )? <R_PAREN> |
| max | ::= | <L_PAREN> <MAX> maxnum <R_PAREN> |
| min | ::= | <L_PAREN> <MIN> minnum <R_PAREN> |
| multi | ::= | <L_PAREN> <MULTIVAL> ( bool )? <R_PAREN> |
| name | ::= | <L_PAREN> <NAME> quoted_string <R_PAREN> |
| enumname | ::= | <L_PAREN> <NAME> quoted_string <R_PAREN> |
| unordered | ::= | <L_PAREN> <UNORDERED> ( bool )? <R_PAREN> |
| bool | ::= | <TRUE> |
| | | <FALSE> | |
| mand_opt | ::= | <OPT> |
| | | <MAND> | |
| transmit_name | ::= | <DQUOTE> ( transmit_name_char )+ <DQUOTE> |
| minnum | ::= | number |
| | | <MINUS> <INF> | |
| maxnum | ::= | number |
| | | <PLUS> <INF> | |
| number | ::= | ( sign )? <DIGIT> ( <DIGIT> )* ( <DOT> ( <DIGIT> )* )? |
| sign | ::= | <PLUS> |
| | | <MINUS> | |
| data | ::= | ( quoted_string | <L_PAREN> ( data )* <R_PAREN> ) |
| quoted_string | ::= | <DQUOTE> ( string_char )+ <DQUOTE> |
| string_char | ::= | ( <LOWALPHA> | <HIGHALPHA> | <DIGIT> | escape | <ATSIGN> | <SEMI> | <QUES> | <COLON> | <AMP> | <EQUAL> | <DOLLAR> | <USCORE> | <DOT> | <POUND> | <BANG> | <STAR> | <SQUOTE> | <COMMA> | <NATIONAL> | <L_PAREN> | <R_PAREN> | <SLASH> | <MINUS> | <PLUS> | <L_BRAK> | <R_BRAK> | <L_ANGLE> | <R_ANGLE> | <PERCENT> | reservedString ) |
| quoted_URL | ::= | <DQUOTE> URL <DQUOTE> |
| URL | ::= | ( <SLASH> | urlchar )+ |
| urlchar | ::= | ( <LOWALPHA> | <HIGHALPHA> | <DIGIT> | escape | <ATSIGN> | <SEMI> | <QUES> | <COLON> | <AMP> | <EQUAL> | <DOLLAR> | <USCORE> | <DOT> | <POUND> | <BANG> | <STAR> | <COMMA> | <NATIONAL> | <L_PAREN> | <R_PAREN> | reservedString ) |
| transmit_name_char | ::= | ( <LOWALPHA> | <HIGHALPHA> | <DIGIT> | escape | <ATSIGN> | <SEMI> | <QUES> | <COLON> | <AMP> | <EQUAL> | <DOLLAR> | <USCORE> | <DOT> | <POUND> | <BANG> | <STAR> | <COMMA> | <NATIONAL> | reservedString ) |
| reservedString | ::= | ( <PICS11> | <PICS10> | <RATSYSTEM> | <RATSERVICE> | <CAT> | <TRANS_AS> | <VALUE> | <DEF> | <DESC> | <EXT> | <ICON> | <INT> | <L_ONLY> | <LABEL> | <MAX> | <MIN> | <MULTIVAL> | <NAME> | <UNORDERED> | <OPT> | <MAND> | <INF> | <TRUE> | <FALSE> ) |
| escape | ::= | ( <PERCENT> hex hex ) |
| hex | ::= | ( <DIGIT> | <LOWALPHA> | <HIGHALPHA> ) |