var n, t;
function l() {
  if (t)
    return n;
  t = 1;
  function a(e) {
    return {
      name: "ReasonML",
      aliases: ["re"],
      keywords: {
        $pattern: /[a-z_]\w*!?/,
        keyword: [
          "and",
          "as",
          "asr",
          "assert",
          "begin",
          "class",
          "constraint",
          "do",
          "done",
          "downto",
          "else",
          "end",
          "esfun",
          "exception",
          "external",
          "for",
          "fun",
          "function",
          "functor",
          "if",
          "in",
          "include",
          "inherit",
          "initializer",
          "land",
          "lazy",
          "let",
          "lor",
          "lsl",
          "lsr",
          "lxor",
          "mod",
          "module",
          "mutable",
          "new",
          "nonrec",
          "object",
          "of",
          "open",
          "or",
          "pri",
          "pub",
          "rec",
          "sig",
          "struct",
          "switch",
          "then",
          "to",
          "try",
          "type",
          "val",
          "virtual",
          "when",
          "while",
          "with"
        ],
        built_in: [
          "array",
          "bool",
          "bytes",
          "char",
          "exn|5",
          "float",
          "int",
          "int32",
          "int64",
          "list",
          "lazy_t|5",
          "nativeint|5",
          "ref",
          "string",
          "unit"
        ],
        literal: ["true", "false"]
      },
      illegal: /(:-|:=|\$\{|\+=)/,
      contains: [
        {
          scope: "literal",
          match: /\[(\|\|)?\]|\(\)/,
          relevance: 0
        },
        e.C_LINE_COMMENT_MODE,
        e.COMMENT(/\/\*/, /\*\//, { illegal: /^(#,\/\/)/ }),
        {
          /* type variable */
          scope: "symbol",
          match: /\'[A-Za-z_](?!\')[\w\']*/
          /* the grammar is ambiguous on how 'a'b should be interpreted but not the compiler */
        },
        {
          /* polymorphic variant */
          scope: "type",
          match: /`[A-Z][\w\']*/
        },
        {
          /* module or constructor */
          scope: "type",
          match: /\b[A-Z][\w\']*/,
          relevance: 0
        },
        {
          /* don't color identifiers, but safely catch all identifiers with ' */
          match: /[a-z_]\w*\'[\w\']*/,
          relevance: 0
        },
        {
          scope: "operator",
          match: /\s+(\|\||\+[\+\.]?|\*[\*\/\.]?|\/[\.]?|\.\.\.|\|>|&&|===?)\s+/,
          relevance: 0
        },
        e.inherit(e.APOS_STRING_MODE, {
          scope: "string",
          relevance: 0
        }),
        e.inherit(e.QUOTE_STRING_MODE, { illegal: null }),
        {
          scope: "number",
          variants: [
            { match: /\b0[xX][a-fA-F0-9_]+[Lln]?/ },
            { match: /\b0[oO][0-7_]+[Lln]?/ },
            { match: /\b0[bB][01_]+[Lln]?/ },
            { match: /\b[0-9][0-9_]*([Lln]|(\.[0-9_]*)?([eE][-+]?[0-9_]+)?)/ }
          ],
          relevance: 0
        }
      ]
    };
  }
  return n = a, n;
}
export {
  l as __require
};
