...
- ObjectClasses
- AttributeTypes
Actual grammar
The actual grammar used to parse schema is the following :
Code Block |
---|
<WS> ::= ( '#' (~'\n')* '\n' | ' ' | '\t' | '\r' '\n' | '\n' | '\r' )
<QUOTE> ::= '\''
<DIGIT> ::= '0' .. '9'
<DOLLAR> ::= '$'
<OPEN_PAREN> ::= '('
<CLOSE_PAREN> ::= ')'
<OPEN_BRACKET> ::= '{'
<CLOSE_BRACKET> ::= '}'
<NUMERIC_STRING> ::= ('0' .. '9')+
<NUMERICOID> ::= <NUMERIC_STRING ( '.' NUMERIC_STRING )+
<IDENTIFIER> ::= ( 'a' .. 'z') ( 'a' .. 'z' | '0' .. '9' | '-' | ';' )*
<DESC> ::= "desc" <WS> <QUOTE> ( ~'\'' )+ <QUOTE>
<SYNTAX> ::= "syntax" <WS> <NUMERICOID> ( <OPEN_BRACKET> ( <DIGIT> )+ <CLOSE_BRACKET> )?
<parseSchema> ::= ( <attributeType> | <objectClass> )*
<objectClass> ::=
"objectclass"
<OPEN_PAREN> <NUMERICOID>
( <objectClassNames> )?
( <objectClassDesc> )?
( "OBSOLETE" )?
( <objectClassSuperiors> )?
( "ABSTRACT" | "STRUCTURAL" | "AUXILIARY" )?
( <must> )?
( <may> )?
<CLOSE_PAREN>
<may> ::= "MAY" <woidlist>
<must> ::= "MUST" <woidlist>
<objectClassSuperiors> ::= "SUP" <woidlist>
<woid> ::= ( <NUMERICOID> | <IDENTIFIER> )
<woidlist> ::= ( <woid> | ( <OPEN_PAREN> <woid> ( <DOLLAR> <woid> )* <CLOSE_PAREN> ) )
<objectClassDesc> ::= <DESC>
<objectClassNames> ::=
( "NAME" ( <QUOTE> <IDENTIFIER> <QUOTE> |
( <OPEN_PAREN> <QUOTE> <IDENTIFIER> <QUOTE> ( <QUOTE> <IDENTIFIER> <QUOTE> )* <CLOSE_PAREN> ) ) )
<attributeType> ::=
"attributetype" <OPEN_PAREN> <NUMERICOID>
( <names> )?
( <desc> )?
( "OBSOLETE" )?
( <superior> )?
( <equality> )?
( <ordering> )?
( <substr> )?
( <syntax> )?
( "SINGLE-VALUE" )?
( "COLLECTIVE" )?
( "NO-USER-MODIFICATION" )?
( <usage> )?
<CLOSE_PAREN>
<desc> ::= <DESC>
<superior> ::= "SUP" ( <NUMERICOID> | <IDENTIFIER> );
<equality> ::= "EQUALITY" ( <NUMERICOID> | <IDENTIFIER> );
<substr> ::= "SUBSTR" ( <NUMERICOID> | <IDENTIFIER> )
<ordering> ::= "ORDERING" ( <NUMERICOID> | <IDENTIFIER> )
<names> ::= "NAME" ( <QUOTE> <IDENTIFIER> <QUOTE> | ( <OPEN_PAREN> ( <QUOTE> <IDENTIFIER> <QUOTE> )+ <CLOSE_PAREN> ) )
<syntax> ::= <SYNTAX>
<usage> ::= "USAGE" ( "userApplications" | "directoryOperation" | "distributedOperation" | "dSAOperation" )
|
Futur grammar
The next version should be a little bit more powerfull :
- it should use RFC 4512 grammar, which as extensions
- and it also should allow a less restrictive ordering of ObjectClass and AttributeType elements.
ObjectClass object
The ObjectClass syntax is (as of RFC 4512) :
Code Block |
---|
<ObjectClassDescription> ::=
<LPAREN> <SP> <numericoid> <parameters> <extensions> <WSP> RPAREN
// Each parameters should not be seen more than once
<parameters> ::=
( <SP> "NAME" <SP> <qdescrs>
| <SP> "DESC" <SP> <qdstring>
| <SP> "OBSOLETE"
| <SP> "SUP" <SP> <oids>
| <SP> ( "ABSTRACT" | "STRUCTURAL" | "AUXILIARY" )
| <SP> "MUST" <SP> <oids>
| <SP> "MAY" <SP> <oids> )+
|
with the following rules :
...