You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

345 lines
15 KiB
JSON

{
"aliases": [
"re"
],
"keywords": {
"keyword": "and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct 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": [
{
"className": "comment",
"begin": "\/\\*",
"end": "\\*\/",
"contains": [
{
"begin": "\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\b"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
],
"illegal": "^(\\#,\\\/\\\/)"
},
{
"className": "character",
"begin": "'(\\\\[^']+|[^'])'",
"illegal": "\\n",
"relevance": 0
},
{
"className": "string",
"begin": "\"",
"end": "\"",
"illegal": "\\n",
"contains": [
{
"begin": "\\\\[\\s\\S]",
"relevance": 0
}
]
},
{
"className": "literal",
"begin": "\\(\\)",
"relevance": 0
},
{
"className": "literal",
"begin": "\\[\\|",
"end": "\\|\\]",
"relevance": 0,
"contains": [
{
"className": "identifier",
"relevance": 0,
"begin": "~?[a-z$_][0-9a-zA-Z$_]*"
},
{
"className": "operator",
"relevance": 0,
"begin": "(\\|\\||\\&\\&|\\+\\+|\\*\\*|\\+\\.|\\*|\\\/|\\*\\.|\\\/\\.|\\.\\.\\.|\\|\\>|==|===)"
},
{
"className": "number",
"relevance": 0,
"variants": [
{
"begin": "\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)"
},
{
"begin": "\\(\\-\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\\)"
}
]
}
]
},
{
"className": "literal",
"begin": "\\[",
"end": "\\]",
"relevance": 0,
"contains": {
"$ref": "#contains.4.contains"
}
},
{
"className": "constructor",
"begin": "`?[A-Z$_][0-9a-zA-Z$_]*\\(",
"end": "\\)",
"illegal": "\\n",
"keywords": {
"$ref": "#keywords"
},
"contains": [
{
"$ref": "#contains.2"
},
{
"$ref": "#contains.4.contains.1"
},
{
"className": "params",
"begin": "\\b~?[a-z$_][0-9a-zA-Z$_]*"
}
]
},
{
"className": "operator",
"begin": "\\s+(\\|\\||\\&\\&|\\+\\+|\\*\\*|\\+\\.|\\*|\\\/|\\*\\.|\\\/\\.|\\.\\.\\.|\\|\\>|==|===)\\s+",
"illegal": "\\-\\->",
"relevance": 0
},
{
"$ref": "#contains.4.contains.2"
},
{
"className": "comment",
"begin": "\/\/",
"end": "$",
"contains": [
{
"$ref": "#contains.0.contains.0"
},
{
"className": "doctag",
"begin": "(?:TODO|FIXME|NOTE|BUG|XXX):",
"relevance": 0
}
]
},
{
"className": "pattern-match",
"begin": "\\|",
"returnBegin": true,
"keywords": {
"$ref": "#keywords"
},
"end": "=>",
"relevance": 0,
"contains": [
{
"$ref": "#contains.6"
},
{
"$ref": "#contains.4.contains.1"
},
{
"relevance": 0,
"className": "constructor",
"begin": "`?[A-Z$_][0-9a-zA-Z$_]*"
}
]
},
{
"className": "function",
"relevance": 0,
"keywords": {
"$ref": "#keywords"
},
"variants": [
{
"begin": "\\s(\\(\\.?.*?\\)|~?[a-z$_][0-9a-zA-Z$_]*)\\s*=>",
"end": "\\s*=>",
"returnBegin": true,
"relevance": 0,
"contains": [
{
"className": "params",
"variants": [
{
"begin": "~?[a-z$_][0-9a-zA-Z$_]*"
},
{
"begin": "~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"
},
{
"begin": "\\(\\s*\\)"
}
]
}
]
},
{
"begin": "\\s\\(\\.?[^;\\|]*\\)\\s*=>",
"end": "\\s=>",
"returnBegin": true,
"relevance": 0,
"contains": [
{
"className": "params",
"relevance": 0,
"variants": [
{
"begin": "~?[a-z$_][0-9a-zA-Z$_]*",
"end": "(,|\\n|\\))",
"relevance": 0,
"contains": [
{
"$ref": "#contains.4.contains.1"
},
{
"className": "typing",
"begin": ":",
"end": "(,|\\n)",
"returnBegin": true,
"relevance": 0,
"contains": [
{
"className": "module",
"begin": "\\b`?[A-Z$_][0-9a-zA-Z$_]*",
"returnBegin": true,
"end": ".",
"relevance": 0,
"contains": [
{
"className": "identifier",
"begin": "`?[A-Z$_][0-9a-zA-Z$_]*",
"relevance": 0
}
]
},
{
"className": "module-access",
"keywords": {
"$ref": "#keywords"
},
"returnBegin": true,
"variants": [
{
"begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+~?[a-z$_][0-9a-zA-Z$_]*"
},
{
"begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+\\(",
"end": "\\)",
"returnBegin": true,
"contains": [
{
"$ref": "#contains.11"
},
{
"begin": "\\(",
"end": "\\)",
"skip": true
},
{
"$ref": "#contains.2"
},
{
"$ref": "#contains.4.contains.1"
},
{
"className": "module",
"begin": "\\b`?[A-Z$_][0-9a-zA-Z$_]*",
"returnBegin": true,
"end": ".",
"contains": [
{
"className": "identifier",
"begin": "`?[A-Z$_][0-9a-zA-Z$_]*",
"relevance": 0
}
]
},
{
"$ref": "#contains.11"
}
]
},
{
"begin": "\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\.)+{",
"end": "}"
}
],
"contains": [
{
"$ref": "#contains.2"
},
{
"$ref": "#contains.4.contains.1"
},
{
"$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4"
},
{
"$ref": "#contains.11"
}
]
}
]
}
]
}
]
}
]
},
{
"begin": "\\(\\.\\s~?[a-z$_][0-9a-zA-Z$_]*\\)\\s*=>"
}
]
},
{
"className": "module-def",
"begin": "\\bmodule\\s+~?[a-z$_][0-9a-zA-Z$_]*\\s+`?[A-Z$_][0-9a-zA-Z$_]*\\s+=\\s+{",
"end": "}",
"returnBegin": true,
"keywords": {
"$ref": "#keywords"
},
"relevance": 0,
"contains": [
{
"className": "module",
"relevance": 0,
"begin": "`?[A-Z$_][0-9a-zA-Z$_]*"
},
{
"begin": "{",
"end": "}",
"skip": true
},
{
"$ref": "#contains.2"
},
{
"$ref": "#contains.4.contains.1"
},
{
"$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4"
},
{
"$ref": "#contains.11"
}
]
},
{
"$ref": "#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1"
}
]
}