123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- /*
- Language: ReasonML
- Description: Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.
- Website: https://reasonml.github.io
- Author: Gidi Meir Morris <oss@gidi.io>
- Category: functional
- */
- function reasonml(hljs) {
- const BUILT_IN_TYPES = [
- "array",
- "bool",
- "bytes",
- "char",
- "exn|5",
- "float",
- "int",
- "int32",
- "int64",
- "list",
- "lazy_t|5",
- "nativeint|5",
- "ref",
- "string",
- "unit",
- ];
- 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: BUILT_IN_TYPES,
- literal: ["true", "false"],
- },
- illegal: /(:-|:=|\$\{|\+=)/,
- contains: [
- {
- scope: 'literal',
- match: /\[(\|\|)?\]|\(\)/,
- relevance: 0
- },
- hljs.C_LINE_COMMENT_MODE,
- hljs.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
- },
- hljs.inherit(hljs.APOS_STRING_MODE, {
- scope: 'string',
- relevance: 0
- }),
- hljs.inherit(hljs.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
- },
- ]
- };
- }
- export { reasonml as default };
|