Added support for deprecated and packed field options
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 a2e91e7..90e1061 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
@@ -60,7 +60,7 @@
Group:
modifier=Modifier 'group' name=Name '=' index=(LONG | HEX)
- ('[' (fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)*) ']')? '{'
+ ('[' (fieldOptions+=BoolOrValueFieldOption (',' fieldOptions+=BoolOrValueFieldOption)*) ']')? '{'
elements+=GroupElement*
'}' (';')?;
@@ -72,7 +72,7 @@
MessageField:
=>modifier=Modifier type=TypeLink name=Name '=' index=(LONG | HEX)
- ('[' (fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)*)? ']')? (';')+;
+ ('[' (fieldOptions+=BoolOrValueFieldOption (',' fieldOptions+=BoolOrValueFieldOption)*)? ']')? (';')+;
enum Modifier:
required | optional | repeated;
@@ -100,7 +100,7 @@
Literal:
name=Name '=' index=(LONG | HEX)
- ('[' fieldOptions+=FieldOption (',' fieldOptions+=FieldOption)* ']')? (';')+;
+ ('[' fieldOptions+=BoolOrValueFieldOption (',' fieldOptions+=BoolOrValueFieldOption)* ']')? (';')+;
terminal HEX returns ecore::ELong:
('-')? '0x' (NUMBER | 'a'..'f' | 'A'..'F')+;
@@ -156,7 +156,10 @@
CustomOption:
'option' '(' source=OptionSource ')'
('.' fields+=OptionField ('.' fields+=OptionField)*)? '=' value=Value (';')+;
-
+
+BoolOrValueFieldOption:
+ FieldOption | DeprecatedFieldOption | PackedFieldOption;
+
FieldOption:
DefaultValueFieldOption | NativeFieldOption | CustomFieldOption;
@@ -170,6 +173,12 @@
'(' source=OptionSource ')'
('.' fields+=OptionField ('.' fields+=OptionField)*)? '=' value=Value;
+DeprecatedFieldOption:
+ 'deprecated' '=' value=BOOL;
+
+PackedFieldOption:
+ 'packed' '=' value=BOOL;
+
OptionSource:
target=[IndexedElement|QualifiedName];