Add support for bytes keyword.

FIDL-504 #comment Add support for bytes keyword

Change-Id: I510ccfd111a875b502162cea862bba270e6d085a
diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml
index 65e6f11..0e20c1e 100644
--- a/resources/META-INF/plugin.xml
+++ b/resources/META-INF/plugin.xml
@@ -1,7 +1,7 @@
 <idea-plugin>
   <id>fuchsia.developer.plugin.fidl</id>
   <name>FIDL</name>
-  <version>0.8</version>
+  <version>0.9</version>
   <vendor
       url="https://fuchsia.googlesource.com/intellij-language-fidl/">The Fuchsia Authors
   </vendor>
@@ -18,6 +18,10 @@
 
   <change-notes><![CDATA[
       <ul>
+        <li><b>0.9</b>
+          <ul>
+            <li>Add support for bytes keyword.</li>
+          </ul>
         <li><b>0.8</b>
           <ul>
             <li>Add support for bits syntax and binary numeric literals.</li>
diff --git a/src/fuchsia/developer/plugin/fidl/BUILD b/src/fuchsia/developer/plugin/fidl/BUILD
index b83bc8c..03a8600 100644
--- a/src/fuchsia/developer/plugin/fidl/BUILD
+++ b/src/fuchsia/developer/plugin/fidl/BUILD
@@ -75,6 +75,7 @@
     "fuchsia/developer/plugin/fidl/psi/FidlUsingDeclaration.java",
     "fuchsia/developer/plugin/fidl/psi/FidlUsing.java",
     "fuchsia/developer/plugin/fidl/psi/FidlUsingList.java",
+    "fuchsia/developer/plugin/fidl/psi/FidlVectorAlias.java",
     "fuchsia/developer/plugin/fidl/psi/FidlVectorType.java",
     "fuchsia/developer/plugin/fidl/psi/FidlVisitor.java",
     "fuchsia/developer/plugin/fidl/psi/FidlXunionDeclaration.java",
@@ -129,6 +130,7 @@
     "fuchsia/developer/plugin/fidl/psi/impl/FidlUsingDeclarationImpl.java",
     "fuchsia/developer/plugin/fidl/psi/impl/FidlUsingImpl.java",
     "fuchsia/developer/plugin/fidl/psi/impl/FidlUsingListImpl.java",
+    "fuchsia/developer/plugin/fidl/psi/impl/FidlVectorAliasImpl.java",
     "fuchsia/developer/plugin/fidl/psi/impl/FidlVectorTypeImpl.java",
     "fuchsia/developer/plugin/fidl/psi/impl/FidlXunionDeclarationImpl.java",
     "fuchsia/developer/plugin/fidl/psi/impl/FidlXunionFieldImpl.java",
diff --git a/src/fuchsia/developer/plugin/fidl/Fidl.bnf b/src/fuchsia/developer/plugin/fidl/Fidl.bnf
index 13e9854..eccc3f9 100644
--- a/src/fuchsia/developer/plugin/fidl/Fidl.bnf
+++ b/src/fuchsia/developer/plugin/fidl/Fidl.bnf
@@ -110,7 +110,9 @@
 
 array-type ::= ARRAY LANGLE type RANGLE COLON boundary-constant
 
-vector-type ::= VECTOR LANGLE type RANGLE ( COLON boundary-constant )? ( QUESTION )?
+vector-type ::= vector-alias ( COLON boundary-constant )? ( QUESTION )?
+
+vector-alias ::= VECTOR LANGLE type RANGLE | BYTES
 
 string-type ::= STRING ( COLON boundary-constant )? ( QUESTION )?
 
@@ -145,4 +147,4 @@
                      REQUEST | RESERVED | RESOURCE | SOCKET | STRING | STRUCT | TABLE | THREAD |
                      TIMER | UNION | USING_T | VECTOR | VMAR | VMO | XUNION | BOOL | FLOAT32 |
                      FLOAT64 | INT8 | INT16 | INT32 | INT64 | UINT8 | UINT16 | UINT32 | UINT64 |
-                     TRUE | FALSE | PROTOCOL | COMPOSE | BITS
+                     TRUE | FALSE | PROTOCOL | COMPOSE | BITS | BYTES
diff --git a/src/fuchsia/developer/plugin/fidl/FidlLexer.flex b/src/fuchsia/developer/plugin/fidl/FidlLexer.flex
index bb30899..9519e86 100644
--- a/src/fuchsia/developer/plugin/fidl/FidlLexer.flex
+++ b/src/fuchsia/developer/plugin/fidl/FidlLexer.flex
@@ -34,6 +34,7 @@
 ARRAY=array
 AS=as
 BITS=bits
+BYTES=bytes
 CHANNEL=channel
 COMPOSE=compose
 CONST=const
@@ -121,6 +122,7 @@
   {USING_T} { return USING_T; }
   {AS} { return AS; }
   {BITS} { return BITS; }
+  {BYTES} { return BYTES; }
   {CONST} { return CONST; }
   {ENUM} { return ENUM; }
   {INTERFACE} { return INTERFACE; }
diff --git a/src/fuchsia/developer/plugin/fidl/SyntaxHighlighter.java b/src/fuchsia/developer/plugin/fidl/SyntaxHighlighter.java
index 4f9569a..f324e57 100644
--- a/src/fuchsia/developer/plugin/fidl/SyntaxHighlighter.java
+++ b/src/fuchsia/developer/plugin/fidl/SyntaxHighlighter.java
@@ -79,6 +79,7 @@
             Types.USING_T,
             Types.AS,
             Types.BITS,
+            Types.BYTES,
             Types.CONST,
             Types.ENUM,
             Types.INTERFACE,