/*--------------------------------------------------------------------------------------------- * 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'] ] } }; });