declarations ::= declaration ::= | | | ::= "type" ";" enum_decl ::= "enum" "{" "}" | "enum" "{" "}" enum_members ::= ["," ]+ [","] enum_member ::= "=" struct_decl ::= "struct" "{" "}" | "struct" "{" "}" struct_members ::= | "," | "," | "," // TODO protocol_decl