{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "scopeName": "source.yue", "name": "YueScript", "fileTypes": [ "yue" ], "patterns": [ { "match": "\\A(#!).*$\\n?", "name": "comment.line.shebang.yue", "captures": { "1": { "name": "punctuation.definition.comment.yue" } } }, { "match": "(\\(.*?\\))?\\s*([=-]>)", "name": "meta.inline.function.yue", "captures": { "1": { "name": "variable.parameter.function.yue" }, "2": { "name": "storage.type.function.yue" } } }, { "match": "(?<=^|\\bdo\\b|[=-]>)\\s*(\\(.*?\\))?\\s*(<[=-]\\s*(?=[a-zA-Z_]))", "name": "meta.inline.function.yue", "captures": { "1": { "name": "variable.parameter.function.yue" }, "2": { "name": "storage.type.function.yue" } } }, { "match": "(\\b[A-Z]\\w*)\\s*", "name": "entity.name.type.class.yue", "captures": { "1": { "name": "entity.name.type.class" } } }, { "begin": "\\[(=*)\\[", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.yue" } }, "end": "\\]\\1\\]", "endCaptures": { "0": { "name": "punctuation.definition.string.end.yue" } }, "name": "string.quoted.other.multiline.yue" }, { "begin": "(?", "name": "constant.language.yue" }, { "match": "<>", "name": "constant.language.yue" }, { "match": "<(\"(?:\\\\\"|[^\"])*\")>", "name": "constant.language.yue", "captures": { "1": { "name": "string.quoted.double.yue" } } }, { "match": "<('(?:\\\\'|[^'])*')>", "name": "constant.language.yue", "captures": { "1": { "name": "string.quoted.single.yue" } } }, { "match": "<\\w+>", "name": "invalid.illegal.yue" } ] }, { "match": "(\\+|\\-|\\*|/|%|\\^|//|\\||\\&|>>|<<|(?|>=|<|<=", "name": "keyword.operator.yue" }, { "match": "#|\\-|~|\\?|!", "name": "keyword.operator.yue" }, { "match": "\\|>|=|:=|(?)", "name": "variable.language.yue" }, { "match": "(?x)\n\t\t\t\t(?<=^|\\s)\n\t\t\t\t(?=@?[a-zA-Z\\$_]\\??)\n\t\t\t\t(\n\t\t\t\t\t@?[a-zA-Z\\$_]\\??(\\w|\\$|:|\\.)*\\s*\n\t\t\t\t\t(?=[:=](\\s*\\(.*\\))?\\s*([=-]>))\n\t\t\t\t)\n\t\t\t", "name": "meta.function.yue", "captures": { "1": { "name": "entity.name.function.yue" }, "2": { "name": "entity.name.function.yue" }, "3": { "name": "variable.parameter.function.yue" }, "4": { "name": "storage.type.function.yue" } } }, { "match": "\\b__(class|base|init|inherited|mode|name|add|sub|mul|div|mod|pow|unm|idiv|band|bor|bxor|bnot|shl|shr|concat|len|eq|lt|le|index|newindex|call|metatable|gc|close|tostring|pairs|ipairs)\\b", "name": "entity.name.function.yue" }, { "match": "(?:\\bclass\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(?:\\bextends\\b)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?", "name": "meta.class.yue", "captures": { "1": { "name": "storage.type.class.yue" }, "2": { "name": "entity.name.type.class.yue" }, "3": { "name": "keyword.control.inheritance.yue" }, "4": { "name": "entity.other.inherited-class.yue" } } }, { "match": "(?x)\\b(?>|<<|(?>|<<|(?