kjelsrud.dev/node_modules/shiki/languages/powerquery.tmLanguage.json
2023-07-19 21:31:30 +02:00

346 lines
8.3 KiB
JSON

{
"name": "powerquery",
"scopeName": "source.powerquery",
"fileTypes": ["pq", "pqm"],
"uuid": "41968B57-12E6-4AC5-92A4-A837010E8B0A",
"patterns": [
{
"include": "#Noise"
},
{
"include": "#LiteralExpression"
},
{
"include": "#Keywords"
},
{
"include": "#ImplicitVariable"
},
{
"include": "#IntrinsicVariable"
},
{
"include": "#Operators"
},
{
"include": "#DotOperators"
},
{
"include": "#TypeName"
},
{
"include": "#RecordExpression"
},
{
"include": "#Punctuation"
},
{
"include": "#QuotedIdentifier"
},
{
"include": "#Identifier"
}
],
"repository": {
"Keywords": {
"match": "\\b(?:(and|or|not)|(if|then|else)|(try|otherwise)|(as|each|in|is|let|meta|type|error)|(section|shared))\\b",
"captures": {
"1": {
"name": "keyword.operator.word.logical.powerquery"
},
"2": {
"name": "keyword.control.conditional.powerquery"
},
"3": {
"name": "keyword.control.exception.powerquery"
},
"4": {
"name": "keyword.other.powerquery"
},
"5": {
"name": "keyword.powerquery"
}
}
},
"TypeName": {
"match": "\\b(?:(optional|nullable)|(action|any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|null|number|record|table|text|type))\\b",
"captures": {
"1": {
"name": "storage.modifier.powerquery"
},
"2": {
"name": "storage.type.powerquery"
}
}
},
"LiteralExpression": {
"patterns": [
{
"include": "#String"
},
{
"include": "#NumericConstant"
},
{
"include": "#LogicalConstant"
},
{
"include": "#NullConstant"
},
{
"include": "#FloatNumber"
},
{
"include": "#DecimalNumber"
},
{
"include": "#HexNumber"
},
{
"include": "#IntNumber"
}
]
},
"Noise": {
"patterns": [
{
"include": "#BlockComment"
},
{
"include": "#LineComment"
},
{
"include": "#Whitespace"
}
]
},
"Whitespace": {
"match": "\\s+"
},
"BlockComment": {
"begin": "/\\*",
"end": "\\*/",
"name": "comment.block.powerquery"
},
"LineComment": {
"match": "//.*",
"name": "comment.line.double-slash.powerquery"
},
"String": {
"begin": "\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.string.begin.powerquery"
}
},
"end": "\"(?!\")",
"endCaptures": {
"0": {
"name": "punctuation.definition.string.end.powerquery"
}
},
"patterns": [
{
"match": "\"\"",
"name": "constant.character.escape.quote.powerquery"
},
{
"include": "#EscapeSequence"
}
],
"name": "string.quoted.double.powerquery"
},
"QuotedIdentifier": {
"begin": "#\"",
"beginCaptures": {
"0": {
"name": "punctuation.definition.quotedidentifier.begin.powerquery"
}
},
"end": "\"(?!\")",
"endCaptures": {
"0": {
"name": "punctuation.definition.quotedidentifier.end.powerquery"
}
},
"patterns": [
{
"match": "\"\"",
"name": "constant.character.escape.quote.powerquery"
},
{
"include": "#EscapeSequence"
}
],
"name": "entity.name.powerquery"
},
"EscapeSequence": {
"begin": "#\\(",
"beginCaptures": {
"0": {
"name": "punctuation.definition.escapesequence.begin.powerquery"
}
},
"end": "\\)",
"endCaptures": {
"0": {
"name": "punctuation.definition.escapesequence.end.powerquery"
}
},
"patterns": [
{
"match": "(#|\\h{4}|\\h{8}|cr|lf|tab)(?:,(#|\\h{4}|\\h{8}|cr|lf|tab))*"
},
{
"match": "[^\\)]",
"name": "invalid.illegal.escapesequence.powerquery"
}
],
"name": "constant.character.escapesequence.powerquery"
},
"LogicalConstant": {
"match": "\\b(true|false)\\b",
"name": "constant.language.logical.powerquery"
},
"NullConstant": {
"match": "\\b(null)\\b",
"name": "constant.language.null.powerquery"
},
"NumericConstant": {
"match": "(?<![\\d\\w])(#infinity|#nan)\\b",
"captures": {
"1": {
"name": "constant.language.numeric.float.powerquery"
}
}
},
"HexNumber": {
"match": "0(x|X)\\h+",
"name": "constant.numeric.integer.hexadecimal.powerquery"
},
"IntNumber": {
"match": "\\b(\\d+)\\b",
"captures": {
"1": {
"name": "constant.numeric.integer.powerquery"
}
}
},
"DecimalNumber": {
"match": "(?<![\\d\\w])(\\d*\\.\\d+)\\b",
"name": "constant.numeric.decimal.powerquery"
},
"FloatNumber": {
"match": "(\\d*\\.)?\\d+(e|E)(\\+|-)?\\d+",
"name": "constant.numeric.float.powerquery"
},
"InclusiveIdentifier": {
"match": "@",
"captures": {
"0": {
"name": "inclusiveidentifier.powerquery"
}
}
},
"Identifier": {
"match": "(?x:(?<![\\._\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])(@?)([_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}]*(?:\\.[_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])*)\\b)",
"captures": {
"1": {
"name": "keyword.operator.inclusiveidentifier.powerquery"
},
"2": {
"name": "entity.name.powerquery"
}
}
},
"Operators": {
"match": "(=>)|(=)|(<>|<|>|<=|>=)|(&)|(\\+|-|\\*|\\/)|(!)|(\\?)",
"captures": {
"1": {
"name": "keyword.operator.function.powerquery"
},
"2": {
"name": "keyword.operator.assignment-or-comparison.powerquery"
},
"3": {
"name": "keyword.operator.comparison.powerquery"
},
"4": {
"name": "keyword.operator.combination.powerquery"
},
"5": {
"name": "keyword.operator.arithmetic.powerquery"
},
"6": {
"name": "keyword.operator.sectionaccess.powerquery"
},
"7": {
"name": "keyword.operator.optional.powerquery"
}
}
},
"DotOperators": {
"match": "(?<!\\.)(?:(\\.\\.\\.)|(\\.\\.))(?!\\.)",
"captures": {
"1": {
"name": "keyword.operator.ellipsis.powerquery"
},
"2": {
"name": "keyword.operator.list.powerquery"
}
}
},
"RecordExpression": {
"begin": "\\[",
"beginCaptures": {
"0": {
"name": "punctuation.section.brackets.begin.powerquery"
}
},
"end": "\\]",
"endCaptures": {
"0": {
"name": "punctuation.section.brackets.end.powerquery"
}
},
"patterns": [
{
"include": "$self"
}
],
"contentName": "meta.recordexpression.powerquery"
},
"Punctuation": {
"match": "(,)|(\\()|(\\))|({)|(})",
"captures": {
"1": {
"name": "punctuation.separator.powerquery"
},
"2": {
"name": "punctuation.section.parens.begin.powerquery"
},
"3": {
"name": "punctuation.section.parens.end.powerquery"
},
"4": {
"name": "punctuation.section.braces.begin.powerquery"
},
"5": {
"name": "punctuation.section.braces.end.powerquery"
}
}
},
"ImplicitVariable": {
"match": "\\b_\\b",
"name": "keyword.operator.implicitvariable.powerquery"
},
"IntrinsicVariable": {
"match": "(?<![\\d\\w])(#sections|#shared)\\b",
"captures": {
"1": {
"name": "constant.language.intrinsicvariable.powerquery"
}
}
}
}
}