Index: shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/syntax/SchemaParserTestUtils.java
===================================================================
--- shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/syntax/SchemaParserTestUtils.java	(Revision 488426)
+++ shared/ldap/src/test/java/org/apache/directory/shared/ldap/schema/syntax/SchemaParserTestUtils.java	(Arbeitskopie)
@@ -322,7 +322,21 @@
         value = "( "+oid+" "+required+" DESC 'Descripton äöüß 部長' )";
         asd = parser.parse( value );
         assertEquals( "Descripton äöüß 部長", asd.getDescription() );
-
+        
+        // escaped characters
+        value = "( "+oid+" "+required+" DESC 'test\\5Ctest' )";
+        asd = parser.parse( value );
+        TestCase.assertEquals( "test\\test", asd.getDescription() );
+        value = "( "+oid+" "+required+" DESC 'test\\5ctest' )";
+        asd = parser.parse( value );
+        TestCase.assertEquals( "test\\test", asd.getDescription() );
+        value = "( "+oid+" "+required+" DESC 'test\\27test' )";
+        asd = parser.parse( value );
+        TestCase.assertEquals( "test'test", asd.getDescription() );
+        value = "( "+oid+" "+required+" DESC '\\5C\\27\\5c' )";
+        asd = parser.parse( value );
+        TestCase.assertEquals( "\\'\\", asd.getDescription() );
+        
         // lowercase
         value = "( "+oid+" "+required+" desc 'Descripton' )";
         try
@@ -384,6 +398,14 @@
         assertEquals( "test2-1", asd.getExtensions().get( "X-TEST-b" ).get( 0 ) );
         assertEquals( "test2-2", asd.getExtensions().get( "X-TEST-b" ).get( 1 ) );
 
+        // some more complicated
+        value = "("+oid+" "+required+" X-_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ('\\5C\\27\\5c'))";
+        asd = parser.parse( value );
+        assertEquals( 1, asd.getExtensions().size() );
+        assertNotNull( asd.getExtensions().get( "X-_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ) );
+        assertEquals( 1, asd.getExtensions().get( "X-_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ).size() );
+        assertEquals( "\\'\\", asd.getExtensions().get( "X-_-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ).get( 0 ) );
+        
         // invalid extension, no number allowed
         value = "( "+oid+" "+required+" X-TEST1 'test' )";
         try
Index: shared/ldap/src/main/antlr/schema-qdstring.g
===================================================================
--- shared/ldap/src/main/antlr/schema-qdstring.g	(Revision 488426)
+++ shared/ldap/src/main/antlr/schema-qdstring.g	(Arbeitskopie)
@@ -120,6 +120,9 @@
     		if(qdstring.endsWith("'")) {
     			qdstring = qdstring.substring(0, qdstring.length()-1);
     		}
+    		qdstring = qdstring.replaceAll("\\\\5C", "\\\\");
+    		qdstring = qdstring.replaceAll("\\\\5c", "\\\\");
+    		qdstring = qdstring.replaceAll("\\\\27", "'");
         } 
     )
     ; 
