/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
define('vs/basic-languages/powerquery/powerquery',["require", "exports"], function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.language = exports.conf = void 0;
    exports.conf = {
        comments: {
            lineComment: '//',
            blockComment: ['/*', '*/']
        },
        brackets: [
            ['[', ']'],
            ['(', ')'],
            ['{', '}']
        ],
        autoClosingPairs: [
            { open: '"', close: '"', notIn: ['string', 'comment', 'identifier'] },
            { open: '[', close: ']', notIn: ['string', 'comment', 'identifier'] },
            { open: '(', close: ')', notIn: ['string', 'comment', 'identifier'] },
            { open: '{', close: '}', notIn: ['string', 'comment', 'identifier'] }
        ]
    };
    exports.language = {
        defaultToken: '',
        tokenPostfix: '.pq',
        ignoreCase: false,
        brackets: [
            { open: '[', close: ']', token: 'delimiter.square' },
            { open: '{', close: '}', token: 'delimiter.brackets' },
            { open: '(', close: ')', token: 'delimiter.parenthesis' }
        ],
        operatorKeywords: ['and', 'not', 'or'],
        keywords: [
            'as',
            'each',
            'else',
            'error',
            'false',
            'if',
            'in',
            'is',
            'let',
            'meta',
            'otherwise',
            'section',
            'shared',
            'then',
            'true',
            'try',
            'type'
        ],
        constructors: [
            '#binary',
            '#date',
            '#datetime',
            '#datetimezone',
            '#duration',
            '#table',
            '#time'
        ],
        constants: ['#infinity', '#nan', '#sections', '#shared'],
        typeKeywords: [
            'action',
            'any',
            'anynonnull',
            'none',
            'null',
            'logical',
            'number',
            'time',
            'date',
            'datetime',
            'datetimezone',
            'duration',
            'text',
            'binary',
            'list',
            'record',
            'table',
            'function'
        ],
        builtinFunctions: [
            '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'
        ],
        builtinConstants: [
            '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'
        ],
        builtinTypes: [
            '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'
        ],
        tokenizer: {
            root: [
                // quoted identifier
                [/#"[\w \.]+"/, 'identifier.quote'],
                // numbers
                [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'],
                [/0[xX][0-9a-fA-F]+/, 'number.hex'],
                [/\d+([eE][\-+]?\d+)?/, 'number'],
                // keywords
                [
                    /(#?[a-z]+)\b/,
                    {
                        cases: {
                            '@typeKeywords': 'type',
                            '@keywords': 'keyword',
                            '@constants': 'constant',
                            '@constructors': 'constructor',
                            '@operatorKeywords': 'operators',
                            '@default': 'identifier'
                        }
                    }
                ],
                // built-in types
                [
                    /\b([A-Z][a-zA-Z0-9]+\.Type)\b/,
                    {
                        cases: {
                            '@builtinTypes': 'type',
                            '@default': 'identifier'
                        }
                    }
                ],
                // other built-ins
                [
                    /\b([A-Z][a-zA-Z0-9]+\.[A-Z][a-zA-Z0-9]+)\b/,
                    {
                        cases: {
                            '@builtinFunctions': 'keyword.function',
                            '@builtinConstants': 'constant',
                            '@default': 'identifier'
                        }
                    }
                ],
                // other identifiers
                [/\b([a-zA-Z_][\w\.]*)\b/, 'identifier'],
                { include: '@whitespace' },
                { include: '@comments' },
                { include: '@strings' },
                [/[{}()\[\]]/, '@brackets'],
                [/([=\+<>\-\*&@\?\/!])|([<>]=)|(<>)|(=>)|(\.\.\.)|(\.\.)/, 'operators'],
                [/[,;]/, 'delimiter']
            ],
            whitespace: [[/\s+/, 'white']],
            comments: [
                ['\\/\\*', 'comment', '@comment'],
                ['\\/\\/+.*', 'comment']
            ],
            comment: [
                ['\\*\\/', 'comment', '@pop'],
                ['.', 'comment']
            ],
            strings: [['"', 'string', '@string']],
            string: [
                ['""', 'string.escape'],
                ['"', 'string', '@pop'],
                ['.', 'string']
            ]
        }
    };
});

