UNPKG

tm-grammars

Version:
1,483 lines 96 kB
{ "displayName": "OCaml", "fileTypes": [ ".ml", ".mli" ], "name": "ocaml", "patterns": [ { "include": "#comment" }, { "include": "#pragma" }, { "include": "#decl" } ], "repository": { "attribute": { "begin": "(\\[)\\s*((?<![-!#-\\&*+./:<-@^|~])@{1,3}(?![-!#-\\&*+./:<-@^|~]))", "beginCaptures": { "1": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" }, "2": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": "]", "endCaptures": { "0": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" } }, "patterns": [ { "include": "#attributePayload" } ] }, "attributeIdentifier": { "captures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "punctuation.definition.tag" } }, "match": "((?<![-!#-\\&*+./:<-@^|~])%(?![-!#-\\&*+./:<-@^|~]))((?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*)" }, "attributePayload": { "patterns": [ { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)%)(?![-!#-\\&*+./:<-@^|~])", "end": "((?<![-!#-\\&*+./:<-@^|~])[:?](?![-!#-\\&*+./:<-@^|~]))|(?<=\\s)|(?=])", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "patterns": [ { "include": "#pathModuleExtended" }, { "include": "#pathRecord" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "(?=])", "patterns": [ { "include": "#signature" }, { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)\\?)(?![-!#-\\&*+./:<-@^|~])", "end": "(?=])", "patterns": [ { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)\\?)(?![-!#-\\&*+./:<-@^|~])", "end": "(?=])|\\bwhen\\b", "endCaptures": { "1": { } }, "patterns": [ { "include": "#pattern" } ] }, { "begin": "(?<=(?:\\P{word}|^)when)(?!\\p{word})", "end": "(?=])", "patterns": [ { "include": "#term" } ] } ] }, { "include": "#term" } ] }, "bindClassTerm": { "patterns": [ { "begin": "(?<=(?:\\P{word}|^)(?:and|class|type))(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])(:)|(=)(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "support.type strong" } }, "patterns": [ { "begin": "(?<=(?:\\P{word}|^)(?:and|class|type))(?!\\p{word})", "end": "(?=(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*\\s*,|[^%\\s[:lower:]])|(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*|(?=\\btype\\b)", "endCaptures": { "0": { "name": "entity.name.function strong emphasis" } }, "patterns": [ { "include": "#attributeIdentifier" } ] }, { "begin": "\\[", "captures": { "0": { "name": "punctuation.definition.tag" } }, "end": "]", "patterns": [ { "include": "#type" } ] }, { "include": "#bindTermArgs" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "(?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~])|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "include": "#literalClassType" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\band\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#term" } ] } ] }, "bindClassType": { "patterns": [ { "begin": "(?<=(?:\\P{word}|^)(?:and|class|type))(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])(:)|(=)(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "support.type strong" } }, "patterns": [ { "begin": "(?<=(?:\\P{word}|^)(?:and|class|type))(?!\\p{word})", "end": "(?=(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*\\s*,|[^%\\s[:lower:]])|(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*|(?=\\btype\\b)", "endCaptures": { "0": { "name": "entity.name.function strong emphasis" } }, "patterns": [ { "include": "#attributeIdentifier" } ] }, { "begin": "\\[", "captures": { "0": { "name": "punctuation.definition.tag" } }, "end": "]", "patterns": [ { "include": "#type" } ] }, { "include": "#bindTermArgs" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "(?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~])|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "include": "#literalClassType" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\band\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#literalClassType" } ] } ] }, "bindConstructor": { "patterns": [ { "begin": "(?<=(?:\\P{word}|^)exception)(?!\\p{word})|(?<=[^-!#-\\&*+./:<-@^|~]\\+=|^\\+=|[^-!#-\\&*+./:<-@^|~]=|^=|[^-!#-\\&*+./:<-@^|~]\\||^\\|)(?![-!#-\\&*+./:<-@^|~])", "end": "(:)|\\b(of)\\b|((?<![-!#-\\&*+./:<-@^|~])\\|(?![-!#-\\&*+./:<-@^|~]))|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "punctuation.definition.tag" }, "3": { "name": "support.type strong" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "match": "\\.\\.", "name": "variable.other.class.js message.error variable.interpolation string.regexp" }, { "match": "\\b\\b(?=\\p{upper})[_[:alpha:]]['[:word:]]*\\b(?!\\s*(?:\\.|\\([^*]))", "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" }, { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])|(?<=(?:\\P{word}|^)of)(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])\\|(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "include": "#type" } ] } ] }, "bindSignature": { "patterns": [ { "include": "#comment" }, { "begin": "(?<=(?:\\P{word}|^)type)(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~])", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "include": "#comment" }, { "include": "#pathModuleExtended" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\band\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#signature" } ] } ] }, "bindStructure": { "patterns": [ { "include": "#comment" }, { "begin": "(?<=(?:\\P{word}|^)and)(?!\\p{word})|(?=\\p{upper})", "end": "(?<![-!#-\\&*+./:<-@^|~])(:(?!=))|(:?=)(?![-!#-\\&*+./:<-@^|~])|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "support.type strong" } }, "patterns": [ { "include": "#comment" }, { "match": "\\bmodule\\b", "name": "markup.inserted constant.language support.constant.property-value entity.name.filename" }, { "match": "\\b(?=\\p{upper})[_[:alpha:]]['[:word:]]*", "name": "entity.name.function strong emphasis" }, { "begin": "\\((?!\\))", "captures": { "0": { "name": "punctuation.definition.tag" } }, "end": "\\)", "patterns": [ { "include": "#comment" }, { "begin": "(?<![-!#-\\&*+./:<-@^|~]):(?![-!#-\\&*+./:<-@^|~])", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" } }, "end": "(?=\\))", "patterns": [ { "include": "#signature" } ] }, { "include": "#variableModule" } ] }, { "include": "#literalUnit" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "\\b(and)\\b|((?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~]))|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" }, "2": { "name": "support.type strong" } }, "patterns": [ { "include": "#signature" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]:|^:|[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\b(?:(and)|(with))\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" }, "2": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#structure" } ] } ] }, "bindTerm": { "patterns": [ { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)!)(?![-!#-\\&*+./:<-@^|~])|(?<=(?:\\P{word}|^)(?:and|external|let|method|val))(?!\\p{word})", "end": "\\b(module)\\b|\\b(open)\\b|(?<![-!#-\\&*+./:<-@^|~])(:)|((?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~]))(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "1": { "name": "markup.inserted constant.language support.constant.property-value entity.name.filename" }, "2": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" }, "3": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "4": { "name": "support.type strong" } }, "patterns": [ { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)!)(?![-!#-\\&*+./:<-@^|~])|(?<=(?:\\P{word}|^)(?:and|external|let|method|val))(?!\\p{word})", "end": "(?=\\b(?:module|open)\\b)|(?=(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*\\s*,|[^%\\s[:lower:]])|\\b(rec)\\b|((?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*)", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" }, "2": { "name": "entity.name.function strong emphasis" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#comment" } ] }, { "begin": "(?<=(?:\\P{word}|^)rec)(?!\\p{word})", "end": "((?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*)|(?=[^\\s[:alpha:]])", "endCaptures": { "0": { "name": "entity.name.function strong emphasis" } }, "patterns": [ { "include": "#bindTermArgs" } ] }, { "include": "#bindTermArgs" } ] }, { "begin": "(?<=(?:\\P{word}|^)module)(?!\\p{word})", "end": "(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#declModule" } ] }, { "begin": "(?<=(?:\\P{word}|^)open)(?!\\p{word})", "end": "(?=\\bin\\b)|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#pathModuleSimple" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "(?<![-!#-\\&*+./:<-@^|~])=(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "\\btype\\b|(?=\\S)", "endCaptures": { "0": { "name": "keyword.control" } } }, { "begin": "(?<=(?:\\P{word}|^)type)(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])\\.(?![-!#-\\&*+./:<-@^|~])", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "patterns": [ { "include": "#pattern" } ] }, { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\band\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#term" } ] } ] }, "bindTermArgs": { "patterns": [ { "applyEndPatternLast": true, "begin": "[?~]", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ":|(?=\\S)", "endCaptures": { "0": { "name": "keyword" } }, "patterns": [ { "begin": "(?<=[^-!#-\\&*+./:<-@^|~]~|^~|[^-!#-\\&*+./:<-@^|~]\\?|^\\?)(?![-!#-\\&*+./:<-@^|~])", "end": "(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*|(?<=\\))", "endCaptures": { "0": { "name": "markup.inserted constant.language support.constant.property-value entity.name.filename" } }, "patterns": [ { "include": "#comment" }, { "begin": "\\((?!\\*)", "captures": { "0": { "name": "punctuation.definition.tag" } }, "end": "\\)", "patterns": [ { "begin": "(?<=\\()", "end": "[:=]", "endCaptures": { "0": { "name": "keyword" } }, "patterns": [ { "match": "(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*", "name": "markup.inserted constant.language support.constant.property-value entity.name.filename" } ] }, { "begin": "(?<=:)", "end": "=|(?=\\))", "endCaptures": { "0": { "name": "keyword" } }, "patterns": [ { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "(?=\\))", "patterns": [ { "include": "#term" } ] } ] } ] } ] }, { "include": "#pattern" } ] }, "bindType": { "patterns": [ { "begin": "(?<=(?:\\P{word}|^)(?:and|type))(?!\\p{word})", "end": "(?<![-!#-\\&*+./:<-@^|~])\\+=|=(?![-!#-\\&*+./:<-@^|~])|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "support.type strong" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#pathType" }, { "match": "(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*", "name": "entity.name.function strong" }, { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]\\+|^\\+|[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": "\\band\\b|(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline" } }, "patterns": [ { "include": "#bindConstructor" } ] } ] }, "comment": { "patterns": [ { "include": "#attribute" }, { "include": "#extension" }, { "include": "#commentBlock" }, { "include": "#commentDoc" } ] }, "commentBlock": { "begin": "\\(\\*(?!\\*[^)])", "contentName": "emphasis", "end": "\\*\\)", "name": "comment constant.regexp meta.separator.markdown", "patterns": [ { "include": "#commentBlock" }, { "include": "#commentDoc" } ] }, "commentDoc": { "begin": "\\(\\*\\*", "end": "\\*\\)", "name": "comment constant.regexp meta.separator.markdown", "patterns": [ { "match": "\\*" }, { "include": "#comment" } ] }, "decl": { "patterns": [ { "include": "#declClass" }, { "include": "#declException" }, { "include": "#declInclude" }, { "include": "#declModule" }, { "include": "#declOpen" }, { "include": "#declTerm" }, { "include": "#declType" } ] }, "declClass": { "begin": "\\bclass\\b", "beginCaptures": { "0": { "name": "entity.name.class constant.numeric markup.underline" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#comment" }, { "include": "#pragma" }, { "begin": "(?<=(?:\\P{word}|^)class)(?!\\p{word})", "beginCaptures": { "0": { "name": "entity.name.class constant.numeric markup.underline" } }, "end": "\\btype\\b|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)", "endCaptures": { "0": { "name": "keyword" } }, "patterns": [ { "include": "#bindClassTerm" } ] }, { "begin": "(?<=(?:\\P{word}|^)type)(?!\\p{word})", "end": "(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#bindClassType" } ] } ] }, "declException": { "begin": "\\bexception\\b", "beginCaptures": { "0": { "name": "keyword markup.underline" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#comment" }, { "include": "#pragma" }, { "include": "#bindConstructor" } ] }, "declInclude": { "begin": "\\binclude\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#comment" }, { "include": "#pragma" }, { "include": "#signature" } ] }, "declModule": { "begin": "(?<=(?:\\P{word}|^)module)(?!\\p{word})|\\bmodule\\b", "beginCaptures": { "0": { "name": "markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#comment" }, { "include": "#pragma" }, { "begin": "(?<=(?:\\P{word}|^)module)(?!\\p{word})", "end": "\\b(type)\\b|(?=\\p{upper})", "endCaptures": { "0": { "name": "keyword" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#comment" }, { "match": "\\brec\\b", "name": "variable.other.class.js message.error variable.interpolation string.regexp" } ] }, { "begin": "(?<=(?:\\P{word}|^)type)(?!\\p{word})", "end": "(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#bindSignature" } ] }, { "begin": "(?=\\p{upper})", "end": "(?=;;|[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#bindStructure" } ] } ] }, "declOpen": { "begin": "\\bopen\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#attributeIdentifier" }, { "include": "#comment" }, { "include": "#pragma" }, { "include": "#pathModuleExtended" } ] }, "declTerm": { "begin": "\\b(?:(external|val)|(method)|(let))\\b(!?)", "beginCaptures": { "1": { "name": "support.type markup.underline" }, "2": { "name": "storage.type markup.underline" }, "3": { "name": "keyword.control markup.underline" }, "4": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#comment" }, { "include": "#pragma" }, { "include": "#bindTerm" } ] }, "declType": { "begin": "(?<=(?:\\P{word}|^)type)(?!\\p{word})|\\btype\\b", "beginCaptures": { "0": { "name": "keyword markup.underline" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "include": "#comment" }, { "include": "#pragma" }, { "include": "#bindType" } ] }, "extension": { "begin": "(\\[)((?<![-!#-\\&*+./:<-@^|~])%{1,3}(?![-!#-\\&*+./:<-@^|~]))", "beginCaptures": { "1": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" }, "2": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": "]", "endCaptures": { "0": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" } }, "patterns": [ { "include": "#attributePayload" } ] }, "literal": { "patterns": [ { "include": "#termConstructor" }, { "include": "#literalArray" }, { "include": "#literalBoolean" }, { "include": "#literalCharacter" }, { "include": "#literalList" }, { "include": "#literalNumber" }, { "include": "#literalObjectTerm" }, { "include": "#literalString" }, { "include": "#literalRecord" }, { "include": "#literalUnit" } ] }, "literalArray": { "begin": "\\[\\|", "captures": { "0": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" } }, "end": "\\|]", "patterns": [ { "include": "#term" } ] }, "literalBoolean": { "match": "\\bfalse|true\\b", "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" }, "literalCharacter": { "begin": "(?<!\\p{word})'", "end": "'", "name": "markup.punctuation.quote.beginning", "patterns": [ { "include": "#literalCharacterEscape" } ] }, "literalCharacterEscape": { "match": "\\\\(?:[\"'\\\\bnrt]|\\d\\d\\d|x\\h\\h|o[0-3][0-7][0-7])" }, "literalClassType": { "patterns": [ { "include": "#comment" }, { "begin": "\\bobject\\b", "captures": { "0": { "name": "punctuation.definition.tag emphasis" } }, "end": "\\bend\\b", "patterns": [ { "begin": "\\binherit\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "begin": "\\bas\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#variablePattern" } ] }, { "include": "#type" } ] }, { "include": "#pattern" }, { "include": "#declTerm" } ] }, { "begin": "\\[", "end": "]" } ] }, "literalList": { "patterns": [ { "begin": "\\[", "captures": { "0": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" } }, "end": "]", "patterns": [ { "include": "#term" } ] } ] }, "literalNumber": { "match": "(?<!\\p{alpha})\\d\\d*(\\.\\d\\d*)?", "name": "constant.numeric" }, "literalObjectTerm": { "patterns": [ { "include": "#comment" }, { "begin": "\\bobject\\b", "captures": { "0": { "name": "punctuation.definition.tag emphasis" } }, "end": "\\bend\\b", "patterns": [ { "begin": "\\binherit\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "endCaptures": { "0": { "name": "punctuation.definition.tag" } }, "patterns": [ { "begin": "\\bas\\b", "beginCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "end": ";;|(?=[])}]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)", "patterns": [ { "include": "#variablePattern" } ] }, { "include": "#term" } ] }, { "include": "#pattern" }, { "include": "#declTerm" } ] }, { "begin": "\\[", "end": "]" } ] }, "literalRecord": { "begin": "\\{", "captures": { "0": { "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong" } }, "end": "}", "patterns": [ { "begin": "(?<=[;{])", "end": "(:)|(=)|(;)|(with)|(?=})", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "support.type strong" }, "3": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" }, "4": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "patterns": [ { "include": "#comment" }, { "include": "#pathModulePrefixSimple" }, { "match": "(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*", "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis" } ] }, { "begin": "(?<=(?:\\P{word}|^)with)(?!\\p{word})", "end": "(:)|(=)|(;)|(?=})", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp strong" }, "2": { "name": "support.type strong" }, "3": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "patterns": [ { "match": "(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|[,:@]|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|[->]|if|in|include|inherit|initializer|land|lazy|[(<\\[{]|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|[%+]|private|[\"?]|rec|[]);\\\\}]|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[_[:lower:]])[_[:alpha:]]['[:word:]]*", "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^):)(?![-!#-\\&*+./:<-@^|~])", "end": "(;)|(=)|(?=})", "endCaptures": { "1": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" }, "2": { "name": "support.type strong" } }, "patterns": [ { "include": "#type" } ] }, { "begin": "(?<=(?:[^-!#-\\&*+./:<-@^|~]|^)=)(?![-!#-\\&*+./:<-@^|~])", "end": ";|(?=})", "endCaptures": { "0": { "name": "variable.other.class.js message.error variable.interpolation string.regexp" } }, "patterns": [ { "include": "#term" } ] } ] }, "literalString": { "patterns": [ { "begin": "\"", "end": "\"", "name": "string beginning.punctuation.definition.quote.markdown", "patterns": [ { "include": "#literalStringEscape" } ] }, { "begin": "(\\{)([_[:lower:]]*?)(\\|)", "end": "(\\|)(\\2)(})", "name": "string beginning.punctuation.definition.quote.markdown", "patterns": [ { "include": "#literalStringEscape" } ] } ] }, "literalStringEscape": { "match": "\\\\(?:[\"\\\\bnrt]|\\d\\d\\d|x\\h\\h|o[0-3][0-7][0-7])" }, "literalUnit": { "match": "\\(\\)", "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong" }, "pathModuleExtended": { "patterns": [ { "include": "#pathModulePrefixExtended" }, { "match": "\\b(?=\\p{upper})[_[:alpha:]]['[:word:]]*", "name": "entity.name.class constant.numeric" } ] }, "pathModulePrefixExtended": { "begin": "\\b(?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\.|$|\\()", "beginCaptures": { "0": { "name": "entity.name.class constant.numeric" } }, "end": "(?![.\\s]|$|\\()", "patterns": [ { "include": "#comment" }, { "begin": "\\(", "captures": { "0": { "name": "keyword.control" } }, "end": "\\)", "patterns": [ { "match": "\\b((?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\)))", "name": "string.other.link variable.language variable.parameter emphasis" }, { "include": "#structure" } ] }, { "begin": "(?<![-!#-\\&*+./:<-@^|~])\\.(?![-!#-\\&*+./:<-@^|~])", "beginCaptures": { "0": { "name": "keyword strong" } }, "end": "\\b((?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\.|$))|\\b((?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*(?:$|\\()))|\\b((?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\)))|(?![.\\s[:upper:]]|$|\\()", "endCaptures": { "1": { "name": "entity.name.class constant.numeric" }, "2": { "name": "entity.name.function strong" }, "3": { "name": "string.other.link variable.language variable.parameter emphasis" } } } ] }, "pathModulePrefixExtendedParens": { "begin": "\\(", "captures": { "0": { "name": "keyword.control" } }, "end": "\\)", "patterns": [ { "match": "\\b((?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\)))", "name": "string.other.link variable.language variable.parameter emphasis" }, { "include": "#structure" } ] }, "pathModulePrefixSimple": { "begin": "\\b(?=\\p{upper})[_[:alpha:]]['[:word:]]*(?=\\s*\\.)", "beginCaptures": { "0": { "name": "entity.name.class constant.numeric" } }, "end": "(?![.\\s])", "pattern