<Normal Text>syntax </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"proto2"</String><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>package</Keyword><Normal Text> example</Normal Text><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>message</Keyword><Normal Text> Object </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>required</Keyword><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text> name </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Keyword>required</Keyword><Normal Text> </Normal Text><Data Type>int32</Data Type><Normal Text> identifier </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Keyword>optional</Keyword><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text> address </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>3</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Keyword>enum</Keyword><Normal Text> ObjectType </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>    LOCAL </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>0</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    REMOTE </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    NEITHER </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    </Normal Text><Keyword>default</Keyword><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>3</Decimal><Separator Symbol>;</Separator Symbol><Normal Text> </Normal Text><Comment>// no keyword</Comment><br/>
<Normal Text>  </Normal Text><Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Keyword>message</Keyword><Normal Text> ObjectData </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>    </Normal Text><Keyword>required</Keyword><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text> number </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    </Normal Text><Keyword>optional</Keyword><Normal Text> ObjectType type </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><Keyword>default</Keyword><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> NEITHER</Normal Text><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    </Normal Text><Keyword>optional</Keyword><Normal Text> ObjectType other </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>3</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><Keyword>default</Keyword><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Keyword>default</Keyword><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    </Normal Text><Comment>//                                       ^ no keyword</Comment><br/>
<Normal Text>  </Normal Text><Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Keyword>repeated</Keyword><Normal Text> ObjectData dataList </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>4</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Data Type>string</Data Type><Normal Text> </Normal Text><Data Type>string</Data Type><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>5</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Comment>//     ^ no data type</Comment><br/>
<Normal Text>  </Normal Text><Data Type>string</Data Type><Normal Text> </Normal Text><Keyword>default</Keyword><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>5</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Comment>//     ^ no keyword</Comment><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>message</Keyword><Normal Text> ObjectList </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>repeated</Keyword><Normal Text> Object object </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>enum</Keyword><Normal Text> EnumAllowingAlias </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>option</Keyword><Normal Text> allow_alias </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Keyword>true</Keyword><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  EAA_UNSPECIFIED </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>0</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  EAA_STARTED </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  EAA_RUNNING </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  EAA_FINISHED </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>message</Keyword><Normal Text> SomeOtherMessage </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  SearchResponse</Normal Text><Symbol>.</Symbol><Normal Text>Result result </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>package</Keyword><Normal Text> media</Normal Text><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// A container message to hold stuff that a user has created.</Comment><br/>
<Keyword>message</Keyword><Normal Text> UserContent </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Comment>// Set verification to `DECLARATION` to enforce extension declarations for all</Comment><br/>
<Normal Text>  </Normal Text><Comment>// extensions in this range.</Comment><br/>
<Normal Text>  </Normal Text><Keyword>extensions</Keyword><Normal Text> </Normal Text><Decimal>100</Decimal><Normal Text> to </Normal Text><Decimal>199</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><Normal Text>verification </Normal Text><Operator>=</Operator><Normal Text> DECLARATION</Normal Text><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Comment>// A container message to hold stuff that a user has created.</Comment><br/>
<Keyword>message</Keyword><Normal Text> UserContent </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>extensions</Keyword><Normal Text> </Normal Text><Decimal>100</Decimal><Normal Text> to </Normal Text><Decimal>199</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><br/>
<Normal Text>    declaration </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>      number</Normal Text><Operator>:</Operator><Normal Text> </Normal Text><Decimal>126</Decimal><Separator Symbol>,</Separator Symbol><br/>
<Normal Text>      full_name</Normal Text><Operator>:</Operator><Normal Text> </Normal Text><String>".kittens.kitten_videos"</String><Separator Symbol>,</Separator Symbol><br/>
<Normal Text>      type</Normal Text><Operator>:</Operator><Normal Text> </Normal Text><String>".kittens.Video"</String><Separator Symbol>,</Separator Symbol><br/>
<Normal Text>      </Normal Text><Keyword>repeated</Keyword><Operator>:</Operator><Normal Text> </Normal Text><Keyword>true</Keyword><br/>
<Normal Text>    </Normal Text><Block Symbol>}</Block Symbol><Separator Symbol>,</Separator Symbol><br/>
<Normal Text>    </Normal Text><Comment>// Ensures all field numbers in this extension range are declarations.</Comment><br/>
<Normal Text>    verification </Normal Text><Operator>=</Operator><Normal Text> DECLARATION</Normal Text><br/>
<Normal Text>  </Normal Text><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>service</Keyword><Normal Text> SearchService </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>rpc</Keyword><Normal Text> Search</Normal Text><Symbol>(</Symbol><Normal Text>SearchRequest</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>returns</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>SearchResponse</Normal Text><Symbol>)</Symbol><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>message</Keyword><Normal Text> RequestType </Normal Text><Block Symbol>{}</Block Symbol><br/>
<Keyword>message</Keyword><Normal Text> ResponseType </Normal Text><Block Symbol>{}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>service</Keyword><Normal Text> MyService </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>option</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>my_service_option</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> FOO</Normal Text><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Normal Text>  </Normal Text><Keyword>rpc</Keyword><Normal Text> MyMethod</Normal Text><Symbol>(</Symbol><Normal Text>RequestType</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Keyword>returns</Keyword><Symbol>(</Symbol><Normal Text>ResponseType</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>    </Normal Text><Comment>// Note:  my_method_option has type MyMessage.  We can set each field</Comment><br/>
<Normal Text>    </Normal Text><Comment>//   within it using a separate "option" line.</Comment><br/>
<Normal Text>    </Normal Text><Keyword>option</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>my_method_option</Normal Text><Symbol>).</Symbol><Normal Text>foo </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>567</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>    </Normal Text><Keyword>option</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>my_method_option</Normal Text><Symbol>).</Symbol><Normal Text>bar </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"Some string"</String><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Block Symbol>}</Block Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>import</Keyword><Normal Text> </Normal Text><String>"google/protobuf/descriptor.proto"</String><Separator Symbol>;</Separator Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>extend</Keyword><Normal Text> google</Normal Text><Symbol>.</Symbol><Normal Text>protobuf</Normal Text><Symbol>.</Symbol><Normal Text>EnumValueOptions </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Data Type>string</Data Type><Normal Text> string_name </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>123456789</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>enum</Keyword><Normal Text> Data </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  DATA_UNSPECIFIED </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>0</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  DATA_SEARCH </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><Normal Text>deprecated </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Keyword>true</Keyword><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  DATA_DISPLAY </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Normal Text> </Normal Text><Block Symbol>[</Block Symbol><br/>
<Normal Text>    </Normal Text><Symbol>(</Symbol><Normal Text>string_name</Normal Text><Symbol>)</Symbol><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>"x</String><String Char>\uafe2</String Char><String>3</String><String Char>\U00012345</String Char><String>6</String><String Char>\n</String Char><String>x</String><String Char>\x43</String Char><String>3</String><String Char>\xa</String Char><String>g</String><String Char>\012</String Char><String>3</String><Error>\u1</Error><String>xx</String><Error>\</Error><String>p</String><Error>\U0010a</Error><String>i"</String><br/>
<Normal Text>  </Normal Text><Block Symbol>]</Block Symbol><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
<Normal Text></Normal Text><br/>
<Keyword>message</Keyword><Normal Text> Outer </Normal Text><Block Symbol>{</Block Symbol><br/>
<Normal Text>  </Normal Text><Keyword>option</Keyword><Normal Text> </Normal Text><Symbol>(</Symbol><Normal Text>my_option</Normal Text><Symbol>).</Symbol><Normal Text>a </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Keyword>true</Keyword><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Keyword>message</Keyword><Normal Text> Inner </Normal Text><Block Symbol>{</Block Symbol><Normal Text>   </Normal Text><Comment>// Level 2</Comment><br/>
<Normal Text>    </Normal Text><Keyword>required</Keyword><Normal Text> </Normal Text><Data Type>int64</Data Type><Normal Text> ival </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>1</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Block Symbol>}</Block Symbol><br/>
<Normal Text>  map</Normal Text><Block Symbol><</Block Symbol><Data Type>int32</Data Type><Separator Symbol>,</Separator Symbol><Normal Text> </Normal Text><Data Type>string</Data Type><Block Symbol>></Block Symbol><Normal Text> my_map </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Decimal>2</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Keyword>extensions</Keyword><Normal Text> </Normal Text><Decimal>20</Decimal><Normal Text> to </Normal Text><Decimal>30</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Data Type>float</Data Type><Normal Text> n </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Symbol>.</Symbol><Decimal>2</Decimal><Separator Symbol>;</Separator Symbol><br/>
<Normal Text>  </Normal Text><Data Type>float</Data Type><Normal Text> n </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Float>inf</Float><Separator Symbol>;</Separator Symbol><br/>
<Block Symbol>}</Block Symbol><br/>
