All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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")
      }
    }
  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy