io.github.dingyi222666.monarch.languages.LanguagePowerquery.kt Maven / Gradle / Ivy
The newest version!
package io.github.dingyi222666.monarch.languages
import io.github.dingyi222666.monarch.common.*
import io.github.dingyi222666.monarch.loader.dsl.*
import io.github.dingyi222666.monarch.types.IMonarchLanguage
public val PowerqueryLanguage: IMonarchLanguage by lazy {
buildMonarchLanguage {
tokenPostfix = ".pq"
ignoreCase = false
defaultToken = ""
brackets {
bracket("[","]","delimiter.square")
bracket("{","}","delimiter.brackets")
bracket("(",")","delimiter.parenthesis")
}
"operatorKeywords" and listOf("and", "not", "or")
keywords("as", "each", "else", "error", "false", "if", "in", "is", "let", "meta", "otherwise",
"section", "shared", "then", "true", "try", "type")
"constructors" and listOf("#binary", "#date", "#datetime", "#datetimezone", "#duration",
"#table", "#time")
"constants" and listOf("#infinity", "#nan", "#sections", "#shared")
typeKeywords("action", "any", "anynonnull", "none", "null", "logical", "number", "time", "date",
"datetime", "datetimezone", "duration", "text", "binary", "list", "record", "table",
"function")
"builtinFunctions" and listOf("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" and listOf("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" and listOf("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 {
"#\"[\\w \\.]+\"".token("identifier.quote")
"\\d*\\.\\d+([eE][\\-+]?\\d+)?".token("number.float")
"0[xX][0-9a-fA-F]+".token("number.hex")
"\\d+([eE][\\-+]?\\d+)?".token("number")
"(#?[a-z]+)\\b".action {
cases {
"@typeKeywords" and "type"
"@keywords" and "keyword"
"@constants" and "constant"
"@constructors" and "constructor"
"@operatorKeywords" and "operators"
"@default" and "identifier"
}
}
"\\b([A-Z][a-zA-Z0-9]+\\.Type)\\b".action {
cases {
"@builtinTypes" and "type"
"@default" and "identifier"
}
}
"\\b([A-Z][a-zA-Z0-9]+\\.[A-Z][a-zA-Z0-9]+)\\b".action {
cases {
"@builtinFunctions" and "keyword.function"
"@builtinConstants" and "constant"
"@default" and "identifier"
}
}
"\\b([a-zA-Z_][\\w\\.]*)\\b".token("identifier")
include("@whitespace")
include("@comments")
include("@strings")
"[{}()\\[\\]]".token("@brackets")
"([=\\+<>\\-\\*&@\\?\\/!])|([<>]=)|(<>)|(=>)|(\\.\\.\\.)|(\\.\\.)".token("operators")
"[,;]".token("delimiter")
}
whitespace {
"\\s+".token("white")
}
comments {
"\\/\\*".action("comment").state("@comment")
"\\/\\/+.*".token("comment")
}
comment {
"\\*\\/".action("comment").state("@pop")
".".token("comment")
}
"strings" rules {
"\"".action("string").state("@string")
}
string {
"\"\"".token("string.escape")
"\"".action("string").state("@pop")
".".token("string")
}
}
}
}