msdax.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380
  1. /*!-----------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Version: 0.31.1(337587859b1c171314b40503171188b6cea6a32a)
  4. * Released under the MIT license
  5. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  6. *-----------------------------------------------------------------------------*/
  7. // src/basic-languages/msdax/msdax.ts
  8. var conf = {
  9. comments: {
  10. lineComment: "//",
  11. blockComment: ["/*", "*/"]
  12. },
  13. brackets: [
  14. ["[", "]"],
  15. ["(", ")"],
  16. ["{", "}"]
  17. ],
  18. autoClosingPairs: [
  19. { open: '"', close: '"', notIn: ["string", "comment"] },
  20. { open: "'", close: "'", notIn: ["string", "comment"] },
  21. { open: "[", close: "]", notIn: ["string", "comment"] },
  22. { open: "(", close: ")", notIn: ["string", "comment"] },
  23. { open: "{", close: "}", notIn: ["string", "comment"] }
  24. ]
  25. };
  26. var language = {
  27. defaultToken: "",
  28. tokenPostfix: ".msdax",
  29. ignoreCase: true,
  30. brackets: [
  31. { open: "[", close: "]", token: "delimiter.square" },
  32. { open: "{", close: "}", token: "delimiter.brackets" },
  33. { open: "(", close: ")", token: "delimiter.parenthesis" }
  34. ],
  35. keywords: [
  36. "VAR",
  37. "RETURN",
  38. "NOT",
  39. "EVALUATE",
  40. "DATATABLE",
  41. "ORDER",
  42. "BY",
  43. "START",
  44. "AT",
  45. "DEFINE",
  46. "MEASURE",
  47. "ASC",
  48. "DESC",
  49. "IN",
  50. "BOOLEAN",
  51. "DOUBLE",
  52. "INTEGER",
  53. "DATETIME",
  54. "CURRENCY",
  55. "STRING"
  56. ],
  57. functions: [
  58. "CLOSINGBALANCEMONTH",
  59. "CLOSINGBALANCEQUARTER",
  60. "CLOSINGBALANCEYEAR",
  61. "DATEADD",
  62. "DATESBETWEEN",
  63. "DATESINPERIOD",
  64. "DATESMTD",
  65. "DATESQTD",
  66. "DATESYTD",
  67. "ENDOFMONTH",
  68. "ENDOFQUARTER",
  69. "ENDOFYEAR",
  70. "FIRSTDATE",
  71. "FIRSTNONBLANK",
  72. "LASTDATE",
  73. "LASTNONBLANK",
  74. "NEXTDAY",
  75. "NEXTMONTH",
  76. "NEXTQUARTER",
  77. "NEXTYEAR",
  78. "OPENINGBALANCEMONTH",
  79. "OPENINGBALANCEQUARTER",
  80. "OPENINGBALANCEYEAR",
  81. "PARALLELPERIOD",
  82. "PREVIOUSDAY",
  83. "PREVIOUSMONTH",
  84. "PREVIOUSQUARTER",
  85. "PREVIOUSYEAR",
  86. "SAMEPERIODLASTYEAR",
  87. "STARTOFMONTH",
  88. "STARTOFQUARTER",
  89. "STARTOFYEAR",
  90. "TOTALMTD",
  91. "TOTALQTD",
  92. "TOTALYTD",
  93. "ADDCOLUMNS",
  94. "ADDMISSINGITEMS",
  95. "ALL",
  96. "ALLEXCEPT",
  97. "ALLNOBLANKROW",
  98. "ALLSELECTED",
  99. "CALCULATE",
  100. "CALCULATETABLE",
  101. "CALENDAR",
  102. "CALENDARAUTO",
  103. "CROSSFILTER",
  104. "CROSSJOIN",
  105. "CURRENTGROUP",
  106. "DATATABLE",
  107. "DETAILROWS",
  108. "DISTINCT",
  109. "EARLIER",
  110. "EARLIEST",
  111. "EXCEPT",
  112. "FILTER",
  113. "FILTERS",
  114. "GENERATE",
  115. "GENERATEALL",
  116. "GROUPBY",
  117. "IGNORE",
  118. "INTERSECT",
  119. "ISONORAFTER",
  120. "KEEPFILTERS",
  121. "LOOKUPVALUE",
  122. "NATURALINNERJOIN",
  123. "NATURALLEFTOUTERJOIN",
  124. "RELATED",
  125. "RELATEDTABLE",
  126. "ROLLUP",
  127. "ROLLUPADDISSUBTOTAL",
  128. "ROLLUPGROUP",
  129. "ROLLUPISSUBTOTAL",
  130. "ROW",
  131. "SAMPLE",
  132. "SELECTCOLUMNS",
  133. "SUBSTITUTEWITHINDEX",
  134. "SUMMARIZE",
  135. "SUMMARIZECOLUMNS",
  136. "TOPN",
  137. "TREATAS",
  138. "UNION",
  139. "USERELATIONSHIP",
  140. "VALUES",
  141. "SUM",
  142. "SUMX",
  143. "PATH",
  144. "PATHCONTAINS",
  145. "PATHITEM",
  146. "PATHITEMREVERSE",
  147. "PATHLENGTH",
  148. "AVERAGE",
  149. "AVERAGEA",
  150. "AVERAGEX",
  151. "COUNT",
  152. "COUNTA",
  153. "COUNTAX",
  154. "COUNTBLANK",
  155. "COUNTROWS",
  156. "COUNTX",
  157. "DISTINCTCOUNT",
  158. "DIVIDE",
  159. "GEOMEAN",
  160. "GEOMEANX",
  161. "MAX",
  162. "MAXA",
  163. "MAXX",
  164. "MEDIAN",
  165. "MEDIANX",
  166. "MIN",
  167. "MINA",
  168. "MINX",
  169. "PERCENTILE.EXC",
  170. "PERCENTILE.INC",
  171. "PERCENTILEX.EXC",
  172. "PERCENTILEX.INC",
  173. "PRODUCT",
  174. "PRODUCTX",
  175. "RANK.EQ",
  176. "RANKX",
  177. "STDEV.P",
  178. "STDEV.S",
  179. "STDEVX.P",
  180. "STDEVX.S",
  181. "VAR.P",
  182. "VAR.S",
  183. "VARX.P",
  184. "VARX.S",
  185. "XIRR",
  186. "XNPV",
  187. "DATE",
  188. "DATEDIFF",
  189. "DATEVALUE",
  190. "DAY",
  191. "EDATE",
  192. "EOMONTH",
  193. "HOUR",
  194. "MINUTE",
  195. "MONTH",
  196. "NOW",
  197. "SECOND",
  198. "TIME",
  199. "TIMEVALUE",
  200. "TODAY",
  201. "WEEKDAY",
  202. "WEEKNUM",
  203. "YEAR",
  204. "YEARFRAC",
  205. "CONTAINS",
  206. "CONTAINSROW",
  207. "CUSTOMDATA",
  208. "ERROR",
  209. "HASONEFILTER",
  210. "HASONEVALUE",
  211. "ISBLANK",
  212. "ISCROSSFILTERED",
  213. "ISEMPTY",
  214. "ISERROR",
  215. "ISEVEN",
  216. "ISFILTERED",
  217. "ISLOGICAL",
  218. "ISNONTEXT",
  219. "ISNUMBER",
  220. "ISODD",
  221. "ISSUBTOTAL",
  222. "ISTEXT",
  223. "USERNAME",
  224. "USERPRINCIPALNAME",
  225. "AND",
  226. "FALSE",
  227. "IF",
  228. "IFERROR",
  229. "NOT",
  230. "OR",
  231. "SWITCH",
  232. "TRUE",
  233. "ABS",
  234. "ACOS",
  235. "ACOSH",
  236. "ACOT",
  237. "ACOTH",
  238. "ASIN",
  239. "ASINH",
  240. "ATAN",
  241. "ATANH",
  242. "BETA.DIST",
  243. "BETA.INV",
  244. "CEILING",
  245. "CHISQ.DIST",
  246. "CHISQ.DIST.RT",
  247. "CHISQ.INV",
  248. "CHISQ.INV.RT",
  249. "COMBIN",
  250. "COMBINA",
  251. "CONFIDENCE.NORM",
  252. "CONFIDENCE.T",
  253. "COS",
  254. "COSH",
  255. "COT",
  256. "COTH",
  257. "CURRENCY",
  258. "DEGREES",
  259. "EVEN",
  260. "EXP",
  261. "EXPON.DIST",
  262. "FACT",
  263. "FLOOR",
  264. "GCD",
  265. "INT",
  266. "ISO.CEILING",
  267. "LCM",
  268. "LN",
  269. "LOG",
  270. "LOG10",
  271. "MOD",
  272. "MROUND",
  273. "ODD",
  274. "PERMUT",
  275. "PI",
  276. "POISSON.DIST",
  277. "POWER",
  278. "QUOTIENT",
  279. "RADIANS",
  280. "RAND",
  281. "RANDBETWEEN",
  282. "ROUND",
  283. "ROUNDDOWN",
  284. "ROUNDUP",
  285. "SIGN",
  286. "SIN",
  287. "SINH",
  288. "SQRT",
  289. "SQRTPI",
  290. "TAN",
  291. "TANH",
  292. "TRUNC",
  293. "BLANK",
  294. "CONCATENATE",
  295. "CONCATENATEX",
  296. "EXACT",
  297. "FIND",
  298. "FIXED",
  299. "FORMAT",
  300. "LEFT",
  301. "LEN",
  302. "LOWER",
  303. "MID",
  304. "REPLACE",
  305. "REPT",
  306. "RIGHT",
  307. "SEARCH",
  308. "SUBSTITUTE",
  309. "TRIM",
  310. "UNICHAR",
  311. "UNICODE",
  312. "UPPER",
  313. "VALUE"
  314. ],
  315. tokenizer: {
  316. root: [
  317. { include: "@comments" },
  318. { include: "@whitespace" },
  319. { include: "@numbers" },
  320. { include: "@strings" },
  321. { include: "@complexIdentifiers" },
  322. [/[;,.]/, "delimiter"],
  323. [/[({})]/, "@brackets"],
  324. [
  325. /[a-z_][a-zA-Z0-9_]*/,
  326. {
  327. cases: {
  328. "@keywords": "keyword",
  329. "@functions": "keyword",
  330. "@default": "identifier"
  331. }
  332. }
  333. ],
  334. [/[<>=!%&+\-*/|~^]/, "operator"]
  335. ],
  336. whitespace: [[/\s+/, "white"]],
  337. comments: [
  338. [/\/\/+.*/, "comment"],
  339. [/\/\*/, { token: "comment.quote", next: "@comment" }]
  340. ],
  341. comment: [
  342. [/[^*/]+/, "comment"],
  343. [/\*\//, { token: "comment.quote", next: "@pop" }],
  344. [/./, "comment"]
  345. ],
  346. numbers: [
  347. [/0[xX][0-9a-fA-F]*/, "number"],
  348. [/[$][+-]*\d*(\.\d*)?/, "number"],
  349. [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, "number"]
  350. ],
  351. strings: [
  352. [/N"/, { token: "string", next: "@string" }],
  353. [/"/, { token: "string", next: "@string" }]
  354. ],
  355. string: [
  356. [/[^"]+/, "string"],
  357. [/""/, "string"],
  358. [/"/, { token: "string", next: "@pop" }]
  359. ],
  360. complexIdentifiers: [
  361. [/\[/, { token: "identifier.quote", next: "@bracketedIdentifier" }],
  362. [/'/, { token: "identifier.quote", next: "@quotedIdentifier" }]
  363. ],
  364. bracketedIdentifier: [
  365. [/[^\]]+/, "identifier"],
  366. [/]]/, "identifier"],
  367. [/]/, { token: "identifier.quote", next: "@pop" }]
  368. ],
  369. quotedIdentifier: [
  370. [/[^']+/, "identifier"],
  371. [/''/, "identifier"],
  372. [/'/, { token: "identifier.quote", next: "@pop" }]
  373. ]
  374. }
  375. };
  376. export {
  377. conf,
  378. language
  379. };