xquery top-level property

Language xquery
final

Implementation

final xquery = Language(
  id: "xquery",
  refs: {},
  name: "XQuery",
  aliases: ["xpath", "xq"],
  case_insensitive: false,
  illegal: "(proc)|(abstract)|(extends)|(until)|(#)",
  keywords: {
    "\$pattern": "[a-zA-Z\$][a-zA-Z0-9_:-]*",
    "keyword": [
      "module",
      "schema",
      "namespace",
      "boundary-space",
      "preserve",
      "no-preserve",
      "strip",
      "default",
      "collation",
      "base-uri",
      "ordering",
      "context",
      "decimal-format",
      "decimal-separator",
      "copy-namespaces",
      "empty-sequence",
      "except",
      "exponent-separator",
      "external",
      "grouping-separator",
      "inherit",
      "no-inherit",
      "lax",
      "minus-sign",
      "per-mille",
      "percent",
      "schema-attribute",
      "schema-element",
      "strict",
      "unordered",
      "zero-digit",
      "declare",
      "import",
      "option",
      "function",
      "validate",
      "variable",
      "for",
      "at",
      "in",
      "let",
      "where",
      "order",
      "group",
      "by",
      "return",
      "if",
      "then",
      "else",
      "tumbling",
      "sliding",
      "window",
      "start",
      "when",
      "only",
      "end",
      "previous",
      "next",
      "stable",
      "ascending",
      "descending",
      "allowing",
      "empty",
      "greatest",
      "least",
      "some",
      "every",
      "satisfies",
      "switch",
      "case",
      "typeswitch",
      "try",
      "catch",
      "and",
      "or",
      "to",
      "union",
      "intersect",
      "instance",
      "of",
      "treat",
      "as",
      "castable",
      "cast",
      "map",
      "array",
      "delete",
      "insert",
      "into",
      "replace",
      "value",
      "rename",
      "copy",
      "modify",
      "update"
    ],
    "type": [
      "item",
      "document-node",
      "node",
      "attribute",
      "document",
      "element",
      "comment",
      "namespace",
      "namespace-node",
      "processing-instruction",
      "text",
      "construction",
      "xs:anyAtomicType",
      "xs:untypedAtomic",
      "xs:duration",
      "xs:time",
      "xs:decimal",
      "xs:float",
      "xs:double",
      "xs:gYearMonth",
      "xs:gYear",
      "xs:gMonthDay",
      "xs:gMonth",
      "xs:gDay",
      "xs:boolean",
      "xs:base64Binary",
      "xs:hexBinary",
      "xs:anyURI",
      "xs:QName",
      "xs:NOTATION",
      "xs:dateTime",
      "xs:dateTimeStamp",
      "xs:date",
      "xs:string",
      "xs:normalizedString",
      "xs:token",
      "xs:language",
      "xs:NMTOKEN",
      "xs:Name",
      "xs:NCName",
      "xs:ID",
      "xs:IDREF",
      "xs:ENTITY",
      "xs:integer",
      "xs:nonPositiveInteger",
      "xs:negativeInteger",
      "xs:long",
      "xs:int",
      "xs:short",
      "xs:byte",
      "xs:nonNegativeInteger",
      "xs:unisignedLong",
      "xs:unsignedInt",
      "xs:unsignedShort",
      "xs:unsignedByte",
      "xs:positiveInteger",
      "xs:yearMonthDuration",
      "xs:dayTimeDuration"
    ],
    "literal": [
      "eq",
      "ne",
      "lt",
      "le",
      "gt",
      "ge",
      "is",
      "self::",
      "child::",
      "descendant::",
      "descendant-or-self::",
      "attribute::",
      "following::",
      "following-sibling::",
      "parent::",
      "ancestor::",
      "ancestor-or-self::",
      "preceding::",
      "preceding-sibling::",
      "NaN"
    ]
  },
  contains: [
    Mode(
      className: "variable",
      begin: "[\$][\\w\\-:]+",
    ),
    Mode(
      className: "built_in",
      variants: [
        Mode(
          begin: "\\barray:",
          end:
              "(?:append|filter|flatten|fold-(?:left|right)|for-each(?:-pair)?|get|head|insert-before|join|put|remove|reverse|size|sort|subarray|tail)\\b",
        ),
        Mode(
          begin: "\\bmap:",
          end:
              "(?:contains|entry|find|for-each|get|keys|merge|put|remove|size)\\b",
        ),
        Mode(
          begin: "\\bmath:",
          end:
              "(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\\b",
        ),
        Mode(
          begin: "\\bop:",
          end: "\\(",
          excludeEnd: true,
        ),
        Mode(
          begin: "\\bfn:",
          end: "\\(",
          excludeEnd: true,
        ),
        Mode(
          begin:
              "[^</\$:'\"-]\\b(?:abs|accumulator-(?:after|before)|adjust-(?:date(?:Time)?|time)-to-timezone|analyze-string|apply|available-(?:environment-variables|system-properties)|avg|base-uri|boolean|ceiling|codepoints?-(?:equal|to-string)|collation-key|collection|compare|concat|contains(?:-token)?|copy-of|count|current(?:-)?(?:date(?:Time)?|time|group(?:ing-key)?|output-uri|merge-(?:group|key))?data|dateTime|days?-from-(?:date(?:Time)?|duration)|deep-equal|default-(?:collation|language)|distinct-values|document(?:-uri)?|doc(?:-available)?|element-(?:available|with-id)|empty|encode-for-uri|ends-with|environment-variable|error|escape-html-uri|exactly-one|exists|false|filter|floor|fold-(?:left|right)|for-each(?:-pair)?|format-(?:date(?:Time)?|time|integer|number)|function-(?:arity|available|lookup|name)|generate-id|has-children|head|hours-from-(?:dateTime|duration|time)|id(?:ref)?|implicit-timezone|in-scope-prefixes|index-of|innermost|insert-before|iri-to-uri|json-(?:doc|to-xml)|key|lang|last|load-xquery-module|local-name(?:-from-QName)?|(?:lower|upper)-case|matches|max|minutes-from-(?:dateTime|duration|time)|min|months?-from-(?:date(?:Time)?|duration)|name(?:space-uri-?(?:for-prefix|from-QName)?)?|nilled|node-name|normalize-(?:space|unicode)|not|number|one-or-more|outermost|parse-(?:ietf-date|json)|path|position|(?:prefix-from-)?QName|random-number-generator|regex-group|remove|replace|resolve-(?:QName|uri)|reverse|root|round(?:-half-to-even)?|seconds-from-(?:dateTime|duration|time)|snapshot|sort|starts-with|static-base-uri|stream-available|string-?(?:join|length|to-codepoints)?|subsequence|substring-?(?:after|before)?|sum|system-property|tail|timezone-from-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type-available|unordered|unparsed-(?:entity|text)?-?(?:public-id|uri|available|lines)?|uri-collection|xml-to-json|years?-from-(?:date(?:Time)?|duration)|zero-or-one)\\b",
        ),
        Mode(
          begin: "\\blocal:",
          end: "\\(",
          excludeEnd: true,
        ),
        Mode(
          begin: "\\bzip:",
          end:
              "(?:zip-file|(?:xml|html|text|binary)-entry| (?:update-)?entries)\\b",
        ),
        Mode(
          begin: "\\b(?:util|db|functx|app|xdmp|xmldb):",
          end: "\\(",
          excludeEnd: true,
        ),
      ],
    ),
    Mode(
      className: "string",
      variants: [
        Mode(
          begin: "\"",
          end: "\"",
          contains: [
            Mode(
              begin: "\"\"",
              relevance: 0,
            ),
          ],
        ),
        Mode(
          begin: "'",
          end: "'",
          contains: [
            Mode(
              begin: "''",
              relevance: 0,
            ),
          ],
        ),
      ],
    ),
    Mode(
      className: "number",
      begin:
          "(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",
      relevance: 0,
    ),
    Mode(
      className: "comment",
      begin: "\\(:",
      end: ":\\)",
      relevance: 10,
      contains: [
        Mode(
          className: "doctag",
          begin: "@\\w+",
        ),
      ],
    ),
    Mode(
      className: "meta",
      begin: "%[\\w\\-:]+",
    ),
    Mode(
      className: "title",
      begin: "\\bxquery version \"[13]\\.[01]\"\\s?(?:encoding \".+\")?",
      end: ";",
    ),
    Mode(
      beginKeywords:
          "element attribute comment document processing-instruction",
      end: "\\{",
      excludeEnd: true,
    ),
    Mode(
      begin: "<([\\w._:-]+)(\\s+\\S*=('|\").*('|\"))?>",
      end: "(\\/[\\w._:-]+>)",
      subLanguage: ["xml"],
      contains: [
        Mode(
          begin: "\\{",
          end: "\\}",
          subLanguage: ["xquery"],
        ),
        ModeSelfReference(),
      ],
    ),
  ],
);