46 lines
1.3 KiB
BNF
46 lines
1.3 KiB
BNF
<Parse> ::= BACKSLASH <ns_or_server>;
|
|
<Parse> ::= IDENT <ns_or_class>;
|
|
<Parse> ::= COLON <ns_or_class>;
|
|
|
|
<ns_or_server> ::= IDENT <ns_list>;
|
|
|
|
<ns_or_class> ::= COLON <ident_becomes_ns> <objref> <optional_scope_class_list>;
|
|
<ns_or_class> ::= BACKSLASH <ident_becomes_ns> <ns_list>;
|
|
<ns_or_class> ::= <ident_becomes_ns> <objref_rest>;
|
|
<ns_or_class> ::= <ident_becomes_class> <objref_rest>;
|
|
|
|
<optional_scope_class_list> ::= COLON <objref> <optional_scope_class_list>;
|
|
<optional_scope_class_list> ::= <>;
|
|
|
|
<objref> ::= IDENT <objref_rest>; // IDENT is classname
|
|
|
|
<ns_list> ::= IDENT <ns_list_rest>;
|
|
|
|
<ident_becomes_ns> ::= <>; // <initial_ident> becomes a namespace
|
|
|
|
<ident_becomes_class> ::= <>; // <initial_ident> becomes the class
|
|
|
|
<objref_rest> ::= EQUALS <key_const>;
|
|
<objref_rest> ::= EQUALS AT; // = @
|
|
<objref_rest> ::= DOT <keyref_list>;
|
|
<objref_rest> ::= <>;
|
|
|
|
<ns_list_rest> ::= BACKSLASH <ns_list>;
|
|
<ns_list_rest> ::= COLON <objref> <optional_scope_class_list>;
|
|
<ns_list_rest> ::= <>;
|
|
|
|
<key_const> ::= STRING_CONST;
|
|
<key_const> ::= INTEGRAL_CONST;
|
|
<key_const> ::= REAL_CONST;
|
|
<key_const> ::= IDENT; // Where IDENT is "OBJECT" for singleton classes
|
|
|
|
<keyref_list> ::= <keyref> <keyref_term>;
|
|
|
|
<keyref> ::= <propname> EQUALS <key_const>;
|
|
|
|
<keyref_term> ::= COMMA <keyref_list>; // Used for compound keys
|
|
<keyref_term> ::= <>;
|
|
|
|
<propname> ::= IDENT;
|
|
|