powerquery-language/PowerQuery.tmLanguage

551 строка
15 KiB
Plaintext

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