Return-Path: X-Original-To: apmail-directory-commits-archive@www.apache.org Delivered-To: apmail-directory-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 43DC8DF27 for ; Wed, 15 May 2013 17:10:02 +0000 (UTC) Received: (qmail 99254 invoked by uid 500); 15 May 2013 17:10:02 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 99212 invoked by uid 500); 15 May 2013 17:10:02 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 99205 invoked by uid 99); 15 May 2013 17:10:02 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 May 2013 17:10:02 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 May 2013 17:09:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 7435D23889DA for ; Wed, 15 May 2013 17:09:38 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r862092 - in /websites/staging/directory/trunk/content: ./ apacheds/advanced-ug/4.2.10-aci-grammar.html Date: Wed, 15 May 2013 17:09:38 -0000 To: commits@directory.apache.org From: buildbot@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130515170938.7435D23889DA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: buildbot Date: Wed May 15 17:09:37 2013 New Revision: 862092 Log: Staging update by buildbot for directory Modified: websites/staging/directory/trunk/content/ (props changed) websites/staging/directory/trunk/content/apacheds/advanced-ug/4.2.10-aci-grammar.html Propchange: websites/staging/directory/trunk/content/ ------------------------------------------------------------------------------ --- cms:source-revision (original) +++ cms:source-revision Wed May 15 17:09:37 2013 @@ -1 +1 @@ -1482959 +1482961 Modified: websites/staging/directory/trunk/content/apacheds/advanced-ug/4.2.10-aci-grammar.html ============================================================================== --- websites/staging/directory/trunk/content/apacheds/advanced-ug/4.2.10-aci-grammar.html (original) +++ websites/staging/directory/trunk/content/apacheds/advanced-ug/4.2.10-aci-grammar.html Wed May 15 17:09:37 2013 @@ -140,258 +140,259 @@

4.2.10 - ACI grammar

The ACI attributes store data following a specific structure, which is define by this grammar :

-

:::XML - ::= '{' - '}' EOF

