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