{
"$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
// 用于指定和描述VSC语法文件的结构和正确性
"name": "LiteyukiFunction",
// 定义这个自定义语言的名称
"patterns": [
// 一个数组, 包含了用于匹配文本中不同模式的规则, 这些模式将被应用于整个文件, 以提供语法高亮
// patterns数组中的每个对象都定义了一个匹配规则:
{
"include": "#keywords" // "include": "#keywords": 这个规则引用了repository中定义的keywords模式, 这意味着任何匹配keywords模式的文本都将应用该模式定义的高亮
},
{
"include": "#strings" // "include": "#strings": 这个规则引用了repository中定义的strings模式, 这意味着任何匹配strings模式的文本都将应用该模式定义的高亮
}
],
"repository": {
// 一个对象, 包含了可重用的模式定义, 可以在patterns中通过"include"属性引用
// repository对象包含了两个可重用的模式定义:
"keywords": { // "keywords": 定义了一组关键字的模式, 这个模式包含一个数组, 数组中的每个对象都是一个匹配规则
"patterns": [{
"name": "keyword.control.lyf", // "name": "keyword.control.lyf": 定义了匹配到的关键字的作用域名称, 用于高亮显示
"match": "\\b(if|while|for|return)\\b" //"match": "\\b(if|while|for|return)\\b": 正则表达式, 用于匹配if、while、for、return这些关键字, \\b是单词边界, 确保只匹配完整的单词
}]
},
"strings": { // "strings": 定义了字符串的模式, 这个模式包括:
"name": "string.quoted.double.lyf", // "name": "string.quoted.double.lyf": 定义了匹配到的字符串的作用域名称, 用于高亮显示
"begin": "\"", // "begin": "\""
"end": "\"", // "end": "\"": 定义了字符串的开始和结束界定符, 这里是双引号
"patterns": [ // "patterns": 这是一个数组, 包含了字符串内部的模式:
{
"name": "constant.character.escape.lyf", // "name": "constant.character.escape.lyf": 定义了转义字符的作用域名称, 用于高亮显示
"match": "\\\\." // "match": "\\\\.": 正则表达式, 用于匹配字符串中的转义字符, 如 \" 或 \n
}
]
}
},
"scopeName": "source.lyf"
// 定义了语言的作用域名称
}