// This is a TextMate grammar distributed by `starry-night`. // This grammar is developed at // // and licensed `mit`. // See for more info. /** * @import {Grammar} from '@wooorm/starry-night' */ /** @type {Grammar} */ const grammar = { extensions: ['.fbs'], names: ['flatbuffers'], patterns: [ {include: '#include'}, {include: '#namespace_decl'}, {include: '#type_decl'}, {include: '#enum_decl'}, {include: '#root_decl'}, {include: '#file_ext_ident_decl'}, {include: '#attribute_decl'}, {include: '#rpc_decl'}, {include: '#object'}, {include: '#comment'} ], repository: { attribute_decl: { begin: '\\b(attribute)\\b\\s+', beginCaptures: {1: {name: 'keyword.other.attribute.flatbuffers'}}, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.attribute-declaration.flatbuffers', patterns: [ {include: '#ident'}, { begin: '"', beginCaptures: {0: {name: 'support.other.flatbuffers'}}, end: '"', endCaptures: {0: {name: 'support.other.flatbuffers'}}, patterns: [{include: '#ident'}] } ] }, comment: { name: 'meta.comment.flatbuffers', patterns: [ { begin: '/\\*', beginCaptures: { 0: {name: 'punctuation.definition.comment.flatbuffers'} }, end: '\\*/', endCaptures: { 0: {name: 'punctuation.definition.comment.flatbuffers'} }, name: 'comment.block.flatbuffers' }, { begin: '///', beginCaptures: { 0: {name: 'punctuation.definition.comment.flatbuffers'} }, end: '$\\n', name: 'comment.line.triple-slash.documentation.flatbuffers' }, { begin: '//', beginCaptures: { 0: {name: 'punctuation.definition.comment.flatbuffers'} }, end: '$\\n', name: 'comment.line.double-slash.flatbuffers' } ] }, enum_decl: { begin: '\\b(enum)|(union)\\b\\s+', beginCaptures: { 1: {name: 'keyword.other.enum.flatbuffers'}, 2: {name: 'keyword.other.union.flatbuffers'} }, end: '(?<=})', name: 'meta.enum-declaration.flatbuffers', patterns: [ {include: '#comment'}, {include: '#metadata'}, {include: '#type'}, {include: '#ident'}, {match: ':', name: 'punctuation.separator.colon.flatbuffers'}, { begin: '{', beginCaptures: {0: {name: 'punctuation.curlybrace.open.flatbuffers'}}, end: '}', endCaptures: {0: {name: 'punctuation.curlybrace.close.flatbuffers'}}, name: 'meta.block.flatbuffers', patterns: [ {include: '#comment'}, {include: '#metadata'}, {include: '#integer_constant'}, {include: '#type'}, {include: '#ident'}, {match: '=', name: 'keyword.operator.assignment.flatbuffers'}, {match: ':', name: 'punctuation.separator.colon.flatbuffers'} ] } ] }, field_decl: { begin: '([a-zA-Z_][a-zA-Z0-9_]*)\\s*(:)', beginCaptures: { 1: {name: 'variable.other.member.flatbuffers'}, 2: {name: 'punctuation.separator.colon.flatbuffers'} }, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.field-declaration.flatbuffers', patterns: [ {include: '#single_value'}, {include: '#type'}, {match: '=', name: 'keyword.operator.assignment.flatbuffers'}, {include: '#metadata'} ] }, file_ext_ident_decl: { begin: '\\b(file_extension)|(file_identifier)\\b\\s+', beginCaptures: { 1: {name: 'keyword.control.file-extension.flatbuffers'}, 2: {name: 'keyword.control.file-identifier.flatbuffers'} }, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, patterns: [{include: '#string_constant'}] }, float_constant: { name: 'meta.float-constant.flatbuffers', patterns: [ { captures: {1: {name: 'keyword.operator.arithmetic.flatbuffers'}}, match: '([-+])?(([.][0-9]+)|([0-9]+[.][0-9]*))([eE][-+]?[0-9]+)?', name: 'constant.numeric.float.decimal.flatbuffers' }, { captures: { 1: {name: 'keyword.operator.arithmetic.flatbuffers'}, 2: {name: 'storage.type.number.flatbuffers'} }, match: '([-+])?(0[xX])(([.][0-9a-fA-F]+)|([0-9a-fA-F]+[.][0-9a-fA-F]*))([pP][-+]?[0-9]+)', name: 'constant.numeric.float.hexadecimal.flatbuffers' }, { captures: {1: {name: 'keyword.operator.arithmetic.flatbuffers'}}, match: '([-+])?(nan|inf|infinity)', name: 'constant.numeric.float.other.flatbuffers' } ] }, ident: { match: '[a-zA-Z_][a-zA-Z0-9_]*', name: 'entity.name.class.flatbuffers' }, include: { begin: '\\b(include)|(native_include)\\b\\s+', beginCaptures: { 1: {name: 'keyword.control.import.flatbuffers'}, 2: {name: 'keyword.control.native-import.flatbuffers'} }, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.import.flatbuffers', patterns: [{include: '#string_constant'}] }, integer_constant: { name: 'meta.integer-constant.flatbuffers', patterns: [ { captures: { 1: {name: 'keyword.operator.arithmetic.flatbuffers'}, 2: {name: 'storage.type.number.flatbuffers'} }, match: '([-+])?(0[xX])[0-9a-fA-F]+', name: 'constant.numeric.integer.hexadecimal.flatbuffers' }, { captures: {1: {name: 'keyword.operator.arithmetic.flatbuffers'}}, match: '([-+])?[0-9]+', name: 'constant.numeric.integer.decimal.flatbuffers' } ] }, metadata: { begin: '\\(', beginCaptures: {0: {name: 'punctuation.parenthesis.open.flatbuffers'}}, end: '\\)', endCaptures: {0: {name: 'punctuation.parenthesis.close.flatbuffers'}}, name: 'meta.metadata.flatbuffers', patterns: [ {include: '#comment'}, {include: '#single_value'}, { match: '[a-zA-Z_][a-zA-Z0-9_]*', name: 'keyword.control.attribute.flatbuffers' }, {match: ',', name: 'punctuation.separator.comma.flatbuffers'}, {match: ':', name: 'punctuation.separator.colon.flatbuffers'} ] }, namespace_decl: { begin: '\\b(namespace)\\b\\s+', beginCaptures: {1: {name: 'keyword.other.namespace.flatbuffers'}}, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.namespace-declaration.flatbuffers', patterns: [ {include: '#ident'}, {match: '\\.', name: 'punctuation.accessor.flatbuffers'} ] }, root_decl: { begin: '\\b(root_type)\\b\\s+', beginCaptures: {1: {name: 'keyword.control.root-type.flatbuffers'}}, end: ';', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.root-type-declaration.flatbuffers', patterns: [{include: '#metadata'}, {include: '#ident'}] }, rpc_decl: { begin: '\\b(rpc_service)\\b\\s+', beginCaptures: {1: {name: 'keyword.other.rpc-service.flatbuffers'}}, end: '(?<=})', endCaptures: {0: {name: 'punctuation.terminator.flatbuffers'}}, name: 'meta.rpc-service-declaration.flatbuffers', patterns: [ {include: '#comment'}, {include: '#ident'}, { begin: '{', beginCaptures: {0: {name: 'punctuation.curlybrace.open.flatbuffers'}}, end: '}', endCaptures: {0: {name: 'punctuation.curlybrace.close.flatbuffers'}}, name: 'meta.block.flatbuffers', patterns: [ {include: '#comment'}, {include: '#rpc_method_member'}, {include: '#ident'}, {include: '#metadata'} ] } ] }, rpc_method_member: { begin: '([a-zA-Z_][a-zA-Z0-9_]*)(\\()([a-zA-Z_][a-zA-Z0-9_]*)(\\))(:)', beginCaptures: { 1: {name: 'variable.other.member.flatbuffers'}, 2: {name: 'punctuation.parenthesis.open.flatbuffers'}, 3: {name: 'entity.name.class.flatbuffers'}, 4: {name: 'punctuation.parenthesis.close.flatbuffers'}, 5: {name: 'punctuation.separator.colon.flatbuffers'} }, end: '(?<=:)', endCaptures: {0: {name: 'punctuation.separator.colon.flatbuffers'}} }, scalar: { name: 'meta.scalar.flatbuffers', patterns: [ {match: '\\b(true|false)\\b', name: 'constant.language.flatbuffers'}, {include: '#float_constant'}, {include: '#integer_constant'} ] }, single_value: { name: 'meta.single-value.flatbuffers', patterns: [{include: '#scalar'}, {include: '#string_constant'}] }, string_constant: { captures: { 1: {name: 'punctuation.definition.string.begin.flatbuffers'}, 2: {name: 'string.quoted.double.flatbuffers'}, 3: {name: 'punctuation.definition.string.end.flatbuffers'} }, match: '(")((?:[^"]|\\")*)(")', name: 'string.quoted.double.flatbuffers' }, type: { name: 'meta.type.flatbuffers', patterns: [ { match: '\\b(bool|byte|ubyte|short|ushort|int|uint|float|long|ulong|double|int8|uint8|int16|uint16|int32|uint32|int64|uint64|float32|float64|string)\\b', name: 'storage.type.flatbuffers' }, {include: '#ident'}, { begin: '\\[', beginCaptures: { 0: {name: 'punctuation.squarebracket.open.flatbuffers'} }, end: '\\]', endCaptures: { 0: {name: 'punctuation.squarebracket.close.flatbuffers'} }, name: 'meta.array.flatbuffers', patterns: [ {include: '#type'}, {include: '#scalar'}, {match: ':', name: 'punctuation.separator.array-length.flatbuffers'} ] } ] }, type_decl: { begin: '\\b(table)|(struct)\\b\\s+', beginCaptures: { 1: {name: 'keyword.other.table.flatbuffers'}, 2: {name: 'keyword.other.struct.flatbuffers'} }, end: '(?<=})', name: 'meta.type-declaration.flatbuffers', patterns: [ {include: '#comment'}, {include: '#metadata'}, {include: '#ident'}, { begin: '{', beginCaptures: {0: {name: 'punctuation.curlybrace.open.flatbuffers'}}, end: '}', endCaptures: {0: {name: 'punctuation.curlybrace.close.flatbuffers'}}, name: 'meta.block.flatbuffers', patterns: [ {include: '#comment'}, {include: '#field_decl'}, {include: '#metadata'} ] } ] } }, scopeName: 'source.flatbuffers' } export default grammar