1306 lines
37 KiB
Plaintext
1306 lines
37 KiB
Plaintext
'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'
|