964 B
Executable File
Formal Grammar of the schema language
schema = include* ( namespace_decl | type_decl | enum_decl | root_decl | object )*
include = include
string_constant ;
namespace_decl = namespace
ident ( .
ident )* ;
type_decl = ( table
| struct
) ident metadata {
field_decl+ }
enum_decl = ( enum
| union
) ident [ :
type ] metadata {
commasep(
enumval_decl ) }
root_decl = root_type
ident ;
field_decl = type :
ident [ =
scalar ] metadata ;
type = bool
| byte
| ubyte
| short
| ushort
| int
| uint
|
float
| long
| ulong
| double
| string
| [
type ]
| ident
enumval_decl = ident [ =
integer_constant ]
metadata = [ (
commasep( ident [ :
scalar ] ) )
]
scalar = integer_constant | float_constant | true
| false
object = { commasep( ident :
value ) }
value = scalar | object | string_constant | [
commasep( value ) ]
commasep(x) = [ x ( ,
x )* ]