• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Grammar of the schema language    {#flatbuffers_grammar}
2==============================
3
4schema = include*
5         ( namespace\_decl | type\_decl | enum\_decl | root\_decl |
6           file_extension_decl | file_identifier_decl |
7           attribute\_decl | object )*
8
9include = `include` string\_constant `;`
10
11namespace\_decl = `namespace` ident ( `.` ident )* `;`
12
13attribute\_decl = `attribute` string\_constant `;`
14
15type\_decl = ( `table` | `struct` ) ident metadata `{` field\_decl+ `}`
16
17enum\_decl = ( `enum` | `union` ) ident [ `:` type ] metadata `{` commasep(
18enumval\_decl ) `}`
19
20root\_decl = `root_type` ident `;`
21
22field\_decl = ident `:` type [ `=` scalar ] metadata `;`
23
24type = `bool` | `byte` | `ubyte` | `short` | `ushort` | `int` | `uint` |
25`float` | `long` | `ulong` | `double`
26 | `string` | `[` type `]` | ident
27
28enumval\_decl = ident [ `=` integer\_constant ]
29
30metadata = [ `(` commasep( ident [ `:` single\_value ] ) `)` ]
31
32scalar = integer\_constant | float\_constant
33
34object = { commasep( ident `:` value ) }
35
36single\_value = scalar | string\_constant
37
38value = single\_value | object | `[` commasep( value ) `]`
39
40commasep(x) = [ x ( `,` x )\* ]
41
42file_extension_decl = `file_extension` string\_constant `;`
43
44file_identifier_decl = `file_identifier` string\_constant `;`
45
46integer\_constant = -?[0-9]+ | `true` | `false`
47
48float\_constant = -?[0-9]+.[0-9]+((e|E)(+|-)?[0-9]+)?
49