266 lines
5.1 KiB
JavaScript
266 lines
5.1 KiB
JavaScript
/*!-----------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Version: 0.36.1(6c56744c3419458f0dd48864520b759d1a3a1ca8)
|
|
* Released under the MIT license
|
|
* https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
|
|
*-----------------------------------------------------------------------------*/
|
|
|
|
// src/basic-languages/cypher/cypher.ts
|
|
var conf = {
|
|
comments: {
|
|
lineComment: "//",
|
|
blockComment: ["/*", "*/"]
|
|
},
|
|
brackets: [
|
|
["{", "}"],
|
|
["[", "]"],
|
|
["(", ")"]
|
|
],
|
|
autoClosingPairs: [
|
|
{ open: "{", close: "}" },
|
|
{ open: "[", close: "]" },
|
|
{ open: "(", close: ")" },
|
|
{ open: '"', close: '"' },
|
|
{ open: "'", close: "'" },
|
|
{ open: "`", close: "`" }
|
|
],
|
|
surroundingPairs: [
|
|
{ open: "{", close: "}" },
|
|
{ open: "[", close: "]" },
|
|
{ open: "(", close: ")" },
|
|
{ open: '"', close: '"' },
|
|
{ open: "'", close: "'" },
|
|
{ open: "`", close: "`" }
|
|
]
|
|
};
|
|
var language = {
|
|
defaultToken: "",
|
|
tokenPostfix: `.cypher`,
|
|
ignoreCase: true,
|
|
brackets: [
|
|
{ open: "{", close: "}", token: "delimiter.curly" },
|
|
{ open: "[", close: "]", token: "delimiter.bracket" },
|
|
{ open: "(", close: ")", token: "delimiter.parenthesis" }
|
|
],
|
|
keywords: [
|
|
"ALL",
|
|
"AND",
|
|
"AS",
|
|
"ASC",
|
|
"ASCENDING",
|
|
"BY",
|
|
"CALL",
|
|
"CASE",
|
|
"CONTAINS",
|
|
"CREATE",
|
|
"DELETE",
|
|
"DESC",
|
|
"DESCENDING",
|
|
"DETACH",
|
|
"DISTINCT",
|
|
"ELSE",
|
|
"END",
|
|
"ENDS",
|
|
"EXISTS",
|
|
"IN",
|
|
"IS",
|
|
"LIMIT",
|
|
"MANDATORY",
|
|
"MATCH",
|
|
"MERGE",
|
|
"NOT",
|
|
"ON",
|
|
"ON",
|
|
"OPTIONAL",
|
|
"OR",
|
|
"ORDER",
|
|
"REMOVE",
|
|
"RETURN",
|
|
"SET",
|
|
"SKIP",
|
|
"STARTS",
|
|
"THEN",
|
|
"UNION",
|
|
"UNWIND",
|
|
"WHEN",
|
|
"WHERE",
|
|
"WITH",
|
|
"XOR",
|
|
"YIELD"
|
|
],
|
|
builtinLiterals: ["true", "TRUE", "false", "FALSE", "null", "NULL"],
|
|
builtinFunctions: [
|
|
"abs",
|
|
"acos",
|
|
"asin",
|
|
"atan",
|
|
"atan2",
|
|
"avg",
|
|
"ceil",
|
|
"coalesce",
|
|
"collect",
|
|
"cos",
|
|
"cot",
|
|
"count",
|
|
"degrees",
|
|
"e",
|
|
"endNode",
|
|
"exists",
|
|
"exp",
|
|
"floor",
|
|
"head",
|
|
"id",
|
|
"keys",
|
|
"labels",
|
|
"last",
|
|
"left",
|
|
"length",
|
|
"log",
|
|
"log10",
|
|
"lTrim",
|
|
"max",
|
|
"min",
|
|
"nodes",
|
|
"percentileCont",
|
|
"percentileDisc",
|
|
"pi",
|
|
"properties",
|
|
"radians",
|
|
"rand",
|
|
"range",
|
|
"relationships",
|
|
"replace",
|
|
"reverse",
|
|
"right",
|
|
"round",
|
|
"rTrim",
|
|
"sign",
|
|
"sin",
|
|
"size",
|
|
"split",
|
|
"sqrt",
|
|
"startNode",
|
|
"stDev",
|
|
"stDevP",
|
|
"substring",
|
|
"sum",
|
|
"tail",
|
|
"tan",
|
|
"timestamp",
|
|
"toBoolean",
|
|
"toFloat",
|
|
"toInteger",
|
|
"toLower",
|
|
"toString",
|
|
"toUpper",
|
|
"trim",
|
|
"type"
|
|
],
|
|
operators: [
|
|
"+",
|
|
"-",
|
|
"*",
|
|
"/",
|
|
"%",
|
|
"^",
|
|
"=",
|
|
"<>",
|
|
"<",
|
|
">",
|
|
"<=",
|
|
">=",
|
|
"->",
|
|
"<-",
|
|
"-->",
|
|
"<--"
|
|
],
|
|
escapes: /\\(?:[tbnrf\\"'`]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
|
|
digits: /\d+/,
|
|
octaldigits: /[0-7]+/,
|
|
hexdigits: /[0-9a-fA-F]+/,
|
|
tokenizer: {
|
|
root: [[/[{}[\]()]/, "@brackets"], { include: "common" }],
|
|
common: [
|
|
{ include: "@whitespace" },
|
|
{ include: "@numbers" },
|
|
{ include: "@strings" },
|
|
[/:[a-zA-Z_][\w]*/, "type.identifier"],
|
|
[
|
|
/[a-zA-Z_][\w]*(?=\()/,
|
|
{
|
|
cases: {
|
|
"@builtinFunctions": "predefined.function"
|
|
}
|
|
}
|
|
],
|
|
[
|
|
/[a-zA-Z_$][\w$]*/,
|
|
{
|
|
cases: {
|
|
"@keywords": "keyword",
|
|
"@builtinLiterals": "predefined.literal",
|
|
"@default": "identifier"
|
|
}
|
|
}
|
|
],
|
|
[/`/, "identifier.escape", "@identifierBacktick"],
|
|
[/[;,.:|]/, "delimiter"],
|
|
[
|
|
/[<>=%+\-*/^]+/,
|
|
{
|
|
cases: {
|
|
"@operators": "delimiter",
|
|
"@default": ""
|
|
}
|
|
}
|
|
]
|
|
],
|
|
numbers: [
|
|
[/-?(@digits)[eE](-?(@digits))?/, "number.float"],
|
|
[/-?(@digits)?\.(@digits)([eE]-?(@digits))?/, "number.float"],
|
|
[/-?0x(@hexdigits)/, "number.hex"],
|
|
[/-?0(@octaldigits)/, "number.octal"],
|
|
[/-?(@digits)/, "number"]
|
|
],
|
|
strings: [
|
|
[/"([^"\\]|\\.)*$/, "string.invalid"],
|
|
[/'([^'\\]|\\.)*$/, "string.invalid"],
|
|
[/"/, "string", "@stringDouble"],
|
|
[/'/, "string", "@stringSingle"]
|
|
],
|
|
whitespace: [
|
|
[/[ \t\r\n]+/, "white"],
|
|
[/\/\*/, "comment", "@comment"],
|
|
[/\/\/.*$/, "comment"]
|
|
],
|
|
comment: [
|
|
[/\/\/.*/, "comment"],
|
|
[/[^/*]+/, "comment"],
|
|
[/\*\//, "comment", "@pop"],
|
|
[/[/*]/, "comment"]
|
|
],
|
|
stringDouble: [
|
|
[/[^\\"]+/, "string"],
|
|
[/@escapes/, "string"],
|
|
[/\\./, "string.invalid"],
|
|
[/"/, "string", "@pop"]
|
|
],
|
|
stringSingle: [
|
|
[/[^\\']+/, "string"],
|
|
[/@escapes/, "string"],
|
|
[/\\./, "string.invalid"],
|
|
[/'/, "string", "@pop"]
|
|
],
|
|
identifierBacktick: [
|
|
[/[^\\`]+/, "identifier.escape"],
|
|
[/@escapes/, "identifier.escape"],
|
|
[/\\./, "identifier.escape.invalid"],
|
|
[/`/, "identifier.escape", "@pop"]
|
|
]
|
|
}
|
|
};
|
|
export {
|
|
conf,
|
|
language
|
|
};
|