UNPKG

tm-grammars

Version:
1,801 lines 61.6 kB
{ "displayName": "Erlang", "fileTypes": [ "erl", "escript", "hrl", "xrl", "yrl" ], "name": "erlang", "patterns": [ { "include": "#module-directive" }, { "include": "#import-export-directive" }, { "include": "#behaviour-directive" }, { "include": "#record-directive" }, { "include": "#define-directive" }, { "include": "#macro-directive" }, { "include": "#doc-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[A-Fa-f\\d]{2})", "name": "constant.other.symbol.escape.erlang" }, { "match": "\\\\\\^?.?", "name": "invalid.illegal.atom.erlang" } ] }, { "match": "[a-z][@-Z_a-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][@-Z_a-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[A-Fa-f\\d]{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*+([@-Z_a-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*+[@-Z_a-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*+([@-Z_a-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][@-Z_a-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][@-Z_a-z\\d]*+)\\s*+(\\.)", "name": "meta.directive.erlang" } ] }, "doc-directive": { "begin": "^\\s*+(-)\\s*+((module)?doc)\\s*(\\(\\s*)?(~[BSbs]?)?((\"{3,})\\s*)(\\S.*)?$", "beginCaptures": { "1": { "name": "punctuation.section.directive.begin.erlang" }, "2": { "name": "keyword.control.directive.doc.erlang" }, "4": { "name": "punctuation.definition.parameters.begin.erlang" }, "5": { "name": "storage.type.string.erlang" }, "6": { "name": "comment.block.documentation.erlang" }, "7": { "name": "punctuation.definition.string.begin.erlang" }, "8": { "name": "invalid.illegal.string.erlang" } }, "contentName": "meta.embedded.block.markdown", "end": "^(\\s*(\\7))\\s*(\\)\\s*)?(\\.)", "endCaptures": { "1": { "name": "comment.block.documentation.erlang" }, "2": { "name": "punctuation.definition.string.end.erlang" }, "3": { "name": "punctuation.section.directive.end.Erlang" } }, "name": "meta.directive.doc.erlang", "patterns": [ { "include": "text.html.markdown" } ] }, "docstring": { "begin": "(?<!\")((\"{3,})\\s*)(\\S.*)?$", "beginCaptures": { "1": { "name": "meta.string.quoted.triple.begin.erlang" }, "2": { "name": "punctuation.definition.string.begin.erlang" }, "3": { "name": "invalid.illegal.string.erlang" } }, "end": "^(\\s*(\\2))(?!\")", "endCaptures": { "1": { "name": "meta.string.quoted.triple.end.erlang" }, "2": { "name": "punctuation.definition.string.end.erlang" } }, "name": "string.quoted.triple.erlang", "patterns": [ { "include": "#internal-string-body-verbatim" } ] }, "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": "#sigil-docstring" }, { "include": "#sigil-docstring-verbatim" }, { "include": "#sigil-string" }, { "include": "#docstring" }, { "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" }, "10": { "name": "punctuation.separator.function-arity.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" } }, "match": "\\b(fun)\\s+((([a-z][@-Z_a-z\\d]*+)|(_[@-Z_a-z\\d]++|[A-Z][@-Z_a-z\\d]*+))\\s*+(:)\\s*+)?(([a-z][@-Z_a-z\\d]*+|'[^']*+')|(_[@-Z_a-z\\d]++|[A-Z][@-Z_a-z\\d]*+))\\s*(/)", "name": "meta.expression.fun.implicit.erlang" }, { "begin": "\\b(fun)\\s+(([a-z][@-Z_a-z\\d]*+)|(_[@-Z_a-z\\d]++|[A-Z][@-Z_a-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" } }, "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" } }, "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" } }, "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.parameters.end.erlang" } }, "patterns": [ { "include": "#everything-else" } ] }, { "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(maybe)\\b", "beginCaptures": { "1": { "name": "keyword.control.maybe.erlang" } }, "end": "\\b(end)\\b", "endCaptures": { "1": { "name": "keyword.control.end.erlang" } }, "name": "meta.expression.maybe.erlang", "patterns": [ { "include": "#internal-expression-punctuation" }, { "include": "#everything-else" } ] } ] }, "function": { "begin": "^\\s*+([a-z][@-Z_a-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][@-Z_a-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][@-Z_a-z\\d]*+|'[^']*+'|_[@-Z_a-z\\d]++|[A-Z][@-Z_a-z\\d]*+)\\s*+(\\(|:\\s*+([a-z][@-Z_a-z\\d]*+|'[^']*+'|_[@-Z_a-z\\d]++|[A-Z][@-Z_a-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][@-Z_a-z\\d]*+|'[^']*+')|(_[@-Z_a-z\\d]++|[A-Z][@-Z_a-z\\d]*+))\\s*+(:)\\s*+)?(([a-z][@-Z_a-z\\d]*+|'[^']*+')|(_[@-Z_a-z\\d]++|[A-Z][@-Z_a-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][@-Z_a-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][@-Z_a-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][@-Z_a-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-string-body": { "patterns": [ { "captures": { "1": { "name": "punctuation.definition.escape.erlang" }, "3": { "name": "punctuation.definition.escape.erlang" } }, "match": "(\\\\)([\"'\\\\bdefnrstv]|(\\^)[@-_a-z]|[0-7]{1,3}|x[A-Fa-f\\d]{2})", "name": "constant.character.escape.erlang" }, { "match": "\\\\\\^?.?", "name": "invalid.illegal.string.erlang" }, { "include": "#internal-string-body-verbatim" } ] }, "internal-string-body-verbatim": { "patterns": [ { "captures": { "1": { "name": "punctuation.definition.placeholder.erlang" }, "10": { "name": "punctuation.separator.placeholder-parts.erlang" }, "6": { "name": "punctuation.separator.placeholder-parts.erlang" } }, "match": "(~)((-)?\\d++|(\\*))?((\\.)(\\d++|(\\*))?((\\.)((\\*)|.))?)?[Kklt]*[#+BPWXbcefginpswx~]", "name": "constant.character.format.placeholder.other.erlang" }, { "captures": { "1": { "name": "punctuation.definition.placeholder.erlang" } }, "match": "(~)(\\*)?(\\d++)?(t)?[-#acdflsu~]", "name": "constant.character.format.placeholder.other.erlang" }, { "match": "~[^\"]?", "name": "invalid.illegal.string.erlang" } ] }, "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)|((?:|un)signed)|(big|little|native)|(unit)(:)(\\d++)|(-)" } ] }, "keyword": { "match": "\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when|maybe|else)\\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*+([@-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*+([@-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*+([@-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*+([@-Z_a-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][@-Z_a-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(#)([01]++_)*[01]++", "name": "constant.numeric.integer.binary.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "3(#)([012]++_)*[012]++", "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(#)([Aa\\d]++_)*[Aa\\d]++", "name": "constant.numeric.integer.base-11.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "12(#)([ABab\\d]++_)*[ABab\\d]++", "name": "constant.numeric.integer.base-12.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "13(#)([ABCabc\\d]++_)*[ABCabc\\d]++", "name": "constant.numeric.integer.base-13.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "14(#)([A-Da-d\\d]++_)*[A-Da-d\\d]++", "name": "constant.numeric.integer.base-14.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "15(#)([A-Ea-e\\d]++_)*[A-Ea-e\\d]++", "name": "constant.numeric.integer.base-15.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "16(#)([A-Fa-f\\d]++_)*[A-Fa-f\\d]++", "name": "constant.numeric.integer.hexadecimal.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "17(#)([A-Ga-g\\d]++_)*[A-Ga-g\\d]++", "name": "constant.numeric.integer.base-17.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "18(#)([A-Ha-h\\d]++_)*[A-Ha-h\\d]++", "name": "constant.numeric.integer.base-18.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "19(#)([A-Ia-i\\d]++_)*[A-Ia-i\\d]++", "name": "constant.numeric.integer.base-19.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "20(#)([A-Ja-j\\d]++_)*[A-Ja-j\\d]++", "name": "constant.numeric.integer.base-20.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "21(#)([A-Ka-k\\d]++_)*[A-Ka-k\\d]++", "name": "constant.numeric.integer.base-21.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "22(#)([A-La-l\\d]++_)*[A-La-l\\d]++", "name": "constant.numeric.integer.base-22.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "23(#)([A-Ma-m\\d]++_)*[A-Ma-m\\d]++", "name": "constant.numeric.integer.base-23.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "24(#)([A-Na-n\\d]++_)*[A-Na-n\\d]++", "name": "constant.numeric.integer.base-24.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "25(#)([A-Oa-o\\d]++_)*[A-Oa-o\\d]++", "name": "constant.numeric.integer.base-25.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "26(#)([A-Pa-p\\d]++_)*[A-Pa-p\\d]++", "name": "constant.numeric.integer.base-26.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "27(#)([A-Qa-q\\d]++_)*[A-Qa-q\\d]++", "name": "constant.numeric.integer.base-27.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "28(#)([A-Ra-r\\d]++_)*[A-Ra-r\\d]++", "name": "constant.numeric.integer.base-28.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "29(#)([A-Sa-s\\d]++_)*[A-Sa-s\\d]++", "name": "constant.numeric.integer.base-29.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "30(#)([A-Ta-t\\d]++_)*[A-Ta-t\\d]++", "name": "constant.numeric.integer.base-30.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "31(#)([A-Ua-u\\d]++_)*[A-Ua-u\\d]++", "name": "constant.numeric.integer.base-31.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "32(#)([A-Va-v\\d]++_)*[A-Va-v\\d]++", "name": "constant.numeric.integer.base-32.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "33(#)([A-Wa-w\\d]++_)*[A-Wa-w\\d]++", "name": "constant.numeric.integer.base-33.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "34(#)([A-Xa-x\\d]++_)*[A-Xa-x\\d]++", "name": "constant.numeric.integer.base-34.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "35(#)([A-Ya-y\\d]++_)*[A-Ya-y\\d]++", "name": "constant.numeric.integer.base-35.erlang" }, { "captures": { "1": { "name": "punctuation.separator.base-integer.erlang" } }, "match": "36(#)([A-Za-z\\d]++_)*[A-Za-z\\d]++", "name": "constant.numeric.integer.base-36.erlang" }, { "match": "\\d++#([A-Za-z\\d]++_)*[A-Za-z\\d]++", "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][@-Z_a-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][@-Z_a-z\\d]*+|'[^']*+')\\s*+(\\.)\\s*+([a-z][@-Z_a-z\\d]*+|'[^']*+')", "name": "meta.record-usage.erlang" }, { "begin": "(#)\\s*+([a-z][@-Z_a-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" } ] } ] }, "sigil-docstring": { "begin": "(~[bs])((\"{3,})\\s*)(\\S.*)?$", "beginCaptures": { "1": { "name": "storage.type.string.erlang" }, "2": { "name": "meta.string.quoted.triple.begin.erlang" }, "3": { "name": "punctuation.definition.string.begin.erlang" }, "4": { "name": "invalid.illegal.string.erlang" } }, "end": "^(\\s*(\\3))(?!\")", "endCaptures": { "1": { "name": "meta.string.quoted.triple.end.erlang" }, "2": { "name": "punctuation.definition.string.end.erlang" } }, "name": "string.quoted.tripple.sigil.erlang", "pa