{ "name": "Reason", "scopeName": "source.reason", "patterns": [ { "include": "#structure-expression-block-item" }, { "include": "#value-expression" } ], "repository": { "attribute": { "begin": "(?=\\[(@{1,3})[[:space:]]*[[:alpha:]])", "end": "\\]", "patterns": [ { "begin": "\\[(@{1,3})", "end": "(?=[^_\\.'[:word:]])", "patterns": [ { "include": "#attribute-identifier" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, { "include": "#attribute-payload" } ] }, "attribute-identifier": { "patterns": [ { "match": "\\b([[:alpha:]][[:word:]]*)\\b[[:space:]]*(?:(\\.))", "captures": { "1": { "name": "support.class entity.name.class" }, "2": { "name": "keyword.control.less" } } }, { "name": "entity.other.attribute-name.css constant.language constant.numeric", "match": "\\b([[:alpha:]][[:word:]]*)\\b" } ] }, "attribute-payload": { "patterns": [ { "begin": "(:)", "end": "(?=\\])", "patterns": [ { "include": "#structure-expression" }, { "include": "#module-item-type" }, { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, { "begin": "([\\?])", "end": "(?=\\])", "patterns": [ { "include": "#pattern-guard" }, { "include": "#pattern" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, { "include": "#structure-expression-block-item" }, { "include": "#value-expression" } ] }, "class-item-inherit": { "begin": "\\b(inherit)\\b", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.other" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "class-item-method": { "begin": "\\b(method)\\b", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-value-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "storage.type" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "comment": { "name": "comment", "patterns": [ { "include": "#comment-line" }, { "include": "#comment-block-doc" }, { "include": "#comment-block" } ] }, "comment-block": { "name": "comment.block", "begin": "/\\*", "end": "\\*/", "patterns": [ { "include": "#comment" } ] }, "comment-block-doc": { "name": "comment.block.documentation", "begin": "/\\*\\*(?!/)", "end": "\\*/", "patterns": [ { "include": "#comment" } ] }, "comment-line": { "name": "comment.line", "begin": "(^[ \\t]+)?((//))", "end": "(?=^)", "patterns": [ { "include": "#comment" } ] }, "condition-lhs": { "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([\\?])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])", "end": "(?=[\\)])", "patterns": [ { "name": "keyword.control message.error variable.interpolation", "match": "(?:\\b|[[:space:]]+)([?])(?:\\b|[[:space:]]+)" }, { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.control message.error variable.interpolation" } } }, "extension-node": { "begin": "(?=\\[(%{1,3})[[:space:]]*[[:alpha:]])", "end": "\\]", "patterns": [ { "begin": "\\[(%{1,3})", "end": "(?=[^_\\.'[:word:]])", "patterns": [ { "include": "#attribute-identifier" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, { "include": "#attribute-payload" } ] }, "jsx": { "patterns": [ { "include": "#jsx-head" }, { "include": "#jsx-tail" } ] }, "jsx-attributes": { "patterns": [ { "begin": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*(=)", "end": "(?\u003c![=])(?=[/\u003e[:lower:]])", "patterns": [ { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" }, "2": { "name": "keyword.control.less" } } }, { "match": "(\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*+)", "captures": { "1": {}, "2": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } } } ] }, "jsx-body": { "begin": "((\u003e))", "end": "(?=\u003c/)", "patterns": [ { "match": "[[:lower:]][[:word:]]*" }, { "include": "#value-expression" } ], "beginCaptures": { "1": {}, "2": { "name": "punctuation.definition.tag.end.js" } } }, "jsx-head": { "begin": "((\u003c))(?=[_[:alpha:]])", "end": "((/\u003e))|(?=\u003c/)", "patterns": [ { "begin": "\\G", "end": "(?=[[:space:]/\u003e])[[:space:]]*+", "patterns": [ { "include": "#module-path-simple" }, { "name": "entity.name.tag.inline.any.html", "match": "\\b[[:lower:]][[:word:]]*\\b" } ] }, { "include": "#jsx-attributes" }, { "include": "#jsx-body" } ], "beginCaptures": { "1": {}, "2": { "name": "punctuation.definition.tag.begin.js" } }, "endCaptures": { "1": {}, "2": { "name": "punctuation.definition.tag.end.js" } }, "applyEndPatternLast": true }, "jsx-tail": { "begin": "\\G(/\u003e)|(\u003c/)", "end": "(\u003e)", "patterns": [ { "include": "#module-path-simple" }, { "name": "entity.name.tag.inline.any.html", "match": "\\b[[:lower:]][[:word:]]*\\b" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.end.js" }, "2": { "name": "punctuation.definition.tag.begin.js" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.end.js" } }, "applyEndPatternLast": true }, "module-item-class-type": { "begin": "\\b(class)\\b", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b", "end": "(?==)", "patterns": [ { "include": "#module-item-type-bind-name-tyvars" } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "begin": "(=)", "end": "(?=;)", "patterns": [ { "include": "#attribute" }, { "include": "#comment" }, { "include": "#class-item-inherit" }, { "include": "#class-item-method" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } } ], "beginCaptures": { "1": { "name": "keyword.other" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-exception": { "begin": "\\b(exception)\\b", "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-type-bind-body-item" } ], "beginCaptures": { "1": { "name": "keyword.other" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-external": { "begin": "\\b(external)\\b", "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-value-bind-name-or-pattern" }, { "include": "#module-item-let-value-bind-type" }, { "begin": "(=)", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#attribute" }, { "name": "string.double string.regexp", "begin": "\"", "end": "\"", "patterns": [ { "include": "#value-literal-string-escape" }, { "match": "(?:(%)(.*?)|(caml.*?))(?=\"|(?:[^\\\\\\n]$))", "captures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "2": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "3": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } } ], "beginCaptures": { "1": { "name": "storage.type" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-include": { "begin": "\\b(include)\\b", "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val)\\b)", "patterns": [ { "include": "#signature-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.include" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-let": { "begin": "\\b(let)\\b", "end": "(;)|(?=}|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-module" }, { "include": "#module-item-let-value" } ], "beginCaptures": { "1": { "name": "storage.type" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-let-module": { "begin": "(?:\\G|^)[[:space:]]*\\b(module)\\b", "end": "(?=[;}]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-item-let-module-and" }, { "include": "#module-item-let-module-rec" }, { "include": "#module-item-let-module-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.control storage.type message.error" } } }, "module-item-let-module-and": { "begin": "\\b(and)\\b", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-module-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "storage.type" } } }, "module-item-let-module-bind-body": { "begin": "(=\u003e?)", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#structure-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, "module-item-let-module-bind-name-params": { "begin": "\\b([[:upper:]][[:word:]]*)\\b", "end": "(?=[;:}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-item-let-module-param" } ], "beginCaptures": { "1": { "name": "support.class entity.name.class" } } }, "module-item-let-module-bind-name-params-type-body": { "begin": "(?:\\G|^)", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-item-let-module-bind-name-params" }, { "include": "#module-item-let-module-bind-type" }, { "include": "#module-item-let-module-bind-body" } ] }, "module-item-let-module-bind-type": { "begin": "(:)", "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val)\\b)", "patterns": [ { "include": "#signature-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-let-module-param": { "begin": "(?=\\()", "end": "\\)", "patterns": [ { "begin": "\\(", "end": "(?=[:])", "patterns": [ { "include": "#comment" }, { "include": "#module-name-simple" } ] }, { "begin": "(:)", "end": "(?=\\))", "patterns": [ { "include": "#signature-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] }, "module-item-let-module-rec": { "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-module-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "keyword.control storage.modifier.rec" } } }, "module-item-let-value": { "patterns": [ { "include": "#module-item-let-value-and" }, { "include": "#module-item-let-value-rec" }, { "include": "#module-item-let-value-bind-name-params-type-body" } ] }, "module-item-let-value-and": { "begin": "\\b(and)\\b", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-value-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "storage.type" } } }, "module-item-let-value-bind-body": { "begin": "(=\u003e?)", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, "module-item-let-value-bind-name-or-pattern": { "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)[[:space:]]*", "end": "(?\u003c=[^[:space:]])|(?=[[:space:]]|[;:}=]|\\b(and|as|class|constraint|exception|external|for|include|inherit|let|method|module|nonrec|open|private|rec|switch|try|type|val|while|with)\\b)", "patterns": [ { "include": "#comment" }, { "match": "\\b(?:([_][[:word:]]+)|([[:lower:]][[:word:]]*))\\b", "captures": { "1": { "name": "comment" }, "2": { "name": "entity.name.function" } } }, { "include": "#module-item-let-value-bind-parens-params" }, { "include": "#pattern" } ] }, "module-item-let-value-bind-name-params-type-body": { "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "begin": "(::)", "end": "(?\u003c=[[:space:]])", "patterns": [ { "include": "#pattern" }, { "begin": "(=)", "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])", "patterns": [ { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.control.less message.error" } }, "endCaptures": { "1": { "name": "storage.type" } } } ], "beginCaptures": { "1": { "name": "keyword.control" } } }, { "include": "#module-item-let-value-bind-name-or-pattern" }, { "include": "#module-item-let-value-bind-params-type" }, { "include": "#module-item-let-value-bind-type" }, { "include": "#module-item-let-value-bind-body" } ] }, "module-item-let-value-bind-params-type": { "begin": "(?=[^[:space:]:=])", "end": "(?=[;}=]|\\b(class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-item-let-value-param" }, { "begin": "(?\u003c![:])(:)[[:space:]]*(?![[:space:]]*[:\\)])", "end": "(?=[;}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)", "patterns": [ { "include": "#type-expression-atomic" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] }, "module-item-let-value-bind-parens-params": { "begin": "\\((?![\\)])", "end": "\\)", "patterns": [ { "include": "#operator" }, { "include": "#pattern-parens-lhs" }, { "include": "#type-annotation-rhs" }, { "include": "#pattern" } ] }, "module-item-let-value-bind-pattern": { "begin": "(?\u003c=[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]rec|^rec)", "end": "(?=[;:}=]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-item-let-value-bind-parens-params" }, { "include": "#pattern" } ] }, "module-item-let-value-bind-type": { "begin": "(?\u003c![:])(:)(?![[:space:]]*[:\\)])", "end": "(?==[^\u003e]|[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)", "patterns": [ { "begin": "\\b(type)\\b", "end": "([\\.])", "patterns": [ { "include": "#pattern-variable" } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } }, "endCaptures": { "1": { "name": "entity.name.function" } } }, { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-let-value-param": { "patterns": [ { "include": "#module-item-let-value-param-label" }, { "include": "#module-item-let-value-param-type" }, { "include": "#module-item-let-value-param-module" }, { "include": "#pattern" } ] }, "module-item-let-value-param-label": { "patterns": [ { "begin": "(\\b[[:lower:]][[:word:]]*\\b)?[[:space:]]*(::)", "end": "(?\u003c=[[:space:]])", "patterns": [ { "include": "#pattern" }, { "begin": "(=)", "end": "(\\?)|(?\u003c=[^[:space:]=][[:space:]])(?=[[:space:]]*+[^\\.])", "patterns": [ { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.control.less message.error" } }, "endCaptures": { "1": { "name": "storage.type" } } } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" }, "2": { "name": "keyword.control" } } } ] }, "module-item-let-value-param-module": { "begin": "\\([[:space:]]*(?=\\b(module)\\b)", "end": "\\)", "patterns": [ { "begin": "\\b(module)\\b", "end": "(?=\\))", "patterns": [ { "name": "support.class entity.name.class", "match": "\\b[[:upper:]][[:word:]]*\\b" } ], "beginCaptures": { "1": { "name": "keyword.other message.error" } } } ] }, "module-item-let-value-param-type": { "begin": "\\((?=\\b(type)\\b)", "end": "\\)", "patterns": [ { "begin": "\\b(type)\\b", "end": "(?=\\))", "patterns": [ { "include": "#pattern-variable" } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } } ] }, "module-item-let-value-rec": { "begin": "(?:\\G|^)[[:space:]]*\\b(rec)\\b", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-value-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "keyword.control storage.modifier message.error" } } }, "module-item-module": { "begin": "\\b(module)\\b[[:space:]]*(?!\\b(type)\\b|$)", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-module-and" }, { "include": "#module-item-let-module-rec" }, { "include": "#module-item-let-module-bind-name-params-type-body" } ], "beginCaptures": { "1": { "name": "storage.type message.error" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-module-type": { "begin": "\\b(module)\\b[[:space:]]*(?=\\b(type)\\b|$)", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|val|with)\\b)", "patterns": [ { "begin": "(?:\\G|^)[[:space:]]*\\b(type)\\b", "end": "(?==)", "patterns": [ { "include": "#comment" }, { "match": "([[:upper:]][[:word:]]*)", "captures": { "1": { "name": "support.class entity.name.class" } } } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "begin": "(=)", "end": "(?=;)", "patterns": [ { "include": "#comment" }, { "include": "#signature-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } } ], "beginCaptures": { "1": { "name": "keyword.control message.error" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-open": { "begin": "\\b(open)\\b", "end": "(;)|(?=}|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple" } ], "beginCaptures": { "1": { "name": "keyword.control.open" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-type": { "begin": "\\b(type)\\b", "end": "(;)|(?=[\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-type-and" }, { "include": "#module-item-type-constraint" }, { "include": "#module-item-type-bind" } ], "beginCaptures": { "1": { "name": "keyword.other" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-item-type-and": { "begin": "\\b(and)\\b([[:space:]]*type)?", "end": "(?=[;\\)}]|\\b(class|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#module-item-type-bind-name-tyvars-body" } ], "beginCaptures": { "1": { "name": "keyword.other" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, "module-item-type-bind": { "patterns": [ { "include": "#module-item-type-bind-nonrec" }, { "include": "#module-item-type-bind-name-tyvars-body" } ] }, "module-item-type-bind-body": { "begin": "(\\+?=)", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-type-bind-body-item" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, "module-item-type-bind-body-item": { "patterns": [ { "match": "(=)(?!\u003e)|\\b(private)\\b", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "variable.other.class.js variable.interpolation storage.modifier message.error" } } }, { "match": "\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.\\(])", "captures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "begin": "(\\.\\.)", "end": "(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "beginCaptures": { "1": { "name": "keyword.control.less" } } }, { "begin": "(\\|)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*", "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-constructor" }, { "match": "([:])|\\b(of)\\b", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "keyword.other" } } }, { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, { "match": "(:)|(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(of)\\b", "captures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "2": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "3": { "name": "keyword.other" } } }, { "include": "#type-expression" } ] }, "module-item-type-bind-name-tyvars": { "begin": "(?\u003c=\\G|^|\\.)[[:space:]]*\\b([[:lower:]][[:word:]]*)\\b", "end": "(?=\\+?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#attribute" }, { "name": "comment", "match": "_" }, { "match": "([+\\-])?(?:(_)|(')([[:lower:]][[:word:]]*)\\b)(?!\\.[[:upper:]])", "captures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "2": { "name": "comment" }, "3": { "name": "comment" }, "4": { "name": "variable.parameter string.other.link variable.language" } } } ], "beginCaptures": { "1": { "name": "entity.name.function" } } }, "module-item-type-bind-name-tyvars-body": { "begin": "(?=(\\G|^)[[:space:]]*\\b[[:alpha:]])", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-path-simple-prefix" }, { "include": "#module-item-type-bind-name-tyvars" }, { "include": "#module-item-type-bind-body" } ] }, "module-item-type-bind-nonrec": { "begin": "(?:\\G|^)[[:space:]]*\\b(nonrec)\\b", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-type-bind-name-tyvars-body" } ], "beginCaptures": { "1": { "name": "keyword.control storage.modifier message.error" } } }, "module-item-type-constraint": { "begin": "\\b(constraint)\\b", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "match": "([+\\-])?(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])", "captures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "2": { "name": "comment" }, "3": { "name": "variable.parameter string.other.link variable.language" } } }, { "name": "keyword.control.less", "match": "=" }, { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation storage.modifier message.error" } } }, "module-name-extended": { "patterns": [ { "include": "#module-name-simple" }, { "begin": "([\\(])", "end": "([\\)])", "patterns": [ { "include": "#module-path-extended" } ], "captures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } } ] }, "module-name-simple": { "name": "support.class entity.name.class", "match": "\\b[[:upper:]][[:word:]]*\\b" }, "module-path-extended": { "patterns": [ { "include": "#module-name-extended" }, { "include": "#comment" }, { "begin": "([\\.])", "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])", "patterns": [ { "begin": "(?\u003c=[\\.])", "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])", "patterns": [ { "include": "#comment" }, { "include": "#module-name-extended" } ] } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } } ] }, "module-path-extended-prefix": { "begin": "(?=\\b[[:upper:]])", "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-path-extended" } ], "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "module-path-simple": { "patterns": [ { "include": "#module-name-simple" }, { "include": "#comment" }, { "begin": "([\\.])", "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])", "patterns": [ { "begin": "(?\u003c=[\\.])", "end": "(?\u003c=[[:word:]\\)])|(?=[^\\.[:upper:]/])", "patterns": [ { "include": "#comment" }, { "include": "#module-name-simple" } ] } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] }, "module-path-simple-prefix": { "begin": "(?=\\b[[:upper:]])", "end": "([\\.])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-path-simple" } ], "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "object-item": { "begin": "\\G|(;)", "end": "(?=[;}]|\\b(class|constraint|exception|external|include|let|module|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#class-item-method" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "operator": { "patterns": [ { "include": "#operator-infix" }, { "include": "#operator-prefix" } ] }, "operator-infix": { "patterns": [ { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error", "match": ";" }, { "include": "#operator-infix-assign" }, { "include": "#operator-infix-builtin" }, { "include": "#operator-infix-custom" }, {} ] }, "operator-infix-assign": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error", "match": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])(=)(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])" }, "operator-infix-builtin": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control.less message.error", "match": ":=" }, "operator-infix-custom": { "match": "(?:(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])((\u003c\u003e))(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|([#\\-@*/\u0026%^+\u003c=\u003e$\\\\][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]*|[|][#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]+)", "captures": { "1": {}, "2": { "name": "punctuation.definition.tag.begin.js" }, "3": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "operator-infix-custom-hash": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error", "match": "#[\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+" }, "operator-prefix": { "patterns": [ { "include": "#operator-prefix-bang" }, { "include": "#operator-prefix-label-token" } ] }, "operator-prefix-bang": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error", "match": "![\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]*" }, "operator-prefix-label-token": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error", "match": "[?~][\\-:!?.@*/\u0026%^+\u003c=\u003e|~$]+" }, "pattern": { "patterns": [ { "include": "#attribute" }, { "include": "#comment" }, { "include": "#pattern-atomic" }, { "match": "[[:space:]]*+(?:(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|\\b(as)\\b|(\\.\\.\\.?))[[:space:]]*+", "captures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "2": { "name": "keyword.other" }, "3": { "name": "keyword.control" } } } ] }, "pattern-atomic": { "patterns": [ { "name": "keyword.other", "match": "\\b(exception)\\b" }, { "include": "#value-expression-literal" }, { "include": "#module-path-simple-prefix" }, { "include": "#pattern-list-or-array" }, { "include": "#pattern-record" }, { "include": "#pattern-variable" }, { "include": "#pattern-parens" } ] }, "pattern-guard": { "begin": "\\b(when)\\b", "end": "(?==\u003e)", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.other" } } }, "pattern-list-or-array": { "begin": "(\\[\\|?)(?![@%])", "end": "(\\|?\\])", "patterns": [ { "include": "#value-expression-literal-list-or-array-separator" }, { "include": "#pattern" } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } }, "endCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, "pattern-parens": { "begin": "(?=\\()", "end": "\\)|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#pattern-parens-lhs" }, { "include": "#type-annotation-rhs" } ] }, "pattern-parens-lhs": { "begin": "\\(|(,)", "end": "(?=(?:[,:\\)]))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#pattern" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "pattern-record": { "begin": "{", "end": "}", "patterns": [ { "include": "#comment" }, { "include": "#pattern-record-item" } ] }, "pattern-record-field": { "begin": "\\b([_][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b", "end": "(,)|(?=})", "patterns": [ { "include": "#comment" }, { "begin": "\\G(:)", "end": "(?=[,}])", "patterns": [ { "include": "#pattern" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "beginCaptures": { "1": { "name": "comment" }, "2": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "pattern-record-item": { "patterns": [ { "include": "#module-path-simple-prefix" }, { "include": "#pattern-record-field" } ] }, "pattern-variable": { "patterns": [ { "match": "\\b(_(?:[[:lower:]][[:word:]]*)?)\\b(?!\\.[[:upper:]])", "captures": { "1": { "name": "comment" } } }, { "match": "\\b([[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])", "captures": { "1": { "name": "variable.language string.other.link" } } } ] }, "record-path": { "begin": "\\b[[:lower:]][[:word:]]*\\b", "end": "(?=[^[:space:]\\.])(?!/\\*)", "patterns": [ { "include": "#comment" }, { "include": "#record-path-suffix" } ] }, "record-path-suffix": { "begin": "(\\.)", "end": "(\\))|\\b([[:upper:]][[:word:]]*)\\b|\\b([[:lower:]][[:word:]]*)\\b|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)", "patterns": [ { "include": "#comment" }, { "begin": "([\\(])", "end": "(?=[\\)])", "patterns": [ { "include": "#comment" }, { "match": "\\b([[:lower:]][[:word:]]*)\\b(?=[^\\)]*([\\.]))", "captures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" }, "2": { "name": "keyword.other" } } }, { "name": "keyword.control.less", "match": "([\\.])" }, { "match": "\\b([[:lower:]][[:word:]]*)\\b[[:space:]]*", "captures": { "1": { "name": "variable.parameter string.other.link variable.language" } } }, { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.control" } } } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } }, "endCaptures": { "1": { "name": "keyword.control" }, "2": { "name": "support.class entity.name.class" }, "3": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } } }, "signature-expression": { "patterns": [ { "begin": "(?=\\([[:space:]]*[[:upper:]][[:word:]]*[[:space:]]*:)", "end": "(?=[;])", "patterns": [ { "begin": "(?=\\()", "end": "(?=[;]|=\u003e)", "patterns": [ { "include": "#module-item-let-module-param" } ] }, { "begin": "(=\u003e)", "end": "(?=[;\\(])", "patterns": [ { "include": "#structure-expression" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.control.less" } } } ] }, { "begin": "\\b(module)\\b[[:space:]]*\\b(type)\\b([[:space:]]*\\b(of)\\b)?", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple" }, { "name": "support.class entity.name.class", "match": "\\b([[:upper:]][[:word:]]*)\\b" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.other variable.other.readwrite.instance" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "3": { "name": "markup.inserted keyword.other variable.other.readwrite.instance" } } }, { "include": "#signature-expression-constraints" }, { "include": "#structure-expression" } ] }, "signature-expression-constraints": { "begin": "(?=\\b(with))", "end": "(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val)\\b)", "patterns": [ { "begin": "\\b(and|with)\\b", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "begin": "\\b(type)\\b", "end": "(?=[;\\)}]|\\b(class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)", "patterns": [ { "include": "#module-item-type-and" }, { "include": "#module-item-type-constraint" }, { "include": "#module-item-type-bind" } ], "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "begin": "(?=\\b(module)\\b)", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|val|with)\\b)", "patterns": [ { "begin": "\\b(module)\\b", "end": "(?=:?=|[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple" }, { "name": "support.class entity.name.class", "match": "[[:upper:]][[:word:]]*" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.control storage.type variable.other.readwrite.instance" } } }, { "begin": "(:=)|(=)", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|type|val|with)\\b)", "patterns": [ { "include": "#structure-expression" } ], "beginCaptures": { "1": { "name": "markup.inserted keyword.control.less message.error" }, "2": { "name": "markup.inserted keyword.control.less" } } } ] } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation storage.modifier message.error" } } } ] }, "structure-expression": { "patterns": [ { "include": "#comment" }, { "begin": "\\((?=[[:space:]]*(\\b(val)\\b|[^'\\[\u003c[:lower:]]))", "end": "\\)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#structure-expression-block" }, { "begin": "\\b(val)\\b", "end": "(?=\\))|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "name": "support.class entity.name.class", "match": "\\b([[:lower:]][[:word:]]*)\\b" } ], "beginCaptures": { "1": { "name": "keyword.other" } } }, { "include": "#module-path-simple" }, { "begin": "(:)", "end": "(?=[\\)])|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val)\\b)", "patterns": [ { "include": "#signature-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] }, { "include": "#module-path-simple" }, { "include": "#structure-expression-block" } ] }, "structure-expression-block": { "begin": "{", "end": "}", "patterns": [ { "include": "#structure-expression-block-item" } ] }, "structure-expression-block-item": { "patterns": [ { "include": "#attribute" }, { "include": "#comment" }, { "include": "#module-item-exception" }, { "include": "#module-item-external" }, { "include": "#module-item-include" }, { "include": "#module-item-let" }, { "include": "#module-item-class-type" }, { "include": "#module-item-module-type" }, { "include": "#module-item-module" }, { "include": "#module-item-open" }, { "include": "#module-item-type" } ] }, "type-annotation-rhs": { "begin": "(?\u003c![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])([:])(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])", "end": "(?=\\))|(?=[,;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "type-expression": { "patterns": [ { "name": "entity.name.function", "match": "([\\.])" }, { "include": "#type-expression-atomic" }, { "include": "#type-expression-arrow" } ] }, "type-expression-arrow": { "name": "markup.inserted keyword.control.less", "match": "=\u003e" }, "type-expression-atomic": { "patterns": [ { "include": "#attribute" }, { "include": "#comment" }, { "include": "#module-path-extended-prefix" }, { "include": "#type-expression-label" }, { "name": "variable.other.class.js variable.interpolation storage.modifier message.error", "match": "\\b(as)\\b" }, { "include": "#type-expression-constructor" }, { "include": "#type-expression-object" }, { "include": "#type-expression-parens" }, { "include": "#type-expression-polymorphic-variant" }, { "include": "#type-expression-record" }, { "include": "#type-expression-variable" } ] }, "type-expression-constructor": { "match": "(_)(?![[:alnum:]])|\\b([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])", "captures": { "1": { "name": "comment" }, "2": { "name": "support.type string.regexp" } } }, "type-expression-label": { "begin": "\\b([_[:lower:]][[:word:]]*)\\b(::)", "end": "(?\u003c==\u003e)", "patterns": [ { "include": "#type-expression" }, { "match": "(\\?)", "captures": { "1": { "name": "keyword.control.less" } } } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" }, "2": { "name": "keyword.control" } } }, "type-expression-object": { "begin": "(\u003c)", "end": "(\u003e)", "patterns": [ { "begin": "(\\.\\.)", "end": "(?=\u003e)", "beginCaptures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "begin": "(?=[_[:lower:]])", "end": "(,)|(?=\u003e)", "patterns": [ { "begin": "(?=[_[:lower:]])", "end": "(?=:)", "patterns": [ { "match": "\\b([_[:lower:]][[:word:]]*)\\b", "captures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } } } ] }, { "begin": "(:)", "end": "(?=[,\u003e])", "patterns": [ { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "captures": { "1": { "name": "entity.name.function" } } }, "type-expression-parens": { "begin": "\\(", "end": "\\)", "patterns": [ { "begin": "\\b(module)\\b", "end": "(?=[\\)])", "patterns": [ { "include": "#module-path-extended" }, { "include": "#signature-expression-constraints" } ], "beginCaptures": { "1": { "name": "keyword.other message.error" } } }, { "name": "keyword.control.less", "match": "," }, { "include": "#type-expression" } ] }, "type-expression-polymorphic-variant": { "begin": "(\\[)([\u003c\u003e])?", "end": "(\\])", "patterns": [ { "begin": "(\\|)?(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])[[:space:]]*", "end": "(?=[;)}\\]]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-constructor" }, { "match": "([:])|\\b(of)\\b|([\u0026])", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "keyword.other" }, "3": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, { "include": "#value-expression-constructor-polymorphic" }, { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "captures": { "1": { "name": "entity.name.function" }, "2": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "type-expression-record": { "begin": "{", "end": "}", "patterns": [ { "include": "#type-expression-record-item" } ] }, "type-expression-record-field": { "patterns": [ { "begin": "\\b(mutable)\\b", "end": "(?\u003c=[,])|(?=})", "patterns": [ { "include": "#type-expression-record-field-sans-modifier" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation storage.modifier message.error" } } }, { "include": "#type-expression-record-field-sans-modifier" } ] }, "type-expression-record-field-sans-modifier": { "begin": "\\b([_[:lower:]][[:word:]]*)\\b", "end": "(,)|(?=[,}])", "patterns": [ { "include": "#comment" }, { "begin": "(:)", "end": "(?=[,}])", "patterns": [ { "include": "#type-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "type-expression-record-item": { "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple-prefix" }, { "include": "#type-expression-record-field" } ] }, "type-expression-variable": { "match": "(')([_[:lower:]][[:word:]]*)\\b(?!\\.[[:upper:]])", "captures": { "1": { "name": "comment" }, "2": { "name": "variable.parameter string.other.link variable.language" } } }, "value-expression": { "patterns": [ { "include": "#attribute" }, { "include": "#comment" }, { "include": "#extension-node" }, { "include": "#jsx" }, { "include": "#operator" }, { "include": "#value-expression-builtin" }, { "include": "#value-expression-if-then-else" }, { "include": "#value-expression-atomic" }, { "include": "#module-path-simple-prefix" }, { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error", "match": "[:?]" }, { "include": "#record-path" } ] }, "value-expression-atomic": { "patterns": [ { "include": "#value-expression-literal" }, { "include": "#value-expression-literal-list-or-array" }, { "include": "#value-expression-for" }, { "include": "#value-expression-fun" }, { "include": "#value-expression-block-or-record-or-object" }, { "include": "#value-expression-label" }, { "include": "#value-expression-parens" }, { "include": "#value-expression-switch" }, { "include": "#value-expression-try" }, { "include": "#value-expression-while" } ] }, "value-expression-atomic-with-paths": { "patterns": [ { "include": "#value-expression-atomic" }, { "include": "#module-path-simple-prefix" }, { "include": "#record-path-suffix" } ] }, "value-expression-block": { "begin": "{", "end": "}", "patterns": [ { "include": "#value-expression-block-item" } ] }, "value-expression-block-item": { "patterns": [ { "include": "#module-item-let" }, { "include": "#module-item-open" }, { "include": "#value-expression" } ] }, "value-expression-block-look": { "begin": "(?![[:space:]]*($|\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*(?:,|:(?![=]))))", "end": "(?=})", "patterns": [ { "include": "#value-expression-block-item" } ] }, "value-expression-block-or-record-or-object": { "begin": "{", "end": "}", "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple-prefix" }, { "include": "#value-expression-object-look" }, { "include": "#value-expression-record-look" }, { "include": "#value-expression-block-look" } ] }, "value-expression-builtin": { "match": "\\b(assert|decr|failwith|fprintf|ignore|incr|land|lazy|lor|lsl|lsr|lxor|mod|new|not|printf|ref)\\b|\\b(raise)\\b", "captures": { "1": { "name": "keyword.control message.error" }, "2": { "name": "keyword.control.trycatch" } } }, "value-expression-constructor": { "match": "\\b([[:upper:]][[:word:]]*)\\b(?![[:space:]]*[\\.])", "captures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, "value-expression-constructor-polymorphic": { "match": "(`)([[:alpha:]][[:word:]]*)\\b(?!\\.)", "captures": { "1": { "name": "constant.other.symbol keyword.control.less variable.parameter" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, "value-expression-for": { "begin": "(?=\\b(for)\\b)", "end": "(?\u003c=})|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-for-head" }, { "include": "#value-expression-block" } ] }, "value-expression-for-head": { "begin": "(?=\\b(for)\\b)", "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "begin": "\\b(for)\\b", "end": "(?=\\b(in)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#pattern-variable" } ], "beginCaptures": { "1": { "name": "keyword.control.loop" } } }, { "begin": "\\b(in)\\b", "end": "(?=\\b(to)\\b)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "keyword.control.loop" } } }, { "begin": "\\b(to)\\b", "end": "(?={)|(?=[;]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "keyword.control.loop" } } }, { "include": "#value-expression-block" } ] }, "value-expression-fun": { "begin": "\\b(fun)\\b", "end": "(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-fun-pattern-match-rule-lhs" }, { "include": "#value-expression-fun-pattern-match-rule-rhs" } ], "beginCaptures": { "1": { "name": "keyword.control" } } }, "value-expression-fun-pattern-match-rule-lhs": { "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?\u003c=fun)", "end": "(\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))|(?==\u003e)|(?=[;\\)}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#module-item-let-value-param" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } }, "applyEndPatternLast": true }, "value-expression-fun-pattern-match-rule-rhs": { "begin": "(=\u003e)", "end": "(?=[;\\)}]|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\])|\\b(and)\\b)", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, "value-expression-if-then-else": { "begin": "\\b(if)\\b", "end": "(?=[;\\)\\]}])", "patterns": [ { "include": "#comment" }, { "begin": "\\b(else)\\b", "end": "(?=[;\\)\\]}])", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "keyword.control.conditional" } } }, { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "keyword.control.conditional" } }, "applyEndPatternLast": true }, "value-expression-label": { "begin": "\\b([_[:lower:]][[:word:]]*)\\b[[:space:]]*(::)(\\?)?", "end": "(?![[:space:]])", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" }, "2": { "name": "keyword.control" }, "3": { "name": "storage.type" } } }, "value-expression-lazy": { "match": "\\b(lazy)\\b", "captures": { "1": { "name": "keyword.other" } } }, "value-expression-literal": { "patterns": [ { "include": "#value-expression-literal-boolean" }, { "include": "#value-expression-literal-character" }, { "include": "#value-expression-constructor" }, { "include": "#value-expression-constructor-polymorphic" }, { "include": "#value-expression-lazy" }, { "include": "#value-expression-literal-numeric" }, { "include": "#value-expression-literal-string" }, { "include": "#value-expression-literal-unit" } ] }, "value-expression-literal-boolean": { "name": "entity.other.attribute-name.css constant.language constant.numeric", "match": "\\b(false|true)\\b" }, "value-expression-literal-character": { "name": "constant.character", "match": "(')([[:space:]]|[[:graph:]]|\\\\[\\\\\"'ntbr]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7])(')" }, "value-expression-literal-list-or-array": { "begin": "(\\[\\|?)(?![@%])", "end": "(\\|?\\])", "patterns": [ { "include": "#value-expression-literal-list-or-array-separator" }, { "include": "#value-expression" }, { "include": "#value-expression-literal-list-or-array" } ], "beginCaptures": { "1": { "name": "constant.language.list" } }, "endCaptures": { "1": { "name": "constant.language.list" } } }, "value-expression-literal-list-or-array-separator": { "match": "(,)|(\\.\\.\\.)", "captures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "2": { "name": "keyword.control" } } }, "value-expression-literal-numeric": { "patterns": [ { "match": "([-])?([[:digit:]][_[:digit:]]*)(?:(\\.)([_[:digit:]]*))?(?:([eE])([\\-\\+])?([[:digit:]][_[:digit:]]*))?(?![bBoOxX])", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "constant.numeric" }, "3": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "4": { "name": "constant.numeric" }, "5": { "name": "keyword.control.less" }, "6": { "name": "keyword.control.less" }, "7": { "name": "constant.numeric" } } }, { "match": "([-])?(0[xX])([[:xdigit:]][_[:xdigit:]]*)(?:(\\.)([_[:xdigit:]]*))?(?:([pP])([\\-\\+])?([[:digit:]][_[:digit:]]*))?", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "keyword.control.less" }, "3": { "name": "constant.numeric" }, "4": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" }, "5": { "name": "constant.numeric" }, "6": { "name": "keyword.control.less" }, "7": { "name": "keyword.control.less" }, "8": { "name": "constant.numeric" } } }, { "match": "([-])?(0[oO])([0-7][_0-7]*)", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "keyword.control.less" }, "3": { "name": "constant.numeric" } } }, { "match": "([-])?(0[bB])([0-1][_0-1]*)", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "keyword.control.less" }, "3": { "name": "constant.numeric" } } } ] }, "value-expression-literal-string": { "patterns": [ { "begin": "(?\u003c![[:alpha:]])js_expr(?!=[[:word:]])", "end": "(?\u003c=\")|(\\|)([_[:lower:]]*)?(})|(?=[^[:space:]\"{])", "patterns": [ { "begin": "({)([_[:lower:]]*)?(\\|)", "end": "(?=\\|\\2})", "patterns": [ { "include": "source.js" } ], "beginCaptures": { "1": { "name": "keyword.control.flow message.error" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "3": { "name": "keyword.control.flow message.error" } } }, { "begin": "\"", "end": "\"", "patterns": [ { "include": "source.js" } ] } ], "endCaptures": { "1": { "name": "keyword.control.flow message.error" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "3": { "name": "keyword.control.flow message.error" } } }, { "name": "string.double string.regexp", "begin": "({)([_[:lower:]]*)?(\\|)", "end": "(\\|)(\\2)(})", "beginCaptures": { "1": { "name": "keyword.control.flow message.error" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "3": { "name": "keyword.control.flow message.error" } }, "endCaptures": { "1": { "name": "keyword.control.flow message.error" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "3": { "name": "keyword.control.flow message.error" } } }, { "name": "string.double string.regexp", "begin": "\"", "end": "\"", "patterns": [ { "include": "#value-expression-literal-string-escape" } ] } ] }, "value-expression-literal-string-escape": { "patterns": [ { "name": "constant.character", "match": "\\\\[\\\\\"'ntbr ]|\\\\[[:digit:]][[:digit:]][[:digit:]]|\\\\x[[:xdigit:]][[:xdigit:]]|\\\\o[0-3][0-7][0-7]" }, { "match": "(@)([ \\[\\],.]|\\\\n)", "captures": { "1": { "name": "keyword.control.less" }, "2": { "name": "entity.other.attribute-name.css constant.language constant.numeric" } } }, { "match": "(%)([ads])?", "captures": { "1": { "name": "entity.other.attribute-name.css constant.language constant.numeric" }, "2": { "name": "variable.other.readwrite.instance string.other.link variable.language" } } } ] }, "value-expression-literal-unit": { "name": "constant.language.unit", "match": "\\(\\)" }, "value-expression-object-look": { "begin": "(?:\\G|^)[[:space:]]*(?=method)", "end": "(?=})", "patterns": [ { "include": "#object-item" } ] }, "value-expression-parens": { "begin": "(?=\\()", "end": "(\\))|(?=[;}]|\\b(and|class|constraint|exception|external|include|inherit|let|method|module|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#condition-lhs" }, { "include": "#value-expression-parens-lhs" }, { "include": "#type-annotation-rhs" } ] }, "value-expression-parens-lhs": { "begin": "(\\()|(,)", "end": "(?=[?,:\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "begin": "\\b(module)\\b", "end": "(?=\\))", "patterns": [ { "include": "#module-path-simple" } ], "beginCaptures": { "1": { "name": "keyword.other message.error" } } }, { "include": "#value-expression" } ], "beginCaptures": { "2": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, "value-expression-record-field": { "patterns": [ { "begin": "(\\.\\.\\.)", "end": "(,)|(?=})", "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple-prefix" }, { "begin": "(?=[\\.])", "end": "(?=[:,])", "patterns": [ { "name": "markup.inserted constant.language support.property-value entity.name.filename", "match": "\\b[[:lower:]][[:word:]]*\\b" } ] }, { "begin": "(:)", "end": "(?=[,}])", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "beginCaptures": { "1": { "name": "keyword.control" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, { "begin": "\\b[[:upper:]][[:word:]]*\\b", "end": "(,)|(?=})", "patterns": [ { "include": "#module-path-simple-prefix" }, { "begin": "(:)", "end": "(?=[,}])", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "beginCaptures": { "1": { "name": "support.class entity.name.class" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } }, { "begin": "\\b([[:lower:]][[:word:]]*)\\b", "end": "(,)|(?=})", "patterns": [ { "begin": "(:)", "end": "(?=[,}])", "patterns": [ { "include": "#value-expression" } ], "beginCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ], "beginCaptures": { "1": { "name": "markup.inserted constant.language support.property-value entity.name.filename" } }, "endCaptures": { "1": { "name": "variable.other.class.js variable.interpolation keyword.operator keyword.control message.error" } } } ] }, "value-expression-record-item": { "patterns": [ { "include": "#comment" }, { "include": "#module-path-simple-prefix" }, { "include": "#value-expression-record-field" } ] }, "value-expression-record-look": { "begin": "(?=\\.\\.\\.|([[:upper:]][[:word:]]*\\.)*([[:lower:]][[:word:]]*)[[:space:]]*[,:}])", "end": "(?=})", "patterns": [ { "include": "#value-expression-record-item" } ] }, "value-expression-switch": { "begin": "\\b(switch)\\b", "end": "(?\u003c=})", "patterns": [ { "include": "#value-expression-switch-head" }, { "include": "#value-expression-switch-body" } ], "beginCaptures": { "1": { "name": "keyword.control.switch" } } }, "value-expression-switch-body": { "begin": "{", "end": "}", "patterns": [ { "include": "#comment" }, { "include": "#value-expression-switch-pattern-match-rule" } ] }, "value-expression-switch-head": { "begin": "(?\u003c=switch)", "end": "(?\u003c!switch)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "begin": "\\G[[:space:]]*+{", "end": "}[[:space:]]*+", "patterns": [ { "include": "#value-expression-block-item" } ] }, { "include": "#value-expression-atomic-with-paths" } ] }, "value-expression-switch-pattern-match-rule": { "patterns": [ { "include": "#value-expression-switch-pattern-match-rule-lhs" }, { "include": "#value-expression-switch-pattern-match-rule-rhs" } ] }, "value-expression-switch-pattern-match-rule-lhs": { "begin": "(?=\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))", "end": "(?==\u003e|[;\\)}])", "patterns": [ { "include": "#pattern-guard" }, { "include": "#pattern" } ] }, "value-expression-switch-pattern-match-rule-rhs": { "begin": "(=\u003e)", "end": "(?=}|\\|(?![#\\-:!?.@*/\u0026%^+\u003c=\u003e|~$\\\\]))", "patterns": [ { "include": "#value-expression-block-item" } ], "beginCaptures": { "1": { "name": "keyword.control.less" } } }, "value-expression-try": { "begin": "\\b(try)\\b", "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-try-head" }, { "include": "#value-expression-switch-body" } ], "beginCaptures": { "1": { "name": "keyword.control.trycatch" } } }, "value-expression-try-head": { "begin": "(?\u003c=try)", "end": "(?\u003c!try)(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "begin": "\\G[[:space:]]*+{", "end": "}[[:space:]]*+", "patterns": [ { "include": "#value-expression-block-item" } ] }, { "include": "#value-expression-atomic-with-paths" } ], "beginCaptures": { "1": { "name": "keyword.control" } } }, "value-expression-while": { "begin": "\\b(while)\\b", "end": "(?\u003c=})|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#value-expression-while-head" }, { "include": "#value-expression-block" } ], "beginCaptures": { "1": { "name": "keyword.control.loop" } } }, "value-expression-while-head": { "begin": "(?\u003c=while)[[:space:]]*+", "end": "(?={)|(?=[;\\)]|\\b(and|as|class|constraint|exception|external|include|inherit|let|method|nonrec|open|private|rec|type|val|with)\\b)", "patterns": [ { "include": "#comment" }, { "include": "#value-expression-atomic-with-paths" } ] } } }