Fixed: [ Issue 84 ] Custom options are being considered syntax errors.
https://code.google.com/p/protobuf-dt/issues/detail?id=84

diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
index 1f4073b..62b0d98 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
@@ -34,8 +34,14 @@
   '.'? Name ('.' Name)*;
 
 Option:
+  BuiltInOption | CustomOption;
+  
+BuiltInOption:  
   'option' name=Name '=' value=ValueRef ';';
 
+CustomOption:  
+  'option' '(' name=QualifiedName ')' '=' value=ValueRef ';';
+
 Type:
   Message | Enum;
 
@@ -74,8 +80,14 @@
   ('[' fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)* ']')? ';';
 
 FieldOption:
+  BuiltInFieldOption | CustomFieldOption;
+    
+BuiltInFieldOption:  
   name=Name '=' value=ValueRef;
 
+CustomFieldOption:  
+  '(' name=QualifiedName ')' '=' value=ValueRef;
+
 enum Modifier:
   required
   | optional
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
index d1b15ef..a4eb463 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtoDescriptor.java
@@ -206,7 +206,7 @@
    * @param option the given option.
    * @return the enum type of the given option or {@code null} if the type of the given option is not enum.
    */
-  public Enum enumTypeOf(Option option) {
+  public Enum enumTypeOf(BuiltInOption option) {
     String name = option.getName();
     return enumTypeOf(lookupOption(name));
   }
@@ -218,7 +218,7 @@
    * @param option the given option.
    * @return the enum type of the given option or {@code null} if the type of the given option is not enum.
    */
-  public Enum enumTypeOf(FieldOption option) {
+  public Enum enumTypeOf(BuiltInFieldOption option) {
     String name = option.getName();
     return enumTypeOf(lookupFieldOption(name));
   }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
index a3ebdab..4ca87be 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
@@ -182,9 +182,11 @@
 
   private Enum enumTypeOfOption(EObject mayBeOption) {
     ProtoDescriptor descriptor = descriptorProvider.get();
-    if (mayBeOption instanceof Option) return descriptor.enumTypeOf((Option) mayBeOption);
-    if (mayBeOption instanceof FieldOption) {
-      FieldOption option = (FieldOption) mayBeOption;
+    if (mayBeOption instanceof BuiltInOption) {
+      return descriptor.enumTypeOf((BuiltInOption) mayBeOption);
+    }
+    if (mayBeOption instanceof BuiltInFieldOption) {
+      BuiltInFieldOption option = (BuiltInFieldOption) mayBeOption;
       if (fieldOptions.isDefaultValueOption(option)) {
         Property property = (Property) option.eContainer();
         return finder.enumTypeOf(property);