powerquery-language/PowerQuery.tmLanguage

1580 строки
34 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>fileTypes</key>
<array>
<string>pq</string>
<string>PQ</string>
<string>pqm</string>
<string>PQM</string>
</array>
<key>name</key>
<string>powerquery</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>begin</key>
<string>\[</string>
<key>beginCaptures</key>
<dict>
<key>1</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>name</key>
<string>meta.literal-attribute.powerquery</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>include</key>
<string>#PowerQueryExpression</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#PowerQueryExpression</string>
</dict>
<dict>
<key>begin</key>
<string>\b(section)\b</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.other.section.powerquery</string>
</dict>
</dict>
<key>end</key>
<string>;</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.terminator.sectiondeclaration.powerquery</string>
</dict>
</dict>
<key>name</key>
<string>meta.sectiondeclaration.powerquery</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>include</key>
<string>#SectionName</string>
</dict>
<dict>
<key>match</key>
<string>[^\s]</string>
<key>name</key>
<string>invalid.illegal.powerquery</string>
</dict>
</array>
</dict>
<dict>
<key>begin</key>
<string>\b(shared)\b</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.other.shared.powerquery</string>
</dict>
</dict>
<key>end</key>
<string>;</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.terminator.sectionmember.powerquery</string>
</dict>
</dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>include</key>
<string>#Section</string>
</dict>
</array>
</dict>
<dict>
<key>include</key>
<string>#IllegalOperator</string>
</dict>
<dict>
<key>include</key>
<string>#Section</string>
</dict>
</array>
<key>repository</key>
<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>BuiltInFunctions</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>match</key>
<string>(?x:\b(
Access.Database
| Action.Return
| Action.Sequence
| Action.Try
| ActiveDirectory.Domains
| AdoDotNet.DataSource
| AdoDotNet.Query
| AdobeAnalytics.Cubes
| AnalysisServices.Database
| AnalysisServices.Databases
| AzureStorage.BlobContents
| AzureStorage.Blobs
| AzureStorage.Tables
| Binary.Buffer
| Binary.Combine
| Binary.Compress
| Binary.Decompress
| Binary.End
| Binary.From
| Binary.FromList
| Binary.FromText
| Binary.InferContentType
| Binary.Length
| Binary.ToList
| Binary.ToText
| BinaryFormat.7BitEncodedSignedInteger
| BinaryFormat.7BitEncodedUnsignedInteger
| BinaryFormat.Binary
| BinaryFormat.Byte
| BinaryFormat.ByteOrder
| BinaryFormat.Choice
| BinaryFormat.Decimal
| BinaryFormat.Double
| BinaryFormat.Group
| BinaryFormat.Length
| BinaryFormat.List
| BinaryFormat.Null
| BinaryFormat.Record
| BinaryFormat.SignedInteger16
| BinaryFormat.SignedInteger32
| BinaryFormat.SignedInteger64
| BinaryFormat.Single
| BinaryFormat.Text
| BinaryFormat.Transform
| BinaryFormat.UnsignedInteger16
| BinaryFormat.UnsignedInteger32
| BinaryFormat.UnsignedInteger64
| Byte.From
| Character.FromNumber
| Character.ToNumber
| Combiner.CombineTextByDelimiter
| Combiner.CombineTextByEachDelimiter
| Combiner.CombineTextByLengths
| Combiner.CombineTextByPositions
| Combiner.CombineTextByRanges
| Comparer.Equals
| Comparer.FromCulture
| Comparer.Ordinal
| Comparer.OrdinalIgnoreCase
| Csv.Document
| Cube.AddAndExpandDimensionColumn
| Cube.AddMeasureColumn
| Cube.ApplyParameter
| Cube.AttributeMemberId
| Cube.AttributeMemberProperty
| Cube.CollapseAndRemoveColumns
| Cube.Dimensions
| Cube.DisplayFolders
| Cube.Measures
| Cube.Parameters
| Cube.Properties
| Cube.PropertyKey
| Cube.ReplaceDimensions
| Cube.Transform
| Currency.From
| DB2.Database
| Date.AddDays
| Date.AddMonths
| Date.AddQuarters
| Date.AddWeeks
| Date.AddYears
| Date.Day
| Date.DayOfWeek
| Date.DayOfWeekName
| Date.DayOfYear
| Date.DaysInMonth
| Date.EndOfDay
| Date.EndOfMonth
| Date.EndOfQuarter
| Date.EndOfWeek
| Date.EndOfYear
| Date.From
| Date.FromText
| Date.IsInCurrentDay
| Date.IsInCurrentMonth
| Date.IsInCurrentQuarter
| Date.IsInCurrentWeek
| Date.IsInCurrentYear
| Date.IsInNextDay
| Date.IsInNextMonth
| Date.IsInNextNDays
| Date.IsInNextNMonths
| Date.IsInNextNQuarters
| Date.IsInNextNWeeks
| Date.IsInNextNYears
| Date.IsInNextQuarter
| Date.IsInNextWeek
| Date.IsInNextYear
| Date.IsInPreviousDay
| Date.IsInPreviousMonth
| Date.IsInPreviousNDays
| Date.IsInPreviousNMonths
| Date.IsInPreviousNQuarters
| Date.IsInPreviousNWeeks
| Date.IsInPreviousNYears
| Date.IsInPreviousQuarter
| Date.IsInPreviousWeek
| Date.IsInPreviousYear
| Date.IsInYearToDate
| Date.IsLeapYear
| Date.Month
| Date.MonthName
| Date.QuarterOfYear
| Date.StartOfDay
| Date.StartOfMonth
| Date.StartOfQuarter
| Date.StartOfWeek
| Date.StartOfYear
| Date.ToRecord
| Date.ToText
| Date.WeekOfMonth
| Date.WeekOfYear
| Date.Year
| DateTime.AddZone
| DateTime.Date
| DateTime.FixedLocalNow
| DateTime.From
| DateTime.FromFileTime
| DateTime.FromText
| DateTime.IsInCurrentHour
| DateTime.IsInCurrentMinute
| DateTime.IsInCurrentSecond
| DateTime.IsInNextHour
| DateTime.IsInNextMinute
| DateTime.IsInNextNHours
| DateTime.IsInNextNMinutes
| DateTime.IsInNextNSeconds
| DateTime.IsInNextSecond
| DateTime.IsInPreviousHour
| DateTime.IsInPreviousMinute
| DateTime.IsInPreviousNHours
| DateTime.IsInPreviousNMinutes
| DateTime.IsInPreviousNSeconds
| DateTime.IsInPreviousSecond
| DateTime.LocalNow
| DateTime.Time
| DateTime.ToRecord
| DateTime.ToText
| DateTimeZone.FixedLocalNow
| DateTimeZone.FixedUtcNow
| DateTimeZone.From
| DateTimeZone.FromFileTime
| DateTimeZone.FromText
| DateTimeZone.LocalNow
| DateTimeZone.RemoveZone
| DateTimeZone.SwitchZone
| DateTimeZone.ToLocal
| DateTimeZone.ToRecord
| DateTimeZone.ToText
| DateTimeZone.ToUtc
| DateTimeZone.UtcNow
| DateTimeZone.ZoneHours
| DateTimeZone.ZoneMinutes
| Decimal.From
| Diagnostics.ActivityId
| Diagnostics.Trace
| DirectQueryCapabilities.From
| Double.From
| Duration.Days
| Duration.From
| Duration.FromText
| Duration.Hours
| Duration.Minutes
| Duration.Seconds
| Duration.ToRecord
| Duration.ToText
| Duration.TotalDays
| Duration.TotalHours
| Duration.TotalMinutes
| Duration.TotalSeconds
| Embedded.Value
| Error.Record
| Excel.CurrentWorkbook
| Excel.Workbook
| Exchange.Contents
| Expression.Constant
| Expression.Evaluate
| Expression.Identifier
| Facebook.Graph
| File.Contents
| Folder.Contents
| Folder.Files
| Function.From
| Function.Invoke
| Function.InvokeAfter
| Function.IsDataSource
| GoogleAnalytics.Accounts
| Guid.From
| HdInsight.Containers
| HdInsight.Contents
| HdInsight.Files
| Hdfs.Contents
| Hdfs.Files
| Informix.Database
| Int16.From
| Int32.From
| Int64.From
| Int8.From
| ItemExpression.From
| Json.Document
| Json.FromValue
| Lines.FromBinary
| Lines.FromText
| Lines.ToBinary
| Lines.ToText
| List.Accumulate
| List.AllTrue
| List.Alternate
| List.AnyTrue
| List.Average
| List.Buffer
| List.Combine
| List.Contains
| List.ContainsAll
| List.ContainsAny
| List.Count
| List.Covariance
| List.DateTimeZones
| List.DateTimes
| List.Dates
| List.Difference
| List.Distinct
| List.Durations
| List.FindText
| List.First
| List.FirstN
| List.Generate
| List.InsertRange
| List.Intersect
| List.IsDistinct
| List.IsEmpty
| List.Last
| List.LastN
| List.MatchesAll
| List.MatchesAny
| List.Max
| List.MaxN
| List.Median
| List.Min
| List.MinN
| List.Mode
| List.Modes
| List.NonNullCount
| List.Numbers
| List.PositionOf
| List.PositionOfAny
| List.Positions
| List.Product
| List.Random
| List.Range
| List.RemoveFirstN
| List.RemoveItems
| List.RemoveLastN
| List.RemoveMatchingItems
| List.RemoveNulls
| List.RemoveRange
| List.Repeat
| List.ReplaceMatchingItems
| List.ReplaceRange
| List.ReplaceValue
| List.Reverse
| List.Select
| List.Single
| List.SingleOrDefault
| List.Skip
| List.Sort
| List.StandardDeviation
| List.Sum
| List.Times
| List.Transform
| List.TransformMany
| List.Union
| List.Zip
| Logical.From
| Logical.FromText
| Logical.ToText
| MQ.Queue
| MySQL.Database
| Number.Abs
| Number.Acos
| Number.Asin
| Number.Atan
| Number.Atan2
| Number.BitwiseAnd
| Number.BitwiseNot
| Number.BitwiseOr
| Number.BitwiseShiftLeft
| Number.BitwiseShiftRight
| Number.BitwiseXor
| Number.Combinations
| Number.Cos
| Number.Cosh
| Number.Exp
| Number.Factorial
| Number.From
| Number.FromText
| Number.IntegerDivide
| Number.IsEven
| Number.IsNaN
| Number.IsOdd
| Number.Ln
| Number.Log
| Number.Log10
| Number.Mod
| Number.Permutations
| Number.Power
| Number.Random
| Number.RandomBetween
| Number.Round
| Number.RoundAwayFromZero
| Number.RoundDown
| Number.RoundTowardZero
| Number.RoundUp
| Number.Sign
| Number.Sin
| Number.Sinh
| Number.Sqrt
| Number.Tan
| Number.Tanh
| Number.ToText
| OData.Feed
| Odbc.DataSource
| Odbc.Query
| OleDb.DataSource
| OleDb.Query
| Oracle.Database
| Percentage.From
| PostgreSQL.Database
| RData.FromBinary
| Record.AddField
| Record.Combine
| Record.Field
| Record.FieldCount
| Record.FieldNames
| Record.FieldOrDefault
| Record.FieldValues
| Record.FromList
| Record.FromTable
| Record.HasFields
| Record.RemoveFields
| Record.RenameFields
| Record.ReorderFields
| Record.SelectFields
| Record.ToList
| Record.ToTable
| Record.TransformFields
| Replacer.ReplaceText
| Replacer.ReplaceValue
| RowExpression.Column
| RowExpression.From
| Salesforce.Data
| Salesforce.Reports
| SapBusinessWarehouse.Cubes
| SapHana.Database
| SharePoint.Contents
| SharePoint.Files
| SharePoint.Tables
| Single.From
| Soda.Feed
| Splitter.SplitByNothing
| Splitter.SplitTextByAnyDelimiter
| Splitter.SplitTextByDelimiter
| Splitter.SplitTextByEachDelimiter
| Splitter.SplitTextByLengths
| Splitter.SplitTextByPositions
| Splitter.SplitTextByRanges
| Splitter.SplitTextByRepeatedLengths
| Splitter.SplitTextByWhitespace
| Sql.Database
| Sql.Databases
| SqlExpression.SchemaFrom
| SqlExpression.ToExpression
| Sybase.Database
| Table.AddColumn
| Table.AddIndexColumn
| Table.AddJoinColumn
| Table.AddKey
| Table.AggregateTableColumn
| Table.AlternateRows
| Table.Buffer
| Table.Column
| Table.ColumnCount
| Table.ColumnNames
| Table.ColumnsOfType
| Table.Combine
| Table.CombineColumns
| Table.Contains
| Table.ContainsAll
| Table.ContainsAny
| Table.DemoteHeaders
| Table.Distinct
| Table.DuplicateColumn
| Table.ExpandListColumn
| Table.ExpandRecordColumn
| Table.ExpandTableColumn
| Table.FillDown
| Table.FillUp
| Table.FilterWithDataTable
| Table.FindText
| Table.First
| Table.FirstN
| Table.FirstValue
| Table.FromColumns
| Table.FromList
| Table.FromPartitions
| Table.FromRecords
| Table.FromRows
| Table.FromValue
| Table.Group
| Table.HasColumns
| Table.InsertRows
| Table.IsDistinct
| Table.IsEmpty
| Table.Join
| Table.Keys
| Table.Last
| Table.LastN
| Table.MatchesAllRows
| Table.MatchesAnyRows
| Table.Max
| Table.MaxN
| Table.Min
| Table.MinN
| Table.NestedJoin
| Table.Partition
| Table.PartitionValues
| Table.Pivot
| Table.PositionOf
| Table.PositionOfAny
| Table.PrefixColumns
| Table.Profile
| Table.PromoteHeaders
| Table.Range
| Table.RemoveColumns
| Table.RemoveFirstN
| Table.RemoveLastN
| Table.RemoveMatchingRows
| Table.RemoveRows
| Table.RemoveRowsWithErrors
| Table.RenameColumns
| Table.ReorderColumns
| Table.Repeat
| Table.ReplaceErrorValues
| Table.ReplaceKeys
| Table.ReplaceMatchingRows
| Table.ReplaceRelationshipIdentity
| Table.ReplaceRows
| Table.ReplaceValue
| Table.ReverseRows
| Table.RowCount
| Table.Schema
| Table.SelectColumns
| Table.SelectRows
| Table.SelectRowsWithErrors
| Table.SingleRow
| Table.Skip
| Table.Sort
| Table.SplitColumn
| Table.ToColumns
| Table.ToList
| Table.ToRecords
| Table.ToRows
| Table.TransformColumnNames
| Table.TransformColumnTypes
| Table.TransformColumns
| Table.TransformRows
| Table.Transpose
| Table.Unpivot
| Table.UnpivotOtherColumns
| Table.View
| Table.ViewFunction
| TableAction.DeleteRows
| TableAction.InsertRows
| TableAction.UpdateRows
| Tables.GetRelationships
| Teradata.Database
| Text.AfterDelimiter
| Text.At
| Text.BeforeDelimiter
| Text.BetweenDelimiters
| Text.Clean
| Text.Combine
| Text.Contains
| Text.End
| Text.EndsWith
| Text.Format
| Text.From
| Text.FromBinary
| Text.Insert
| Text.Length
| Text.Lower
| Text.Middle
| Text.NewGuid
| Text.PadEnd
| Text.PadStart
| Text.PositionOf
| Text.PositionOfAny
| Text.Proper
| Text.Range
| Text.Remove
| Text.RemoveRange
| Text.Repeat
| Text.Replace
| Text.ReplaceRange
| Text.Select
| Text.Split
| Text.SplitAny
| Text.Start
| Text.StartsWith
| Text.ToBinary
| Text.ToList
| Text.Trim
| Text.TrimEnd
| Text.TrimStart
| Text.Upper
| Time.EndOfHour
| Time.From
| Time.FromText
| Time.Hour
| Time.Minute
| Time.Second
| Time.StartOfHour
| Time.ToRecord
| Time.ToText
| Type.AddTableKey
| Type.ClosedRecord
| Type.Facets
| Type.ForFunction
| Type.ForRecord
| Type.FunctionParameters
| Type.FunctionRequiredParameters
| Type.FunctionReturn
| Type.Is
| Type.IsNullable
| Type.IsOpenRecord
| Type.ListItem
| Type.NonNullable
| Type.OpenRecord
| Type.RecordFields
| Type.ReplaceFacets
| Type.ReplaceTableKeys
| Type.TableColumn
| Type.TableKeys
| Type.TableRow
| Type.TableSchema
| Type.Union
| Uri.BuildQueryString
| Uri.Combine
| Uri.EscapeDataString
| Uri.Parts
| Value.Add
| Value.As
| Value.Compare
| Value.Divide
| Value.Equals
| Value.Firewall
| Value.FromText
| Value.Is
| Value.Metadata
| Value.Multiply
| Value.NativeQuery
| Value.NullableEquals
| Value.RemoveMetadata
| Value.ReplaceMetadata
| Value.ReplaceType
| Value.Subtract
| Value.Type
| ValueAction.NativeStatement
| ValueAction.Replace
| Variable.Value
| Web.Contents
| Web.Page
| WebAction.Request
| Xml.Document
| Xml.Tables)\b)</string>
<key>name</key>
<string>support.function.powerquery</string>
</dict>
<dict>
<key>match</key>
<string>(?x:\b(Action.Type
| Any.Type
| Binary.Type
| BinaryEncoding.Type
| BinaryOccurrence.Type
| Byte.Type
| ByteOrder.Type
| Character.Type
| Compression.Type
| CsvStyle.Type
| Currency.Type
| Date.Type
| DateTime.Type
| DateTimeZone.Type
| Day.Type
| Decimal.Type
| Double.Type
| Duration.Type
| ExtraValues.Type
| Function.Type
| GroupKind.Type
| Guid.Type
| Int16.Type
| Int32.Type
| Int64.Type
| Int8.Type
| JoinAlgorithm.Type
| JoinKind.Type
| JoinSide.Type
| List.Type
| Logical.Type
| MissingField.Type
| None.Type
| Null.Type
| Number.Type
| Occurrence.Type
| Order.Type
| Password.Type
| Percentage.Type
| Precision.Type
| QuoteStyle.Type
| Record.Type
| RelativePosition.Type
| RoundingMode.Type
| SapHanaDistribution.Type
| SapHanaRangeOperator.Type
| Single.Type
| Table.Type
| Text.Type
| TextEncoding.Type
| Time.Type
| TraceLevel.Type
| Type.Type
| Uri.Type
| WebMethod.Type)\b)</string>
<key>name</key>
<string>support.type.powerquery</string>
</dict>
<dict>
<key>match</key>
<string>(?x:\b(BinaryEncoding.Base64
| BinaryEncoding.Hex
| BinaryOccurrence.Optional
| BinaryOccurrence.Repeating
| BinaryOccurrence.Required
| ByteOrder.BigEndian
| ByteOrder.LittleEndian
| Compression.Deflate
| Compression.GZip
| CsvStyle.QuoteAfterDelimiter
| CsvStyle.QuoteAlways
| Culture.Current
| Day.Friday
| Day.Monday
| Day.Saturday
| Day.Sunday
| Day.Thursday
| Day.Tuesday
| Day.Wednesday
| ExtraValues.Error
| ExtraValues.Ignore
| ExtraValues.List
| GroupKind.Global
| GroupKind.Local
| JoinAlgorithm.Dynamic
| JoinAlgorithm.LeftHash
| JoinAlgorithm.LeftIndex
| JoinAlgorithm.PairwiseHash
| JoinAlgorithm.RightHash
| JoinAlgorithm.RightIndex
| JoinAlgorithm.SortMerge
| JoinKind.FullOuter
| JoinKind.Inner
| JoinKind.LeftAnti
| JoinKind.LeftOuter
| JoinKind.RightAnti
| JoinKind.RightOuter
| JoinSide.Left
| JoinSide.Right
| MissingField.Error
| MissingField.Ignore
| MissingField.UseNull
| Number.E
| Number.Epsilon
| Number.NaN
| Number.NegativeInfinity
| Number.PI
| Number.PositiveInfinity
| Occurrence.All
| Occurrence.First
| Occurrence.Last
| Occurrence.Optional
| Occurrence.Repeating
| Occurrence.Required
| Order.Ascending
| Order.Descending
| Precision.Decimal
| Precision.Double
| QuoteStyle.Csv
| QuoteStyle.None
| RelativePosition.FromEnd
| RelativePosition.FromStart
| RoundingMode.AwayFromZero
| RoundingMode.Down
| RoundingMode.ToEven
| RoundingMode.TowardZero
| RoundingMode.Up
| SapHanaDistribution.All
| SapHanaDistribution.Connection
| SapHanaDistribution.Off
| SapHanaDistribution.Statement
| SapHanaRangeOperator.Equals
| SapHanaRangeOperator.GreaterThan
| SapHanaRangeOperator.GreaterThanOrEquals
| SapHanaRangeOperator.LessThan
| SapHanaRangeOperator.LessThanOrEquals
| SapHanaRangeOperator.NotEquals
| TextEncoding.Ascii
| TextEncoding.BigEndianUnicode
| TextEncoding.Unicode
| TextEncoding.Utf16
| TextEncoding.Utf8
| TextEncoding.Windows
| TraceLevel.Critical
| TraceLevel.Error
| TraceLevel.Information
| TraceLevel.Verbose
| TraceLevel.Warning
| WebMethod.Delete
| WebMethod.Get
| WebMethod.Head
| WebMethod.Patch
| WebMethod.Post
| WebMethod.Put)\b)</string>
<key>name</key>
<string>support.constant.powerquery</string>
</dict>
</array>
</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>DotOperators</key>
<dict>
<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>
<key>match</key>
<string>(?&lt;!\.)(?:(\.\.\.)|(\.\.))(?!\.)</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>name</key>
<string>constant.character.escapesequence.powerquery</string>
<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>
</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>HexNumber</key>
<dict>
<key>match</key>
<string>0(x|X)\h+</string>
<key>name</key>
<string>constant.numeric.integer.hexadecimal.powerquery</string>
</dict>
<key>Identifier</key>
<dict>
<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>
<key>match</key>
<string>(?x:
# look-behind; identifier must not follow an identifier-part-char or a dot
(?&lt;![\._\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}\p{Pc}\p{Mn}\p{Mc}\p{Cf}])
# Optional @ symbol
(@?)
# start of captured group
(
# identifier-start-character
[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
# 0-or-more identifier-part-characters
[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}\p{Pc}\p{Mn}\p{Mc}\p{Cf}]*
# optionally followed by zero-or-more of this group
(?:
# dot
\.
# identifier-start-character
[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]
# 0-or-more identifier-part-characters
[_\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}\p{Nd}\p{Pc}\p{Mn}\p{Mc}\p{Cf}]*
)*
# end of captured group, and word boundary
) \b
)</string>
</dict>
<key>IllegalOperator</key>
<dict>
<key>match</key>
<string>&gt;|&lt;|=|&amp;|\+|-|\*|\/|!|\?|\.|,|\(|\)|\{|\}|_</string>
<key>name</key>
<string>invalid.illegal.keyword.operator.powerquery</string>
</dict>
<key>ImplicitVariable</key>
<dict>
<key>match</key>
<string>\b_\b</string>
<key>name</key>
<string>keyword.operator.implicitvariable.powerquery</string>
</dict>
<key>InclusiveIdentifier</key>
<dict>
<key>captures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>inclusiveidentifier.powerquery</string>
</dict>
</dict>
<key>match</key>
<string>@</string>
</dict>
<key>IntNumber</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.numeric.integer.powerquery</string>
</dict>
</dict>
<key>match</key>
<string>\b(\d+)\b</string>
</dict>
<key>IntrinsicVariable</key>
<dict>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.intrinsicvariable.powerquery</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;![\d\w])(#sections|#shared)\b</string>
</dict>
<key>Keywords</key>
<dict>
<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>
</dict>
<key>match</key>
<string>\b(?:(and|or|not)|(if|then|else)|(try|error|otherwise)|(as|each|in|is|let|meta|type|shared|section))\b</string>
</dict>
<key>LineComment</key>
<dict>
<key>match</key>
<string>//.*</string>
<key>name</key>
<string>comment.line.double-slash.powerquery</string>
</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>LogicalConstant</key>
<dict>
<key>match</key>
<string>\b(true|false)\b</string>
<key>name</key>
<string>constant.language.logical.powerquery</string>
</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>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>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>constant.language.numeric.float.powerquery</string>
</dict>
</dict>
<key>match</key>
<string>(?&lt;![\d\w])(#infinity|#nan)\b</string>
</dict>
<key>Operators</key>
<dict>
<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>
<key>match</key>
<string>(=&gt;)|(=)|(&lt;&gt;|&lt;|&gt;|&lt;=|&gt;=)|(&amp;)|(\+|-|\*|\/)|(!)|(\?)</string>
</dict>
<key>PowerQueryExpression</key>
<dict>
<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>#BuiltInFunctions</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>
</dict>
<key>Punctuation</key>
<dict>
<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>
<key>match</key>
<string>(,)|(\()|(\))|({)|(})</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>name</key>
<string>entity.name.powerquery</string>
<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>
</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>contentName</key>
<string>meta.recordexpression.powerquery</string>
<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>
</dict>
<key>Section</key>
<dict>
<key>begin</key>
<string>([_\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}]*)*)</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.sectionmember.powerquery</string>
</dict>
</dict>
<key>end</key>
<string>(?=;)</string>
<key>endCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>punctuation.terminator.sectionmember.powerquery</string>
</dict>
</dict>
<key>name</key>
<string>meta.sectionmember.powerquery</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#SectionMemberPatterns</string>
</dict>
</array>
</dict>
<key>SectionMemberPatterns</key>
<dict>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>match</key>
<string>[^\s=]</string>
<key>name</key>
<string>invalid.illegal.powerquery</string>
</dict>
<dict>
<key>begin</key>
<string>=</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
<dict>
<key>name</key>
<string>keyword.operator.assignment.powerquery</string>
</dict>
</dict>
<key>contentName</key>
<string>meta.expression.powerquery</string>
<key>end</key>
<string>(?=;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#PowerQueryExpression</string>
</dict>
</array>
</dict>
</array>
</dict>
<key>SectionName</key>
<dict>
<key>begin</key>
<string>([_\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}]*)*)\s*</string>
<key>beginCaptures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>entity.name.section.powerquery</string>
</dict>
</dict>
<key>end</key>
<string>(?=;)</string>
<key>patterns</key>
<array>
<dict>
<key>include</key>
<string>#Noise</string>
</dict>
<dict>
<key>match</key>
<string>[^\s;]</string>
<key>name</key>
<string>invalid.illegal.powerquery</string>
</dict>
</array>
</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>name</key>
<string>string.quoted.double.powerquery</string>
<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>
</dict>
<key>TypeName</key>
<dict>
<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>
<key>match</key>
<string>\b(?:(optional|nullable)|(any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|null|number|record|table|text|type))\b</string>
</dict>
<key>Whitespace</key>
<dict>
<key>match</key>
<string>\s*</string>
</dict>
</dict>
<key>scopeName</key>
<string>source.powerquery</string>
<key>uuid</key>
<string>D751E199-9A4C-4A95-BC0F-0C4E4C75E3DB</string>
</dict>
</plist>