msdax.js 10 KB

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