-
<mainACIItemComponents> | e
-
-** Note : we have to allow only one of each option
-<mainACIItemComponent> ::= 
-    "identificationTag" <SP+> SAFEUTF8STRING
-    | "precedence" <SP+> INTEGER
-    | "authenticationLevel" <SP+> <authenticationLevel>
-    | "itemOrUserFirst" <SP+> <itemOrUserFirst>
-
-<authenticationLevel> ::= "none" | "simple" | "strong"
-
-<itemOrUserFirst> ::= 
-           "itemFirst" <SP*> ':' <SP*> '{' <SP*> <itemType> <SP*>
-'}' 
-           | 
-           "userFirst" <SP*> ':' <SP*> '{' <SP*> <userType> <SP*>
-'}'
-
-<itemType> ::= 
-        "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}' <SP*> 
-                 ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
-<anyItemPermission*> '}'
-        | 
-        "itemPermissions" <SP+> '{' <SP*> <itemPermissions?> '}' <SP*> 
-                 ',' <SP*> "protectedItems" <SP*> '{' <SP*>
-<protectedItem?> '}'
-
-<userType> ::= 
-         "userClasses" <SP+> '{' <SP*> <userClass?> '}' <SP*> ',' 
-                   <SP*> '{' <SP*> <anyUserPermission> <SP*>
-<anyUserPermission*> '}'
-          |
-          "userPermissions" <SP+> '{' <SP*> <userPermissions?> '}'
-<SP*> ',' 
-                   <SP*> "userClasses" <SP+> '{' <SP*>
-<userClass?> '}'
-
-<protectedItem?> ::= <protectedItem> <SP*> <protectedItem*> | e
-
-<protectedItem*> ::= ',' <SP*> <protectedItem> <SP*> <protectedItem*> | e
-
-<protectedItem> ::= 
-    "entry"
-    | "allUserAttributeTypes"
-    | "attributeType" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
-    | "allAttributeValues" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
-    | "allUserAttributeTypesAndValues"
-    | ATTRIBUTE_VALUE_CANDIDATE
-    | "selfValue" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
-    | RANGE_OF_VALUES_CANDIDATE
-    | "maxValueCount" <SP+> '{' <SP*> '{' <SP*> <valueCountType> <SP*> '}'
-<SP*> <maxValueCount*> '}'
-    | "maxImmSub" <SP+> INTEGER
-    | "restrictedBy" <SP+> '{' <SP*> '{' <SP*> <typeValueIn> <SP*> '}'
-<SP*> <restrictedValue*> '}'
-    | "classes" <SP+> <refinement>
-
-<maxValueCount*> ::= ',' <SP*> '{' <SP*> <valueCountType> <SP*> '}' <SP*>
-<maxValueCount*> | e
-
-<valueCountType> ::= 
-           "type" <SP+> <oid> <SP*> ',' <SP*> "maxCount" <SP+>
-INTEGER 
-            | 
-           "maxCount" <SP+> INTEGER <SP*> ',' <SP*> "type" <SP+>
-<oid>
-
-<restrictedValue*> ::= ',' <SP*> '{' <SP*> <typeValueIn> <SP*> '}' <SP*>
-<restrictedValue*> | e
-
-<typeValueIn> ::=
-        "type" <SP+> <oid> <SP*> ',' <SP*> "valuesIn" <SP+> <oid>
-        |
-        "valuesIn" <SP+> <oid> <SP*> ',' <SP*> "type" <SP+> <oid>
-
-<oids> ::= ',' <SP*> <oid> <SP*> <oids> | e
-
-<itemPermissions?> ::= '{' <SP*> <anyItemPermission> <SP*>
-<anyItemPermission*> '}' <SP*> <itemPermissions*> | e
-
-<itemPermissions*> ::= 
-             ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
-<anyItemPermission*> '}' <SP*> <itemPermissions*> | e
-
-<anyItemPermission*> ::= ',' <SP*> <anyItemPermission> <SP*>
-<anyItemPermission*> | e
-
-<anyItemPermission> :
-    "precedence" <SP+> <INTEGER>
-    | "userClasses" <SP+> '{' <SP*> <userClass?> '}'
-    | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
-
-<grantAndDenial?> ::= <grantAndDenial> <SP*> <grantAndDenial*> | e
-
-<grantAndDenial*> ::= ',' <SP*> <grantAndDenial> <SP*> <grantAndDenial*>
-
-<grantAndDenial> :
-    "grantAdd" 
-    | "denyAdd" 
-    | "grantDiscloseOnError"
-    | "denyDiscloseOnError" 
-    | "grantRead" 
-    | "denyRead" 
-    | "grantRemove" 
-    | "denyRemove" 
-    | "grantBrowse" 
-    | "denyBrowse" 
-    | "grantExport"
-    | "denyExport" 
-    | "grantImport" 
-    | "denyImport" 
-    | "grantModify" 
-    | "denyModify" 
-    | "grantRename" 
-    | "denyRename"
-    | "grantReturnDN"
-    | "denyReturnDN" 
-    | "grantCompare" 
-    | "denyCompare" 
-    | "grantFilterMatch"
-    | "denyFilterMatch" 
-    | "grantInvoke"
-    | "denyInvoke"
-
-<userClass?> ::= <userClass> <SP*> <userClass*> | e
-
-<userClass*> ::= ',' <SP*> <userClass> <SP*> <userClass*> | e
-
-<userClass> :
-    "allUsers"
-    | "thisEntry"
-    | "parentOfEntry"
-    | "name" <SP+> '{' <SP*> <distinguishedName> <SP*> <name*> '}'
-    | "userGroup" <SP+> '{' <SP*> <distinguishedName> <SP*> <userGroup*>
-'}'
-    | "subtree" <SP+> '{' <SP*> '{' <SP*> <subtreeSpecificationComponent?>
-'}' <SP*> <subTree*> '}'
-
-<name*> ::= ',' <SP*> <distinguishedName> <SP*> <name*> | e
-
-<userGroup*> ::= ',' <SP*> <distinguishedName> <SP*> <userGroup*> | e
-
-<subTree*> ::= ',' <SP*> '{' <SP*> <subtreeSpecificationComponent?> '}'
-<SP*> <subTree*> | e
-
-<userPermissions?> ::= '{' <SP*> <anyUserPermission> <SP*>
-<anyUserPermission*> '}' <SP*> <userPermissions*> | e
-
-<userPermissions*> ::= 
-             ',' <SP*> '{' <SP*> <anyUserPermission> <SP*>
-<anyUserPermission*> '}' <SP*> <userPermissions*> | e
-
-<anyUserPermission*> ::= ',' <SP*> <anyUserPermission> <SP*>
-<anyUserPermission*> | e
-
-<anyUserPermission> :
-    "precedence" <SP+> <INTEGER>
-    | "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}'
-    | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
-
-<subtreeSpecificationComponent?> ::= <subtreeSpecificationComponent> <SP*>
-<subtreeSpecificationComponent*> | e
-<subtreeSpecificationComponent*> ::= ',' <SP*>
-<subtreeSpecificationComponent> <SP*> <subtreeSpecificationComponent*> | e
-
-<subtreeSpecificationComponent> :
-    "base" <SP+> <distinguishedName>
-    | "specificExclusions" <SP+> '{' <SP*> <specificExclusion?> '}'
-    | "minimum" <SP+> INTEGER
-    | "maximum" <SP+> INTEGER
-
-<specificExclusion?> ::= <specificExclusion> <SP*> <specificExclusion*> | e
-
-<specificExclusion*> ::= ',' <SP*> <specificExclusion> <SP*>
-<specificExclusion*> | e
-
-<specificExclusion> ::=
-              "chopBefore" <SP*> ':' <SP*> <distinguishedName> 
-              | 
-              "chopAfter" <SP*> ':' <SP*> <distinguishedName>
-
-<refinement> ::= 
-           "item" <SP*> ':' <SP*> <oid> 
-           | 
-           "and" <SP*> ':' <SP*> '{' <refinements?> '}'
-           | 
-           "or" <SP*> ':' <SP*> '{' <refinements?> '}'
-           | 
-           "not" <SP*> ':' <SP*> '{' <refinements?> '}'
-
-<refinements?> ::= <SP*> <refinements?> <SP*> <refinement*> | e
-
-<refinement*> ::= ',' <SP*> <refinement> <SP*> <refinement*> | e
-
-<distinguishedName> ::= SAFEUTF8STRING
-
-<oid> ::= DESCR | NUMERICOID
-
-SAFEUTF8CHAR :
-    '\u0001'..'\u0021' |
-    '\u0023'..'\u007F' |
-    '\u00c0'..'\u00d6' |
-    '\u00d8'..'\u00f6' |
-    '\u00f8'..'\u00ff' |
-    '\u0100'..'\u1fff' |
-    '\u3040'..'\u318f' |
-    '\u3300'..'\u337f' |
-    '\u3400'..'\u3d2d' |
-    '\u4e00'..'\u9fff' |
-    '\uf900'..'\ufaff' ;
-
-<SP+> ::= <SP> <SP*>
-<SP*> ::= <SP> <SP*> | e
-<SP> ::= ' ' | '\t' | '\n' | '\r' ;
-
-ALPHA : 'A'..'Z' | 'a'..'z' ;
-
-<INTEGER> ::= <DIGIT> | <LDIGIT> <DIGIT> <DIGIT*>
-<DIGIT> ::= '0' | <LDIGIT> ;
-<LDIGIT> ::= '1'..'9' ;
-<DIGIT*> ::= <DIGIT> <DIGIT*> | e
-
-HYPHEN : '-' ;
-
-NUMERICOID : INTEGER ( DOT INTEGER )+ ;
-
-DOT : '.' ;
-
-INTEGER_OR_NUMERICOID
-    :
-    ( INTEGER DOT ) => NUMERICOID
-    |
-    INTEGER
-
-SAFEUTF8STRING : '"'! ( SAFEUTF8CHAR )* '"'! ;
-
-DESCR 
-    :
-    ( "attributeValue" ( SP! )+ '{' ) =>
-      "attributeValue"! ( SP! )+ '{'! ( options : . )* '}'!
-    | ( "rangeOfValues" ( SP! )+ '(' ) =>
-      "rangeOfValues"! ( SP! )+ FILTER
-    | ALPHA ( ALPHA | DIGIT | HYPHEN )*
-    ;
+
<wrapperEntryPoint> ::= <SP*> '{' <SP*> <mainACIItemComponent> <SP*>
+<mainACIItemComponents> '}' <SP*> EOF
 
