'comment': 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp' 'fileTypes': [ 'erl' 'hrl' ] 'name': 'Erlang' 'patterns': [ { 'include': '#module-directive' } { 'include': '#import-export-directive' } { 'include': '#behaviour-directive' } { 'include': '#record-directive' } { 'include': '#define-directive' } { 'include': '#macro-directive' } { 'include': '#directive' } { 'include': '#function' } { 'include': '#everything-else' } ] 'repository': 'atom': 'patterns': [ { 'begin': '(\')' 'beginCaptures': '1': 'name': 'punctuation.definition.symbol.begin.erlang' 'end': '(\')' 'endCaptures': '1': 'name': 'punctuation.definition.symbol.end.erlang' 'name': 'constant.other.symbol.quoted.single.erlang' 'patterns': [ { 'captures': '1': 'name': 'punctuation.definition.escape.erlang' '3': 'name': 'punctuation.definition.escape.erlang' 'match': '(\\\\)([bdefnrstv\\\\\'"]|(\\^)[@-_]|[0-7]{1,3})' 'name': 'constant.other.symbol.escape.erlang' } { 'match': '\\\\\\^?.?' 'name': 'invalid.illegal.atom.erlang' } ] } { 'match': '[a-z][a-zA-Z\\d@_]*+' 'name': 'constant.other.symbol.unquoted.erlang' } ] 'behaviour-directive': 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.behaviour.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.type.class.behaviour.definition.erlang' '5': 'name': 'punctuation.definition.parameters.end.erlang' '6': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+(behaviour)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)' 'name': 'meta.directive.behaviour.erlang' 'binary': 'begin': '(<<)' 'beginCaptures': '1': 'name': 'punctuation.definition.binary.begin.erlang' 'end': '(>>)' 'endCaptures': '1': 'name': 'punctuation.definition.binary.end.erlang' 'name': 'meta.structure.binary.erlang' 'patterns': [ { 'captures': '1': 'name': 'punctuation.separator.binary.erlang' '2': 'name': 'punctuation.separator.value-size.erlang' 'match': '(,)|(:)' } { 'include': '#internal-type-specifiers' } { 'include': '#everything-else' } ] 'character': 'patterns': [ { 'captures': '1': 'name': 'punctuation.definition.character.erlang' '2': 'name': 'constant.character.escape.erlang' '3': 'name': 'punctuation.definition.escape.erlang' '5': 'name': 'punctuation.definition.escape.erlang' 'match': '(\\$)((\\\\)([bdefnrstv\\\\\'"]|(\\^)[@-_]|[0-7]{1,3}))' 'name': 'constant.character.erlang' } { 'match': '\\$\\\\\\^?.?' 'name': 'invalid.illegal.character.erlang' } { 'captures': '1': 'name': 'punctuation.definition.character.erlang' 'match': '(\\$)\\S' 'name': 'constant.character.erlang' } { 'match': '\\$.?' 'name': 'invalid.illegal.character.erlang' } ] 'comment': 'begin': '(^[ \\t]+)?(?=%)' 'beginCaptures': '1': 'name': 'punctuation.whitespace.comment.leading.erlang' 'end': '(?!\\G)' 'patterns': [ { 'begin': '%' 'beginCaptures': '0': 'name': 'punctuation.definition.comment.erlang' 'end': '\\n' 'name': 'comment.line.percentage.erlang' } ] 'define-directive': 'patterns': [ { 'begin': '^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(,)' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.define.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.function.macro.definition.erlang' '5': 'name': 'punctuation.separator.parameters.erlang' 'end': '(\\))\\s*+(\\.)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.define.erlang' 'patterns': [ { 'include': '#everything-else' } ] } { 'begin': '(?=^\\s*+-\\s*+define\\s*+\\(\\s*+[a-zA-Z\\d@_]++\\s*+\\()' 'end': '(\\))\\s*+(\\.)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.define.erlang' 'patterns': [ { 'begin': '^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(\\()' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.define.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.function.macro.definition.erlang' '5': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(\\))\\s*(,)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.separator.parameters.erlang' 'patterns': [ { 'match': ',' 'name': 'punctuation.separator.parameters.erlang' } { 'include': '#everything-else' } ] } { 'match': '\\|\\||\\||:|;|,|\\.|->' 'name': 'punctuation.separator.define.erlang' } { 'include': '#everything-else' } ] } ] 'directive': 'patterns': [ { 'begin': '^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\(?)' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(\\)?)\\s*+(\\.)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.erlang' 'patterns': [ { 'include': '#everything-else' } ] } { 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.erlang' '3': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\.)' 'name': 'meta.directive.erlang' } ] 'everything-else': 'patterns': [ { 'include': '#comment' } { 'include': '#record-usage' } { 'include': '#macro-usage' } { 'include': '#expression' } { 'include': '#keyword' } { 'include': '#textual-operator' } { 'include': '#function-call' } { 'include': '#tuple' } { 'include': '#list' } { 'include': '#binary' } { 'include': '#parenthesized-expression' } { 'include': '#character' } { 'include': '#number' } { 'include': '#atom' } { 'include': '#string' } { 'include': '#symbolic-operator' } { 'include': '#variable' } ] 'expression': 'patterns': [ { 'begin': '\\b(if)\\b' 'beginCaptures': '1': 'name': 'keyword.control.if.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.if.erlang' 'patterns': [ { 'include': '#internal-expression-punctuation' } { 'include': '#everything-else' } ] } { 'begin': '\\b(case)\\b' 'beginCaptures': '1': 'name': 'keyword.control.case.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.case.erlang' 'patterns': [ { 'include': '#internal-expression-punctuation' } { 'include': '#everything-else' } ] } { 'begin': '\\b(receive)\\b' 'beginCaptures': '1': 'name': 'keyword.control.receive.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.receive.erlang' 'patterns': [ { 'include': '#internal-expression-punctuation' } { 'include': '#everything-else' } ] } { 'captures': '1': 'name': 'keyword.control.fun.erlang' '3': 'name': 'entity.name.type.class.module.erlang' '4': 'name': 'punctuation.separator.module-function.erlang' '5': 'name': 'entity.name.function.erlang' '6': 'name': 'punctuation.separator.function-arity.erlang' 'match': '\\b(fun)\\s*+(([a-z][a-zA-Z\\d@_]*+)\\s*+(:)\\s*+)?([a-z][a-zA-Z\\d@_]*+)\\s*(/)' } { 'begin': '\\b(fun)\\b' 'beginCaptures': '1': 'name': 'keyword.control.fun.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.fun.erlang' 'patterns': [ { 'begin': '(?=\\()' 'end': '(;)|(?=\\bend\\b)' 'endCaptures': '1': 'name': 'punctuation.separator.clauses.erlang' 'patterns': [ { 'include': '#internal-function-parts' } ] } { 'include': '#everything-else' } ] } { 'begin': '\\b(try)\\b' 'beginCaptures': '1': 'name': 'keyword.control.try.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.try.erlang' 'patterns': [ { 'include': '#internal-expression-punctuation' } { 'include': '#everything-else' } ] } { 'begin': '\\b(begin)\\b' 'beginCaptures': '1': 'name': 'keyword.control.begin.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.begin.erlang' 'patterns': [ { 'include': '#internal-expression-punctuation' } { 'include': '#everything-else' } ] } { 'begin': '\\b(query)\\b' 'beginCaptures': '1': 'name': 'keyword.control.query.erlang' 'end': '\\b(end)\\b' 'endCaptures': '1': 'name': 'keyword.control.end.erlang' 'name': 'meta.expression.query.erlang' 'patterns': [ { 'include': '#everything-else' } ] } ] 'function': 'begin': '^\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(?=\\()' 'beginCaptures': '1': 'name': 'entity.name.function.definition.erlang' 'end': '(\\.)' 'endCaptures': '1': 'name': 'punctuation.terminator.function.erlang' 'name': 'meta.function.erlang' 'patterns': [ { 'captures': '1': 'name': 'entity.name.function.erlang' 'match': '^\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(?=\\()' } { 'begin': '(?=\\()' 'end': '(;)|(?=\\.)' 'endCaptures': '1': 'name': 'punctuation.separator.clauses.erlang' 'patterns': [ { 'include': '#parenthesized-expression' } { 'include': '#internal-function-parts' } ] } { 'include': '#everything-else' } ] 'function-call': 'begin': '(?=([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(\\(|:\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+\\())' 'end': '(\\))' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' 'name': 'meta.function-call.erlang' 'patterns': [ { 'begin': '((erlang)\\s*+(:)\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\s*+(\\()' 'beginCaptures': '2': 'name': 'entity.name.type.class.module.erlang' '3': 'name': 'punctuation.separator.module-function.erlang' '4': 'name': 'entity.name.function.guard.erlang' '5': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(?=\\))' 'patterns': [ { 'match': ',' 'name': 'punctuation.separator.parameters.erlang' } { 'include': '#everything-else' } ] } { 'begin': '(([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(:)\\s*+)?([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(\\()' 'beginCaptures': '2': 'name': 'entity.name.type.class.module.erlang' '3': 'name': 'punctuation.separator.module-function.erlang' '4': 'name': 'entity.name.function.erlang' '5': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(?=\\))' 'patterns': [ { 'match': ',' 'name': 'punctuation.separator.parameters.erlang' } { 'include': '#everything-else' } ] } ] 'import-export-directive': 'patterns': [ { 'begin': '^\\s*+(-)\\s*+(import)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(,)' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.import.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.type.class.module.erlang' '5': 'name': 'punctuation.separator.parameters.erlang' 'end': '(\\))\\s*+(\\.)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.import.erlang' 'patterns': [ { 'include': '#internal-function-list' } ] } { 'begin': '^\\s*+(-)\\s*+(export)\\s*+(\\()' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.export.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(\\))\\s*+(\\.)' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' '2': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.export.erlang' 'patterns': [ { 'include': '#internal-function-list' } ] } ] 'internal-expression-punctuation': 'captures': '1': 'name': 'punctuation.separator.clause-head-body.erlang' '2': 'name': 'punctuation.separator.clauses.erlang' '3': 'name': 'punctuation.separator.expressions.erlang' 'match': '(->)|(;)|(,)' 'internal-function-list': 'begin': '(\\[)' 'beginCaptures': '1': 'name': 'punctuation.definition.list.begin.erlang' 'end': '(\\])' 'endCaptures': '1': 'name': 'punctuation.definition.list.end.erlang' 'name': 'meta.structure.list.function.erlang' 'patterns': [ { 'begin': '([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(/)' 'beginCaptures': '1': 'name': 'entity.name.function.erlang' '2': 'name': 'punctuation.separator.function-arity.erlang' 'end': '(,)|(?=\\])' 'endCaptures': '1': 'name': 'punctuation.separator.list.erlang' 'patterns': [ { 'include': '#everything-else' } ] } { 'include': '#everything-else' } ] 'internal-function-parts': 'patterns': [ { 'begin': '(?=\\()' 'end': '(->)' 'endCaptures': '1': 'name': 'punctuation.separator.clause-head-body.erlang' 'patterns': [ { 'begin': '(\\()' 'beginCaptures': '1': 'name': 'punctuation.definition.parameters.begin.erlang' 'end': '(\\))' 'endCaptures': '1': 'name': 'punctuation.definition.parameters.end.erlang' 'patterns': [ { 'match': ',' 'name': 'punctuation.separator.parameters.erlang' } { 'include': '#everything-else' } ] } { 'match': ',|;' 'name': 'punctuation.separator.guards.erlang' } { 'include': '#everything-else' } ] } { 'match': ',' 'name': 'punctuation.separator.expressions.erlang' } { 'include': '#everything-else' } ] 'internal-record-body': 'begin': '(\\{)' 'beginCaptures': '1': 'name': 'punctuation.definition.class.record.begin.erlang' 'end': '(?=\\})' 'name': 'meta.structure.record.erlang' 'patterns': [ { 'begin': '(([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')|(_))\\s*+(=|::)' 'beginCaptures': '2': 'name': 'variable.other.field.erlang' '3': 'name': 'variable.language.omitted.field.erlang' '4': 'name': 'keyword.operator.assignment.erlang' 'end': '(,)|(?=\\})' 'endCaptures': '1': 'name': 'punctuation.separator.class.record.erlang' 'patterns': [ { 'include': '#everything-else' } ] } { 'captures': '1': 'name': 'variable.other.field.erlang' '2': 'name': 'punctuation.separator.class.record.erlang' 'match': '([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(,)?' } { 'include': '#everything-else' } ] 'internal-type-specifiers': 'begin': '(/)' 'beginCaptures': '1': 'name': 'punctuation.separator.value-type.erlang' 'end': '(?=,|:|>>)' 'patterns': [ { 'captures': '1': 'name': 'storage.type.erlang' '2': 'name': 'storage.modifier.signedness.erlang' '3': 'name': 'storage.modifier.endianness.erlang' '4': 'name': 'storage.modifier.unit.erlang' '5': 'name': 'punctuation.separator.type-specifiers.erlang' 'match': '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] 'keyword': 'match': '\\b(after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' 'name': 'keyword.control.erlang' 'list': 'begin': '(\\[)' 'beginCaptures': '1': 'name': 'punctuation.definition.list.begin.erlang' 'end': '(\\])' 'endCaptures': '1': 'name': 'punctuation.definition.list.end.erlang' 'name': 'meta.structure.list.erlang' 'patterns': [ { 'match': '\\||\\|\\||,' 'name': 'punctuation.separator.list.erlang' } { 'include': '#everything-else' } ] 'macro-directive': 'patterns': [ { 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.ifdef.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.function.macro.erlang' '5': 'name': 'punctuation.definition.parameters.end.erlang' '6': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+(ifdef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)' 'name': 'meta.directive.ifdef.erlang' } { 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.ifndef.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.function.macro.erlang' '5': 'name': 'punctuation.definition.parameters.end.erlang' '6': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+(ifndef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)' 'name': 'meta.directive.ifndef.erlang' } { 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.undef.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.function.macro.erlang' '5': 'name': 'punctuation.definition.parameters.end.erlang' '6': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+(undef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)' 'name': 'meta.directive.undef.erlang' } ] 'macro-usage': 'captures': '1': 'name': 'keyword.operator.macro.erlang' '2': 'name': 'entity.name.function.macro.erlang' 'match': '(\\?\\??)\\s*+([a-zA-Z\\d@_]++)' 'name': 'meta.macro-usage.erlang' 'module-directive': 'captures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.module.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.type.class.module.definition.erlang' '5': 'name': 'punctuation.definition.parameters.end.erlang' '6': 'name': 'punctuation.section.directive.end.erlang' 'match': '^\\s*+(-)\\s*+(module)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)' 'name': 'meta.directive.module.erlang' 'number': 'begin': '(?=\\d)' 'end': '(?!\\d)' 'patterns': [ { 'captures': '1': 'name': 'punctuation.separator.integer-float.erlang' '2': 'name': 'punctuation.separator.float-exponent.erlang' 'match': '\\d++(\\.)\\d++([eE][\\+\\-]?\\d++)?' 'name': 'constant.numeric.float.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '2(#)[0-1]++' 'name': 'constant.numeric.integer.binary.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '3(#)[0-2]++' 'name': 'constant.numeric.integer.base-3.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '4(#)[0-3]++' 'name': 'constant.numeric.integer.base-4.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '5(#)[0-4]++' 'name': 'constant.numeric.integer.base-5.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '6(#)[0-5]++' 'name': 'constant.numeric.integer.base-6.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '7(#)[0-6]++' 'name': 'constant.numeric.integer.base-7.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '8(#)[0-7]++' 'name': 'constant.numeric.integer.octal.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '9(#)[0-8]++' 'name': 'constant.numeric.integer.base-9.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '10(#)\\d++' 'name': 'constant.numeric.integer.decimal.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '11(#)[\\daA]++' 'name': 'constant.numeric.integer.base-11.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '12(#)[\\da-bA-B]++' 'name': 'constant.numeric.integer.base-12.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '13(#)[\\da-cA-C]++' 'name': 'constant.numeric.integer.base-13.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '14(#)[\\da-dA-D]++' 'name': 'constant.numeric.integer.base-14.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '15(#)[\\da-eA-E]++' 'name': 'constant.numeric.integer.base-15.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '16(#)\\h++' 'name': 'constant.numeric.integer.hexadecimal.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '17(#)[\\da-gA-G]++' 'name': 'constant.numeric.integer.base-17.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '18(#)[\\da-hA-H]++' 'name': 'constant.numeric.integer.base-18.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '19(#)[\\da-iA-I]++' 'name': 'constant.numeric.integer.base-19.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '20(#)[\\da-jA-J]++' 'name': 'constant.numeric.integer.base-20.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '21(#)[\\da-kA-K]++' 'name': 'constant.numeric.integer.base-21.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '22(#)[\\da-lA-L]++' 'name': 'constant.numeric.integer.base-22.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '23(#)[\\da-mA-M]++' 'name': 'constant.numeric.integer.base-23.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '24(#)[\\da-nA-N]++' 'name': 'constant.numeric.integer.base-24.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '25(#)[\\da-oA-O]++' 'name': 'constant.numeric.integer.base-25.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '26(#)[\\da-pA-P]++' 'name': 'constant.numeric.integer.base-26.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '27(#)[\\da-qA-Q]++' 'name': 'constant.numeric.integer.base-27.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '28(#)[\\da-rA-R]++' 'name': 'constant.numeric.integer.base-28.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '29(#)[\\da-sA-S]++' 'name': 'constant.numeric.integer.base-29.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '30(#)[\\da-tA-T]++' 'name': 'constant.numeric.integer.base-30.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '31(#)[\\da-uA-U]++' 'name': 'constant.numeric.integer.base-31.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '32(#)[\\da-vA-V]++' 'name': 'constant.numeric.integer.base-32.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '33(#)[\\da-wA-W]++' 'name': 'constant.numeric.integer.base-33.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '34(#)[\\da-xA-X]++' 'name': 'constant.numeric.integer.base-34.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '35(#)[\\da-yA-Y]++' 'name': 'constant.numeric.integer.base-35.erlang' } { 'captures': '1': 'name': 'punctuation.separator.base-integer.erlang' 'match': '36(#)[\\da-zA-Z]++' 'name': 'constant.numeric.integer.base-36.erlang' } { 'match': '\\d++#[\\da-zA-Z]++' 'name': 'invalid.illegal.integer.erlang' } { 'match': '\\d++' 'name': 'constant.numeric.integer.decimal.erlang' } ] 'parenthesized-expression': 'begin': '(\\()' 'beginCaptures': '1': 'name': 'punctuation.section.expression.begin.erlang' 'end': '(\\))' 'endCaptures': '1': 'name': 'punctuation.section.expression.end.erlang' 'name': 'meta.expression.parenthesized' 'patterns': [ { 'include': '#everything-else' } ] 'record-directive': 'begin': '^\\s*+(-)\\s*+(record)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(,)' 'beginCaptures': '1': 'name': 'punctuation.section.directive.begin.erlang' '2': 'name': 'keyword.control.directive.import.erlang' '3': 'name': 'punctuation.definition.parameters.begin.erlang' '4': 'name': 'entity.name.type.class.record.definition.erlang' '5': 'name': 'punctuation.separator.parameters.erlang' 'end': '((\\}))\\s*+(\\))\\s*+(\\.)' 'endCaptures': '1': 'name': 'meta.structure.record.erlang' '2': 'name': 'punctuation.definition.class.record.end.erlang' '3': 'name': 'punctuation.definition.parameters.end.erlang' '4': 'name': 'punctuation.section.directive.end.erlang' 'name': 'meta.directive.record.erlang' 'patterns': [ { 'include': '#internal-record-body' } ] 'record-usage': 'patterns': [ { 'captures': '1': 'name': 'keyword.operator.record.erlang' '2': 'name': 'entity.name.type.class.record.erlang' '3': 'name': 'punctuation.separator.record-field.erlang' '4': 'name': 'variable.other.field.erlang' 'match': '(#)\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')\\s*+(\\.)\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')' 'name': 'meta.record-usage.erlang' } { 'begin': '(#)\\s*+([a-z][a-zA-Z\\d@_]*+|\'[^\']*+\')' 'beginCaptures': '1': 'name': 'keyword.operator.record.erlang' '2': 'name': 'entity.name.type.class.record.erlang' 'end': '((\\}))' 'endCaptures': '1': 'name': 'meta.structure.record.erlang' '2': 'name': 'punctuation.definition.class.record.end.erlang' 'name': 'meta.record-usage.erlang' 'patterns': [ { 'include': '#internal-record-body' } ] } ] 'string': 'begin': '(")' 'beginCaptures': '1': 'name': 'punctuation.definition.string.begin.erlang' 'end': '(")' 'endCaptures': '1': 'name': 'punctuation.definition.string.end.erlang' 'name': 'string.quoted.double.erlang' 'patterns': [ { 'captures': '1': 'name': 'punctuation.definition.escape.erlang' '3': 'name': 'punctuation.definition.escape.erlang' 'match': '(\\\\)([bdefnrstv\\\\\'"]|(\\^)[@-_]|[0-7]{1,3})' 'name': 'constant.character.escape.erlang' } { 'match': '\\\\\\^?.?' 'name': 'invalid.illegal.string.erlang' } { 'captures': '1': 'name': 'punctuation.definition.placeholder.erlang' '3': 'name': 'punctuation.separator.placeholder-parts.erlang' '4': 'name': 'punctuation.separator.placeholder-parts.erlang' '6': 'name': 'punctuation.separator.placeholder-parts.erlang' '8': 'name': 'punctuation.separator.placeholder-parts.erlang' '10': 'name': 'punctuation.separator.placeholder-parts.erlang' '12': 'name': 'punctuation.separator.placeholder-parts.erlang' 'match': '(~)((\\-)?\\d++|(\\*))?((\\.)(\\d++|(\\*)))?((\\.)((\\*)|.))?[~cfegswpWPBX#bx\\+ni]' 'name': 'constant.other.placeholder.erlang' } { 'captures': '1': 'name': 'punctuation.definition.placeholder.erlang' '2': 'name': 'punctuation.separator.placeholder-parts.erlang' 'match': '(~)(\\*)?(\\d++)?[~du\\-#fsacl]' 'name': 'constant.other.placeholder.erlang' } { 'match': '~.?' 'name': 'invalid.illegal.string.erlang' } ] 'symbolic-operator': 'match': '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' 'name': 'keyword.operator.symbolic.erlang' 'textual-operator': 'match': '\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' 'name': 'keyword.operator.textual.erlang' 'tuple': 'begin': '(\\{)' 'beginCaptures': '1': 'name': 'punctuation.definition.tuple.begin.erlang' 'end': '(\\})' 'endCaptures': '1': 'name': 'punctuation.definition.tuple.end.erlang' 'name': 'meta.structure.tuple.erlang' 'patterns': [ { 'match': ',' 'name': 'punctuation.separator.tuple.erlang' } { 'include': '#everything-else' } ] 'variable': 'captures': '1': 'name': 'variable.other.erlang' '2': 'name': 'variable.language.omitted.erlang' 'match': '(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)|(_)' 'scopeName': 'source.erlang'