1730 lines
48 KiB
JSON
1730 lines
48 KiB
JSON
{
|
|
"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", "escript", "hrl", "xrl", "yrl"],
|
|
"keyEquivalent": "^~E",
|
|
"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\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
|
|
"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\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2}))",
|
|
"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"
|
|
}
|
|
},
|
|
"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": "#language-constant"
|
|
},
|
|
{
|
|
"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"
|
|
},
|
|
"4": {
|
|
"name": "entity.name.type.class.module.erlang"
|
|
},
|
|
"5": {
|
|
"name": "variable.other.erlang"
|
|
},
|
|
"6": {
|
|
"name": "punctuation.separator.module-function.erlang"
|
|
},
|
|
"8": {
|
|
"name": "entity.name.function.erlang"
|
|
},
|
|
"9": {
|
|
"name": "variable.other.erlang"
|
|
},
|
|
"10": {
|
|
"name": "punctuation.separator.function-arity.erlang"
|
|
}
|
|
},
|
|
"comment": "Implicit function expression with optional module qualifier when both module and function can be atom or variable",
|
|
"match": "\\b(fun)\\s+((([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*(/)",
|
|
"name": "meta.expression.fun.implicit.erlang"
|
|
},
|
|
{
|
|
"begin": "\\b(fun)\\s+(([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.fun.erlang"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.type.class.module.erlang"
|
|
},
|
|
"4": {
|
|
"name": "variable.other.erlang"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.separator.module-function.erlang"
|
|
}
|
|
},
|
|
"comment": "Implicit function expression with module qualifier when module can be atom or variable and function can by anything",
|
|
"end": "(/)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.function-arity.erlang"
|
|
}
|
|
},
|
|
"name": "meta.expression.fun.implicit.erlang",
|
|
"patterns": [
|
|
{
|
|
"include": "#everything-else"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(fun)\\s+(?!\\()",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.fun.erlang"
|
|
}
|
|
},
|
|
"comment": "Implicit function expression when both module and function can by anything",
|
|
"end": "(/)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.function-arity.erlang"
|
|
}
|
|
},
|
|
"name": "meta.expression.fun.implicit.erlang",
|
|
"patterns": [
|
|
{
|
|
"include": "#everything-else"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(fun)\\s*+(\\()(?=(\\s*+\\())",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "entity.name.function.erlang"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.parameters.begin.erlang"
|
|
}
|
|
},
|
|
"comment": "Function type in type specification",
|
|
"end": "(\\))",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.parameters.end.erlang"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#everything-else"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\b(fun)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.fun.erlang"
|
|
}
|
|
},
|
|
"comment": "Explicit function expression",
|
|
"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"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"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@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+(\\(|:\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[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@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(\\()",
|
|
"beginCaptures": {
|
|
"3": {
|
|
"name": "entity.name.type.class.module.erlang"
|
|
},
|
|
"4": {
|
|
"name": "variable.other.erlang"
|
|
},
|
|
"5": {
|
|
"name": "punctuation.separator.module-function.erlang"
|
|
},
|
|
"7": {
|
|
"name": "entity.name.function.erlang"
|
|
},
|
|
"8": {
|
|
"name": "variable.other.erlang"
|
|
},
|
|
"9": {
|
|
"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": "(\\})",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.class.record.end.erlang"
|
|
}
|
|
},
|
|
"name": "meta.structure.record.erlang",
|
|
"patterns": [
|
|
{
|
|
"begin": "(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "variable.other.field.erlang"
|
|
},
|
|
"3": {
|
|
"name": "variable.language.omitted.field.erlang"
|
|
}
|
|
},
|
|
"end": "(,)|(?=\\})",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.separator.class.record.erlang"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#everything-else"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"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.unit-specifiers.erlang"
|
|
},
|
|
"6": {
|
|
"name": "constant.numeric.integer.decimal.erlang"
|
|
},
|
|
"7": {
|
|
"name": "punctuation.separator.type-specifiers.erlang"
|
|
}
|
|
},
|
|
"match": "(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\d++)|(-)"
|
|
}
|
|
]
|
|
},
|
|
"keyword": {
|
|
"match": "\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when)\\b",
|
|
"name": "keyword.control.erlang"
|
|
},
|
|
"language-constant": {
|
|
"match": "\\b(false|true|undefined)\\b",
|
|
"name": "constant.language"
|
|
},
|
|
"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]++_)*[0-1]++",
|
|
"name": "constant.numeric.integer.binary.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "3(#)([0-2]++_)*[0-2]++",
|
|
"name": "constant.numeric.integer.base-3.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "4(#)([0-3]++_)*[0-3]++",
|
|
"name": "constant.numeric.integer.base-4.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "5(#)([0-4]++_)*[0-4]++",
|
|
"name": "constant.numeric.integer.base-5.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "6(#)([0-5]++_)*[0-5]++",
|
|
"name": "constant.numeric.integer.base-6.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "7(#)([0-6]++_)*[0-6]++",
|
|
"name": "constant.numeric.integer.base-7.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "8(#)([0-7]++_)*[0-7]++",
|
|
"name": "constant.numeric.integer.octal.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "9(#)([0-8]++_)*[0-8]++",
|
|
"name": "constant.numeric.integer.base-9.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "10(#)(\\d++_)*\\d++",
|
|
"name": "constant.numeric.integer.decimal.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "11(#)([\\daA]++_)*[\\daA]++",
|
|
"name": "constant.numeric.integer.base-11.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "12(#)([\\da-bA-B]++_)*[\\da-bA-B]++",
|
|
"name": "constant.numeric.integer.base-12.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "13(#)([\\da-cA-C]++_)*[\\da-cA-C]++",
|
|
"name": "constant.numeric.integer.base-13.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "14(#)([\\da-dA-D]++_)*[\\da-dA-D]++",
|
|
"name": "constant.numeric.integer.base-14.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "15(#)([\\da-eA-E]++_)*[\\da-eA-E]++",
|
|
"name": "constant.numeric.integer.base-15.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "16(#)([\\da-fA-F]++_)*[\\da-fA-F]++",
|
|
"name": "constant.numeric.integer.hexadecimal.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "17(#)([\\da-gA-G]++_)*[\\da-gA-G]++",
|
|
"name": "constant.numeric.integer.base-17.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "18(#)([\\da-hA-H]++_)*[\\da-hA-H]++",
|
|
"name": "constant.numeric.integer.base-18.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "19(#)([\\da-iA-I]++_)*[\\da-iA-I]++",
|
|
"name": "constant.numeric.integer.base-19.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "20(#)([\\da-jA-J]++_)*[\\da-jA-J]++",
|
|
"name": "constant.numeric.integer.base-20.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "21(#)([\\da-kA-K]++_)*[\\da-kA-K]++",
|
|
"name": "constant.numeric.integer.base-21.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "22(#)([\\da-lA-L]++_)*[\\da-lA-L]++",
|
|
"name": "constant.numeric.integer.base-22.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "23(#)([\\da-mA-M]++_)*[\\da-mA-M]++",
|
|
"name": "constant.numeric.integer.base-23.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "24(#)([\\da-nA-N]++_)*[\\da-nA-N]++",
|
|
"name": "constant.numeric.integer.base-24.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "25(#)([\\da-oA-O]++_)*[\\da-oA-O]++",
|
|
"name": "constant.numeric.integer.base-25.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "26(#)([\\da-pA-P]++_)*[\\da-pA-P]++",
|
|
"name": "constant.numeric.integer.base-26.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "27(#)([\\da-qA-Q]++_)*[\\da-qA-Q]++",
|
|
"name": "constant.numeric.integer.base-27.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "28(#)([\\da-rA-R]++_)*[\\da-rA-R]++",
|
|
"name": "constant.numeric.integer.base-28.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "29(#)([\\da-sA-S]++_)*[\\da-sA-S]++",
|
|
"name": "constant.numeric.integer.base-29.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "30(#)([\\da-tA-T]++_)*[\\da-tA-T]++",
|
|
"name": "constant.numeric.integer.base-30.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "31(#)([\\da-uA-U]++_)*[\\da-uA-U]++",
|
|
"name": "constant.numeric.integer.base-31.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "32(#)([\\da-vA-V]++_)*[\\da-vA-V]++",
|
|
"name": "constant.numeric.integer.base-32.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "33(#)([\\da-wA-W]++_)*[\\da-wA-W]++",
|
|
"name": "constant.numeric.integer.base-33.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "34(#)([\\da-xA-X]++_)*[\\da-xA-X]++",
|
|
"name": "constant.numeric.integer.base-34.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "35(#)([\\da-yA-Y]++_)*[\\da-yA-Y]++",
|
|
"name": "constant.numeric.integer.base-35.erlang"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "punctuation.separator.base-integer.erlang"
|
|
}
|
|
},
|
|
"match": "36(#)([\\da-zA-Z]++_)*[\\da-zA-Z]++",
|
|
"name": "constant.numeric.integer.base-36.erlang"
|
|
},
|
|
{
|
|
"match": "\\d++#([\\da-zA-Z]++_)*[\\da-zA-Z]++",
|
|
"name": "invalid.illegal.integer.erlang"
|
|
},
|
|
{
|
|
"match": "(\\d++_)*\\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*+(\\.)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.parameters.end.erlang"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.section.directive.end.erlang"
|
|
}
|
|
},
|
|
"name": "meta.directive.record.erlang",
|
|
"patterns": [
|
|
{
|
|
"include": "#internal-record-body"
|
|
},
|
|
{
|
|
"include": "#comment"
|
|
}
|
|
]
|
|
},
|
|
"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": "(?<=\\})",
|
|
"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\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
|
|
"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",
|
|
"uuid": "58EA597D-5158-4BF7-9FB2-B05135D1E166"
|
|
}
|