-FILTER : '(' ( ( '&' (SP)* (FILTER)+ ) | ( '|' (SP)* (FILTER)+ ) | ( '!'
-(SP)* FILTER ) | FILTER_VALUE ) ')' (SP)* ;
+<mainACIItemComponents> ::= ',' <SP*> <mainACIItemComponent> <SP*>
+<mainACIItemComponents> | e
 
-FILTER_VALUE : (options: ~( ')' | '(' | '&' | '|' | '!' ) ( ~(')') )* ) ;
+** Note : we have to allow only one of each option
+<mainACIItemComponent> ::= 
+    "identificationTag" <SP+> SAFEUTF8STRING
+    | "precedence" <SP+> INTEGER
+    | "authenticationLevel" <SP+> <authenticationLevel>
+    | "itemOrUserFirst" <SP+> <itemOrUserFirst>
+
+<authenticationLevel> ::= "none" | "simple" | "strong"
+
+<itemOrUserFirst> ::= 
+           "itemFirst" <SP*> ':' <SP*> '{' <SP*> <itemType> <SP*>
+'}' 
+           | 
+           "userFirst" <SP*> ':' <SP*> '{' <SP*> <userType> <SP*>
+'}'
+
+<itemType> ::= 
+        "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}' <SP*> 
+                 ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
+<anyItemPermission*> '}'
+        | 
+        "itemPermissions" <SP+> '{' <SP*> <itemPermissions?> '}' <SP*> 
+                 ',' <SP*> "protectedItems" <SP*> '{' <SP*>
+<protectedItem?> '}'
+
+<userType> ::= 
+         "userClasses" <SP+> '{' <SP*> <userClass?> '}' <SP*> ',' 
+                   <SP*> '{' <SP*> <anyUserPermission> <SP*>
+<anyUserPermission*> '}'
+          |
+          "userPermissions" <SP+> '{' <SP*> <userPermissions?> '}'
+<SP*> ',' 
+                   <SP*> "userClasses" <SP+> '{' <SP*>
+<userClass?> '}'
+
+<protectedItem?> ::= <protectedItem> <SP*> <protectedItem*> | e
+
+<protectedItem*> ::= ',' <SP*> <protectedItem> <SP*> <protectedItem*> | e
+
+<protectedItem> ::= 
+    "entry"
+    | "allUserAttributeTypes"
+    | "attributeType" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+    | "allAttributeValues" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+    | "allUserAttributeTypesAndValues"
+    | ATTRIBUTE_VALUE_CANDIDATE
+    | "selfValue" <SP+> '{' <SP*> <oid> <SP*> <oids> '}'
+    | RANGE_OF_VALUES_CANDIDATE
+    | "maxValueCount" <SP+> '{' <SP*> '{' <SP*> <valueCountType> <SP*> '}'
+<SP*> <maxValueCount*> '}'
+    | "maxImmSub" <SP+> INTEGER
+    | "restrictedBy" <SP+> '{' <SP*> '{' <SP*> <typeValueIn> <SP*> '}'
+<SP*> <restrictedValue*> '}'
+    | "classes" <SP+> <refinement>
+
+<maxValueCount*> ::= ',' <SP*> '{' <SP*> <valueCountType> <SP*> '}' <SP*>
+<maxValueCount*> | e
+
+<valueCountType> ::= 
+           "type" <SP+> <oid> <SP*> ',' <SP*> "maxCount" <SP+>
+INTEGER 
+            | 
+           "maxCount" <SP+> INTEGER <SP*> ',' <SP*> "type" <SP+>
+<oid>
+
+<restrictedValue*> ::= ',' <SP*> '{' <SP*> <typeValueIn> <SP*> '}' <SP*>
+<restrictedValue*> | e
+
+<typeValueIn> ::=
+        "type" <SP+> <oid> <SP*> ',' <SP*> "valuesIn" <SP+> <oid>
+        |
+        "valuesIn" <SP+> <oid> <SP*> ',' <SP*> "type" <SP+> <oid>
+
+<oids> ::= ',' <SP*> <oid> <SP*> <oids> | e
+
+<itemPermissions?> ::= '{' <SP*> <anyItemPermission> <SP*>
+<anyItemPermission*> '}' <SP*> <itemPermissions*> | e
+
+<itemPermissions*> ::= 
+             ',' <SP*> '{' <SP*> <anyItemPermission> <SP*>
+<anyItemPermission*> '}' <SP*> <itemPermissions*> | e
+
+<anyItemPermission*> ::= ',' <SP*> <anyItemPermission> <SP*>
+<anyItemPermission*> | e
+
+<anyItemPermission> :
+    "precedence" <SP+> <INTEGER>
+    | "userClasses" <SP+> '{' <SP*> <userClass?> '}'
+    | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
+
+<grantAndDenial?> ::= <grantAndDenial> <SP*> <grantAndDenial*> | e
+
+<grantAndDenial*> ::= ',' <SP*> <grantAndDenial> <SP*> <grantAndDenial*>
+
+<grantAndDenial> :
+    "grantAdd" 
+    | "denyAdd" 
+    | "grantDiscloseOnError"
+    | "denyDiscloseOnError" 
+    | "grantRead" 
+    | "denyRead" 
+    | "grantRemove" 
+    | "denyRemove" 
+    | "grantBrowse" 
+    | "denyBrowse" 
+    | "grantExport"
+    | "denyExport" 
+    | "grantImport" 
+    | "denyImport" 
+    | "grantModify" 
+    | "denyModify" 
+    | "grantRename" 
+    | "denyRename"
+    | "grantReturnDN"
+    | "denyReturnDN" 
+    | "grantCompare" 
+    | "denyCompare" 
+    | "grantFilterMatch"
+    | "denyFilterMatch" 
+    | "grantInvoke"
+    | "denyInvoke"
+
+<userClass?> ::= <userClass> <SP*> <userClass*> | e
+
+<userClass*> ::= ',' <SP*> <userClass> <SP*> <userClass*> | e
+
+<userClass> :
+    "allUsers"
+    | "thisEntry"
+    | "parentOfEntry"
+    | "name" <SP+> '{' <SP*> <distinguishedName> <SP*> <name*> '}'
+    | "userGroup" <SP+> '{' <SP*> <distinguishedName> <SP*> <userGroup*>
+'}'
+    | "subtree" <SP+> '{' <SP*> '{' <SP*> <subtreeSpecificationComponent?>
+'}' <SP*> <subTree*> '}'
+
+<name*> ::= ',' <SP*> <distinguishedName> <SP*> <name*> | e
+
+<userGroup*> ::= ',' <SP*> <distinguishedName> <SP*> <userGroup*> | e
+
+<subTree*> ::= ',' <SP*> '{' <SP*> <subtreeSpecificationComponent?> '}'
+<SP*> <subTree*> | e
+
+<userPermissions?> ::= '{' <SP*> <anyUserPermission> <SP*>
+<anyUserPermission*> '}' <SP*> <userPermissions*> | e
+
+<userPermissions*> ::= 
+             ',' <SP*> '{' <SP*> <anyUserPermission> <SP*>
+<anyUserPermission*> '}' <SP*> <userPermissions*> | e
+
+<anyUserPermission*> ::= ',' <SP*> <anyUserPermission> <SP*>
+<anyUserPermission*> | e
+
+<anyUserPermission> :
+    "precedence" <SP+> <INTEGER>
+    | "protectedItems" <SP*> '{' <SP*> <protectedItem?> '}'
+    | "grantsAndDenials" <SP+> '{' <SP*> <grantAndDenial?> '}'
+
+<subtreeSpecificationComponent?> ::= <subtreeSpecificationComponent> <SP*>
+<subtreeSpecificationComponent*> | e
+<subtreeSpecificationComponent*> ::= ',' <SP*>
+<subtreeSpecificationComponent> <SP*> <subtreeSpecificationComponent*> | e
+
+<subtreeSpecificationComponent> :
+    "base" <SP+> <distinguishedName>
+    | "specificExclusions" <SP+> '{' <SP*> <specificExclusion?> '}'
+    | "minimum" <SP+> INTEGER
+    | "maximum" <SP+> INTEGER
+
+<specificExclusion?> ::= <specificExclusion> <SP*> <specificExclusion*> | e
+
+<specificExclusion*> ::= ',' <SP*> <specificExclusion> <SP*>
+<specificExclusion*> | e
+
+<specificExclusion> ::=
+              "chopBefore" <SP*> ':' <SP*> <distinguishedName> 
+              | 
+              "chopAfter" <SP*> ':' <SP*> <distinguishedName>
+
+<refinement> ::= 
+           "item" <SP*> ':' <SP*> <oid> 
+           | 
+           "and" <SP*> ':' <SP*> '{' <refinements?> '}'
+           | 
+           "or" <SP*> ':' <SP*> '{' <refinements?> '}'
+           | 
+           "not" <SP*> ':' <SP*> '{' <refinements?> '}'
+
+<refinements?> ::= <SP*> <refinements?> <SP*> <refinement*> | e
+
+<refinement*> ::= ',' <SP*> <refinement> <SP*> <refinement*> | e
+
+<distinguishedName> ::= SAFEUTF8STRING
+
+<oid> ::= DESCR | NUMERICOID
+
+SAFEUTF8CHAR :
+    '\u0001'..'\u0021' |
+    '\u0023'..'\u007F' |
+    '\u00c0'..'\u00d6' |
+    '\u00d8'..'\u00f6' |
+    '\u00f8'..'\u00ff' |
+    '\u0100'..'\u1fff' |
+    '\u3040'..'\u318f' |
+    '\u3300'..'\u337f' |
+    '\u3400'..'\u3d2d' |
+    '\u4e00'..'\u9fff' |
+    '\uf900'..'\ufaff' ;
+
+<SP+> ::= <SP> <SP*>
+<SP*> ::= <SP> <SP*> | e
+<SP> ::= ' ' | '\t' | '\n' | '\r' ;
+
+ALPHA : 'A'..'Z' | 'a'..'z' ;
+
+<INTEGER> ::= <DIGIT> | <LDIGIT> <DIGIT> <DIGIT*>
+<DIGIT> ::= '0' | <LDIGIT> ;
+<LDIGIT> ::= '1'..'9' ;
+<DIGIT*> ::= <DIGIT> <DIGIT*> | e
+
+HYPHEN : '-' ;
+
+NUMERICOID : INTEGER ( DOT INTEGER )+ ;
+
+DOT : '.' ;
+
+INTEGER_OR_NUMERICOID
+    :
+    ( INTEGER DOT ) => NUMERICOID
+    |
+    INTEGER
+
+SAFEUTF8STRING : '"'! ( SAFEUTF8CHAR )* '"'! ;
+
+DESCR 
+    :
+    ( "attributeValue" ( SP! )+ '{' ) =>
+      "attributeValue"! ( SP! )+ '{'! ( options : . )* '}'!
+    | ( "rangeOfValues" ( SP! )+ '(' ) =>
+      "rangeOfValues"! ( SP! )+ FILTER
+    | ALPHA ( ALPHA | DIGIT | HYPHEN )*
+    ;
+
+FILTER : '(' ( ( '&' (SP)* (FILTER)+ ) | ( '|' (SP)* (FILTER)+ ) | ( '!'
+(SP)* FILTER ) | FILTER_VALUE ) ')' (SP)* ;
+
+FILTER_VALUE : (options: ~( ')' | '(' | '&' | '|' | '!' ) ( ~(')') )* ) ;