BNF for ServiceParser.jj

NON-TERMINALS

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> )