var n, o;
function R() {
  if (o)
    return n;
  o = 1;
  function s(e) {
    const c = e.regex, t = [
      "div",
      "mod",
      "in",
      "and",
      "or",
      "not",
      "xor",
      "asserterror",
      "begin",
      "case",
      "do",
      "downto",
      "else",
      "end",
      "exit",
      "for",
      "local",
      "if",
      "of",
      "repeat",
      "then",
      "to",
      "until",
      "while",
      "with",
      "var"
    ], i = "false true", E = [
      e.C_LINE_COMMENT_MODE,
      e.COMMENT(
        /\{/,
        /\}/,
        { relevance: 0 }
      ),
      e.COMMENT(
        /\(\*/,
        /\*\)/,
        { relevance: 10 }
      )
    ], r = {
      className: "string",
      begin: /'/,
      end: /'/,
      contains: [{ begin: /''/ }]
    }, a = {
      className: "string",
      begin: /(#\d+)+/
    }, l = {
      className: "number",
      begin: "\\b\\d+(\\.\\d+)?(DT|D|T)",
      relevance: 0
    }, d = {
      className: "string",
      // not a string technically but makes sense to be highlighted in the same style
      begin: '"',
      end: '"'
    }, u = {
      match: [
        /procedure/,
        /\s+/,
        /[a-zA-Z_][\w@]*/,
        /\s*/
      ],
      scope: {
        1: "keyword",
        3: "title.function"
      },
      contains: [
        {
          className: "params",
          begin: /\(/,
          end: /\)/,
          keywords: t,
          contains: [
            r,
            a,
            e.NUMBER_MODE
          ]
        },
        ...E
      ]
    }, T = [
      "Table",
      "Form",
      "Report",
      "Dataport",
      "Codeunit",
      "XMLport",
      "MenuSuite",
      "Page",
      "Query"
    ], M = {
      match: [
        /OBJECT/,
        /\s+/,
        c.either(...T),
        /\s+/,
        /\d+/,
        /\s+(?=[^\s])/,
        /.*/,
        /$/
      ],
      relevance: 3,
      scope: {
        1: "keyword",
        3: "type",
        5: "number",
        7: "title"
      }
    };
    return {
      name: "C/AL",
      case_insensitive: !0,
      keywords: {
        keyword: t,
        literal: i
      },
      illegal: /\/\*/,
      contains: [
        {
          match: /[\w]+(?=\=)/,
          scope: "attribute",
          relevance: 0
        },
        r,
        a,
        l,
        d,
        e.NUMBER_MODE,
        M,
        u
      ]
    };
  }
  return n = s, n;
}
export {
  R as __require
};
