sql.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821
  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/sql/sql.ts
  8. var conf = {
  9. comments: {
  10. lineComment: "--",
  11. blockComment: ["/*", "*/"]
  12. },
  13. brackets: [
  14. ["{", "}"],
  15. ["[", "]"],
  16. ["(", ")"]
  17. ],
  18. autoClosingPairs: [
  19. { open: "{", close: "}" },
  20. { open: "[", close: "]" },
  21. { open: "(", close: ")" },
  22. { open: '"', close: '"' },
  23. { open: "'", close: "'" }
  24. ],
  25. surroundingPairs: [
  26. { open: "{", close: "}" },
  27. { open: "[", close: "]" },
  28. { open: "(", close: ")" },
  29. { open: '"', close: '"' },
  30. { open: "'", close: "'" }
  31. ]
  32. };
  33. var language = {
  34. defaultToken: "",
  35. tokenPostfix: ".sql",
  36. ignoreCase: true,
  37. brackets: [
  38. { open: "[", close: "]", token: "delimiter.square" },
  39. { open: "(", close: ")", token: "delimiter.parenthesis" }
  40. ],
  41. keywords: [
  42. "ABORT",
  43. "ABSOLUTE",
  44. "ACTION",
  45. "ADA",
  46. "ADD",
  47. "AFTER",
  48. "ALL",
  49. "ALLOCATE",
  50. "ALTER",
  51. "ALWAYS",
  52. "ANALYZE",
  53. "AND",
  54. "ANY",
  55. "ARE",
  56. "AS",
  57. "ASC",
  58. "ASSERTION",
  59. "AT",
  60. "ATTACH",
  61. "AUTHORIZATION",
  62. "AUTOINCREMENT",
  63. "AVG",
  64. "BACKUP",
  65. "BEFORE",
  66. "BEGIN",
  67. "BETWEEN",
  68. "BIT",
  69. "BIT_LENGTH",
  70. "BOTH",
  71. "BREAK",
  72. "BROWSE",
  73. "BULK",
  74. "BY",
  75. "CASCADE",
  76. "CASCADED",
  77. "CASE",
  78. "CAST",
  79. "CATALOG",
  80. "CHAR",
  81. "CHARACTER",
  82. "CHARACTER_LENGTH",
  83. "CHAR_LENGTH",
  84. "CHECK",
  85. "CHECKPOINT",
  86. "CLOSE",
  87. "CLUSTERED",
  88. "COALESCE",
  89. "COLLATE",
  90. "COLLATION",
  91. "COLUMN",
  92. "COMMIT",
  93. "COMPUTE",
  94. "CONFLICT",
  95. "CONNECT",
  96. "CONNECTION",
  97. "CONSTRAINT",
  98. "CONSTRAINTS",
  99. "CONTAINS",
  100. "CONTAINSTABLE",
  101. "CONTINUE",
  102. "CONVERT",
  103. "CORRESPONDING",
  104. "COUNT",
  105. "CREATE",
  106. "CROSS",
  107. "CURRENT",
  108. "CURRENT_DATE",
  109. "CURRENT_TIME",
  110. "CURRENT_TIMESTAMP",
  111. "CURRENT_USER",
  112. "CURSOR",
  113. "DATABASE",
  114. "DATE",
  115. "DAY",
  116. "DBCC",
  117. "DEALLOCATE",
  118. "DEC",
  119. "DECIMAL",
  120. "DECLARE",
  121. "DEFAULT",
  122. "DEFERRABLE",
  123. "DEFERRED",
  124. "DELETE",
  125. "DENY",
  126. "DESC",
  127. "DESCRIBE",
  128. "DESCRIPTOR",
  129. "DETACH",
  130. "DIAGNOSTICS",
  131. "DISCONNECT",
  132. "DISK",
  133. "DISTINCT",
  134. "DISTRIBUTED",
  135. "DO",
  136. "DOMAIN",
  137. "DOUBLE",
  138. "DROP",
  139. "DUMP",
  140. "EACH",
  141. "ELSE",
  142. "END",
  143. "END-EXEC",
  144. "ERRLVL",
  145. "ESCAPE",
  146. "EXCEPT",
  147. "EXCEPTION",
  148. "EXCLUDE",
  149. "EXCLUSIVE",
  150. "EXEC",
  151. "EXECUTE",
  152. "EXISTS",
  153. "EXIT",
  154. "EXPLAIN",
  155. "EXTERNAL",
  156. "EXTRACT",
  157. "FAIL",
  158. "FALSE",
  159. "FETCH",
  160. "FILE",
  161. "FILLFACTOR",
  162. "FILTER",
  163. "FIRST",
  164. "FLOAT",
  165. "FOLLOWING",
  166. "FOR",
  167. "FOREIGN",
  168. "FORTRAN",
  169. "FOUND",
  170. "FREETEXT",
  171. "FREETEXTTABLE",
  172. "FROM",
  173. "FULL",
  174. "FUNCTION",
  175. "GENERATED",
  176. "GET",
  177. "GLOB",
  178. "GLOBAL",
  179. "GO",
  180. "GOTO",
  181. "GRANT",
  182. "GROUP",
  183. "GROUPS",
  184. "HAVING",
  185. "HOLDLOCK",
  186. "HOUR",
  187. "IDENTITY",
  188. "IDENTITYCOL",
  189. "IDENTITY_INSERT",
  190. "IF",
  191. "IGNORE",
  192. "IMMEDIATE",
  193. "IN",
  194. "INCLUDE",
  195. "INDEX",
  196. "INDEXED",
  197. "INDICATOR",
  198. "INITIALLY",
  199. "INNER",
  200. "INPUT",
  201. "INSENSITIVE",
  202. "INSERT",
  203. "INSTEAD",
  204. "INT",
  205. "INTEGER",
  206. "INTERSECT",
  207. "INTERVAL",
  208. "INTO",
  209. "IS",
  210. "ISNULL",
  211. "ISOLATION",
  212. "JOIN",
  213. "KEY",
  214. "KILL",
  215. "LANGUAGE",
  216. "LAST",
  217. "LEADING",
  218. "LEFT",
  219. "LEVEL",
  220. "LIKE",
  221. "LIMIT",
  222. "LINENO",
  223. "LOAD",
  224. "LOCAL",
  225. "LOWER",
  226. "MATCH",
  227. "MATERIALIZED",
  228. "MAX",
  229. "MERGE",
  230. "MIN",
  231. "MINUTE",
  232. "MODULE",
  233. "MONTH",
  234. "NAMES",
  235. "NATIONAL",
  236. "NATURAL",
  237. "NCHAR",
  238. "NEXT",
  239. "NO",
  240. "NOCHECK",
  241. "NONCLUSTERED",
  242. "NONE",
  243. "NOT",
  244. "NOTHING",
  245. "NOTNULL",
  246. "NULL",
  247. "NULLIF",
  248. "NULLS",
  249. "NUMERIC",
  250. "OCTET_LENGTH",
  251. "OF",
  252. "OFF",
  253. "OFFSET",
  254. "OFFSETS",
  255. "ON",
  256. "ONLY",
  257. "OPEN",
  258. "OPENDATASOURCE",
  259. "OPENQUERY",
  260. "OPENROWSET",
  261. "OPENXML",
  262. "OPTION",
  263. "OR",
  264. "ORDER",
  265. "OTHERS",
  266. "OUTER",
  267. "OUTPUT",
  268. "OVER",
  269. "OVERLAPS",
  270. "PAD",
  271. "PARTIAL",
  272. "PARTITION",
  273. "PASCAL",
  274. "PERCENT",
  275. "PIVOT",
  276. "PLAN",
  277. "POSITION",
  278. "PRAGMA",
  279. "PRECEDING",
  280. "PRECISION",
  281. "PREPARE",
  282. "PRESERVE",
  283. "PRIMARY",
  284. "PRINT",
  285. "PRIOR",
  286. "PRIVILEGES",
  287. "PROC",
  288. "PROCEDURE",
  289. "PUBLIC",
  290. "QUERY",
  291. "RAISE",
  292. "RAISERROR",
  293. "RANGE",
  294. "READ",
  295. "READTEXT",
  296. "REAL",
  297. "RECONFIGURE",
  298. "RECURSIVE",
  299. "REFERENCES",
  300. "REGEXP",
  301. "REINDEX",
  302. "RELATIVE",
  303. "RELEASE",
  304. "RENAME",
  305. "REPLACE",
  306. "REPLICATION",
  307. "RESTORE",
  308. "RESTRICT",
  309. "RETURN",
  310. "RETURNING",
  311. "REVERT",
  312. "REVOKE",
  313. "RIGHT",
  314. "ROLLBACK",
  315. "ROW",
  316. "ROWCOUNT",
  317. "ROWGUIDCOL",
  318. "ROWS",
  319. "RULE",
  320. "SAVE",
  321. "SAVEPOINT",
  322. "SCHEMA",
  323. "SCROLL",
  324. "SECOND",
  325. "SECTION",
  326. "SECURITYAUDIT",
  327. "SELECT",
  328. "SEMANTICKEYPHRASETABLE",
  329. "SEMANTICSIMILARITYDETAILSTABLE",
  330. "SEMANTICSIMILARITYTABLE",
  331. "SESSION",
  332. "SESSION_USER",
  333. "SET",
  334. "SETUSER",
  335. "SHUTDOWN",
  336. "SIZE",
  337. "SMALLINT",
  338. "SOME",
  339. "SPACE",
  340. "SQL",
  341. "SQLCA",
  342. "SQLCODE",
  343. "SQLERROR",
  344. "SQLSTATE",
  345. "SQLWARNING",
  346. "STATISTICS",
  347. "SUBSTRING",
  348. "SUM",
  349. "SYSTEM_USER",
  350. "TABLE",
  351. "TABLESAMPLE",
  352. "TEMP",
  353. "TEMPORARY",
  354. "TEXTSIZE",
  355. "THEN",
  356. "TIES",
  357. "TIME",
  358. "TIMESTAMP",
  359. "TIMEZONE_HOUR",
  360. "TIMEZONE_MINUTE",
  361. "TO",
  362. "TOP",
  363. "TRAILING",
  364. "TRAN",
  365. "TRANSACTION",
  366. "TRANSLATE",
  367. "TRANSLATION",
  368. "TRIGGER",
  369. "TRIM",
  370. "TRUE",
  371. "TRUNCATE",
  372. "TRY_CONVERT",
  373. "TSEQUAL",
  374. "UNBOUNDED",
  375. "UNION",
  376. "UNIQUE",
  377. "UNKNOWN",
  378. "UNPIVOT",
  379. "UPDATE",
  380. "UPDATETEXT",
  381. "UPPER",
  382. "USAGE",
  383. "USE",
  384. "USER",
  385. "USING",
  386. "VACUUM",
  387. "VALUE",
  388. "VALUES",
  389. "VARCHAR",
  390. "VARYING",
  391. "VIEW",
  392. "VIRTUAL",
  393. "WAITFOR",
  394. "WHEN",
  395. "WHENEVER",
  396. "WHERE",
  397. "WHILE",
  398. "WINDOW",
  399. "WITH",
  400. "WITHIN GROUP",
  401. "WITHOUT",
  402. "WORK",
  403. "WRITE",
  404. "WRITETEXT",
  405. "YEAR",
  406. "ZONE"
  407. ],
  408. operators: [
  409. "ALL",
  410. "AND",
  411. "ANY",
  412. "BETWEEN",
  413. "EXISTS",
  414. "IN",
  415. "LIKE",
  416. "NOT",
  417. "OR",
  418. "SOME",
  419. "EXCEPT",
  420. "INTERSECT",
  421. "UNION",
  422. "APPLY",
  423. "CROSS",
  424. "FULL",
  425. "INNER",
  426. "JOIN",
  427. "LEFT",
  428. "OUTER",
  429. "RIGHT",
  430. "CONTAINS",
  431. "FREETEXT",
  432. "IS",
  433. "NULL",
  434. "PIVOT",
  435. "UNPIVOT",
  436. "MATCHED"
  437. ],
  438. builtinFunctions: [
  439. "AVG",
  440. "CHECKSUM_AGG",
  441. "COUNT",
  442. "COUNT_BIG",
  443. "GROUPING",
  444. "GROUPING_ID",
  445. "MAX",
  446. "MIN",
  447. "SUM",
  448. "STDEV",
  449. "STDEVP",
  450. "VAR",
  451. "VARP",
  452. "CUME_DIST",
  453. "FIRST_VALUE",
  454. "LAG",
  455. "LAST_VALUE",
  456. "LEAD",
  457. "PERCENTILE_CONT",
  458. "PERCENTILE_DISC",
  459. "PERCENT_RANK",
  460. "COLLATE",
  461. "COLLATIONPROPERTY",
  462. "TERTIARY_WEIGHTS",
  463. "FEDERATION_FILTERING_VALUE",
  464. "CAST",
  465. "CONVERT",
  466. "PARSE",
  467. "TRY_CAST",
  468. "TRY_CONVERT",
  469. "TRY_PARSE",
  470. "ASYMKEY_ID",
  471. "ASYMKEYPROPERTY",
  472. "CERTPROPERTY",
  473. "CERT_ID",
  474. "CRYPT_GEN_RANDOM",
  475. "DECRYPTBYASYMKEY",
  476. "DECRYPTBYCERT",
  477. "DECRYPTBYKEY",
  478. "DECRYPTBYKEYAUTOASYMKEY",
  479. "DECRYPTBYKEYAUTOCERT",
  480. "DECRYPTBYPASSPHRASE",
  481. "ENCRYPTBYASYMKEY",
  482. "ENCRYPTBYCERT",
  483. "ENCRYPTBYKEY",
  484. "ENCRYPTBYPASSPHRASE",
  485. "HASHBYTES",
  486. "IS_OBJECTSIGNED",
  487. "KEY_GUID",
  488. "KEY_ID",
  489. "KEY_NAME",
  490. "SIGNBYASYMKEY",
  491. "SIGNBYCERT",
  492. "SYMKEYPROPERTY",
  493. "VERIFYSIGNEDBYCERT",
  494. "VERIFYSIGNEDBYASYMKEY",
  495. "CURSOR_STATUS",
  496. "DATALENGTH",
  497. "IDENT_CURRENT",
  498. "IDENT_INCR",
  499. "IDENT_SEED",
  500. "IDENTITY",
  501. "SQL_VARIANT_PROPERTY",
  502. "CURRENT_TIMESTAMP",
  503. "DATEADD",
  504. "DATEDIFF",
  505. "DATEFROMPARTS",
  506. "DATENAME",
  507. "DATEPART",
  508. "DATETIME2FROMPARTS",
  509. "DATETIMEFROMPARTS",
  510. "DATETIMEOFFSETFROMPARTS",
  511. "DAY",
  512. "EOMONTH",
  513. "GETDATE",
  514. "GETUTCDATE",
  515. "ISDATE",
  516. "MONTH",
  517. "SMALLDATETIMEFROMPARTS",
  518. "SWITCHOFFSET",
  519. "SYSDATETIME",
  520. "SYSDATETIMEOFFSET",
  521. "SYSUTCDATETIME",
  522. "TIMEFROMPARTS",
  523. "TODATETIMEOFFSET",
  524. "YEAR",
  525. "CHOOSE",
  526. "COALESCE",
  527. "IIF",
  528. "NULLIF",
  529. "ABS",
  530. "ACOS",
  531. "ASIN",
  532. "ATAN",
  533. "ATN2",
  534. "CEILING",
  535. "COS",
  536. "COT",
  537. "DEGREES",
  538. "EXP",
  539. "FLOOR",
  540. "LOG",
  541. "LOG10",
  542. "PI",
  543. "POWER",
  544. "RADIANS",
  545. "RAND",
  546. "ROUND",
  547. "SIGN",
  548. "SIN",
  549. "SQRT",
  550. "SQUARE",
  551. "TAN",
  552. "APP_NAME",
  553. "APPLOCK_MODE",
  554. "APPLOCK_TEST",
  555. "ASSEMBLYPROPERTY",
  556. "COL_LENGTH",
  557. "COL_NAME",
  558. "COLUMNPROPERTY",
  559. "DATABASE_PRINCIPAL_ID",
  560. "DATABASEPROPERTYEX",
  561. "DB_ID",
  562. "DB_NAME",
  563. "FILE_ID",
  564. "FILE_IDEX",
  565. "FILE_NAME",
  566. "FILEGROUP_ID",
  567. "FILEGROUP_NAME",
  568. "FILEGROUPPROPERTY",
  569. "FILEPROPERTY",
  570. "FULLTEXTCATALOGPROPERTY",
  571. "FULLTEXTSERVICEPROPERTY",
  572. "INDEX_COL",
  573. "INDEXKEY_PROPERTY",
  574. "INDEXPROPERTY",
  575. "OBJECT_DEFINITION",
  576. "OBJECT_ID",
  577. "OBJECT_NAME",
  578. "OBJECT_SCHEMA_NAME",
  579. "OBJECTPROPERTY",
  580. "OBJECTPROPERTYEX",
  581. "ORIGINAL_DB_NAME",
  582. "PARSENAME",
  583. "SCHEMA_ID",
  584. "SCHEMA_NAME",
  585. "SCOPE_IDENTITY",
  586. "SERVERPROPERTY",
  587. "STATS_DATE",
  588. "TYPE_ID",
  589. "TYPE_NAME",
  590. "TYPEPROPERTY",
  591. "DENSE_RANK",
  592. "NTILE",
  593. "RANK",
  594. "ROW_NUMBER",
  595. "PUBLISHINGSERVERNAME",
  596. "OPENDATASOURCE",
  597. "OPENQUERY",
  598. "OPENROWSET",
  599. "OPENXML",
  600. "CERTENCODED",
  601. "CERTPRIVATEKEY",
  602. "CURRENT_USER",
  603. "HAS_DBACCESS",
  604. "HAS_PERMS_BY_NAME",
  605. "IS_MEMBER",
  606. "IS_ROLEMEMBER",
  607. "IS_SRVROLEMEMBER",
  608. "LOGINPROPERTY",
  609. "ORIGINAL_LOGIN",
  610. "PERMISSIONS",
  611. "PWDENCRYPT",
  612. "PWDCOMPARE",
  613. "SESSION_USER",
  614. "SESSIONPROPERTY",
  615. "SUSER_ID",
  616. "SUSER_NAME",
  617. "SUSER_SID",
  618. "SUSER_SNAME",
  619. "SYSTEM_USER",
  620. "USER",
  621. "USER_ID",
  622. "USER_NAME",
  623. "ASCII",
  624. "CHAR",
  625. "CHARINDEX",
  626. "CONCAT",
  627. "DIFFERENCE",
  628. "FORMAT",
  629. "LEFT",
  630. "LEN",
  631. "LOWER",
  632. "LTRIM",
  633. "NCHAR",
  634. "PATINDEX",
  635. "QUOTENAME",
  636. "REPLACE",
  637. "REPLICATE",
  638. "REVERSE",
  639. "RIGHT",
  640. "RTRIM",
  641. "SOUNDEX",
  642. "SPACE",
  643. "STR",
  644. "STUFF",
  645. "SUBSTRING",
  646. "UNICODE",
  647. "UPPER",
  648. "BINARY_CHECKSUM",
  649. "CHECKSUM",
  650. "CONNECTIONPROPERTY",
  651. "CONTEXT_INFO",
  652. "CURRENT_REQUEST_ID",
  653. "ERROR_LINE",
  654. "ERROR_NUMBER",
  655. "ERROR_MESSAGE",
  656. "ERROR_PROCEDURE",
  657. "ERROR_SEVERITY",
  658. "ERROR_STATE",
  659. "FORMATMESSAGE",
  660. "GETANSINULL",
  661. "GET_FILESTREAM_TRANSACTION_CONTEXT",
  662. "HOST_ID",
  663. "HOST_NAME",
  664. "ISNULL",
  665. "ISNUMERIC",
  666. "MIN_ACTIVE_ROWVERSION",
  667. "NEWID",
  668. "NEWSEQUENTIALID",
  669. "ROWCOUNT_BIG",
  670. "XACT_STATE",
  671. "TEXTPTR",
  672. "TEXTVALID",
  673. "COLUMNS_UPDATED",
  674. "EVENTDATA",
  675. "TRIGGER_NESTLEVEL",
  676. "UPDATE",
  677. "CHANGETABLE",
  678. "CHANGE_TRACKING_CONTEXT",
  679. "CHANGE_TRACKING_CURRENT_VERSION",
  680. "CHANGE_TRACKING_IS_COLUMN_IN_MASK",
  681. "CHANGE_TRACKING_MIN_VALID_VERSION",
  682. "CONTAINSTABLE",
  683. "FREETEXTTABLE",
  684. "SEMANTICKEYPHRASETABLE",
  685. "SEMANTICSIMILARITYDETAILSTABLE",
  686. "SEMANTICSIMILARITYTABLE",
  687. "FILETABLEROOTPATH",
  688. "GETFILENAMESPACEPATH",
  689. "GETPATHLOCATOR",
  690. "PATHNAME",
  691. "GET_TRANSMISSION_STATUS"
  692. ],
  693. builtinVariables: [
  694. "@@DATEFIRST",
  695. "@@DBTS",
  696. "@@LANGID",
  697. "@@LANGUAGE",
  698. "@@LOCK_TIMEOUT",
  699. "@@MAX_CONNECTIONS",
  700. "@@MAX_PRECISION",
  701. "@@NESTLEVEL",
  702. "@@OPTIONS",
  703. "@@REMSERVER",
  704. "@@SERVERNAME",
  705. "@@SERVICENAME",
  706. "@@SPID",
  707. "@@TEXTSIZE",
  708. "@@VERSION",
  709. "@@CURSOR_ROWS",
  710. "@@FETCH_STATUS",
  711. "@@DATEFIRST",
  712. "@@PROCID",
  713. "@@ERROR",
  714. "@@IDENTITY",
  715. "@@ROWCOUNT",
  716. "@@TRANCOUNT",
  717. "@@CONNECTIONS",
  718. "@@CPU_BUSY",
  719. "@@IDLE",
  720. "@@IO_BUSY",
  721. "@@PACKET_ERRORS",
  722. "@@PACK_RECEIVED",
  723. "@@PACK_SENT",
  724. "@@TIMETICKS",
  725. "@@TOTAL_ERRORS",
  726. "@@TOTAL_READ",
  727. "@@TOTAL_WRITE"
  728. ],
  729. pseudoColumns: ["$ACTION", "$IDENTITY", "$ROWGUID", "$PARTITION"],
  730. tokenizer: {
  731. root: [
  732. { include: "@comments" },
  733. { include: "@whitespace" },
  734. { include: "@pseudoColumns" },
  735. { include: "@numbers" },
  736. { include: "@strings" },
  737. { include: "@complexIdentifiers" },
  738. { include: "@scopes" },
  739. [/[;,.]/, "delimiter"],
  740. [/[()]/, "@brackets"],
  741. [
  742. /[\w@#$]+/,
  743. {
  744. cases: {
  745. "@operators": "operator",
  746. "@builtinVariables": "predefined",
  747. "@builtinFunctions": "predefined",
  748. "@keywords": "keyword",
  749. "@default": "identifier"
  750. }
  751. }
  752. ],
  753. [/[<>=!%&+\-*/|~^]/, "operator"]
  754. ],
  755. whitespace: [[/\s+/, "white"]],
  756. comments: [
  757. [/--+.*/, "comment"],
  758. [/\/\*/, { token: "comment.quote", next: "@comment" }]
  759. ],
  760. comment: [
  761. [/[^*/]+/, "comment"],
  762. [/\*\//, { token: "comment.quote", next: "@pop" }],
  763. [/./, "comment"]
  764. ],
  765. pseudoColumns: [
  766. [
  767. /[$][A-Za-z_][\w@#$]*/,
  768. {
  769. cases: {
  770. "@pseudoColumns": "predefined",
  771. "@default": "identifier"
  772. }
  773. }
  774. ]
  775. ],
  776. numbers: [
  777. [/0[xX][0-9a-fA-F]*/, "number"],
  778. [/[$][+-]*\d*(\.\d*)?/, "number"],
  779. [/((\d+(\.\d*)?)|(\.\d+))([eE][\-+]?\d+)?/, "number"]
  780. ],
  781. strings: [
  782. [/N'/, { token: "string", next: "@string" }],
  783. [/'/, { token: "string", next: "@string" }]
  784. ],
  785. string: [
  786. [/[^']+/, "string"],
  787. [/''/, "string"],
  788. [/'/, { token: "string", next: "@pop" }]
  789. ],
  790. complexIdentifiers: [
  791. [/\[/, { token: "identifier.quote", next: "@bracketedIdentifier" }],
  792. [/"/, { token: "identifier.quote", next: "@quotedIdentifier" }]
  793. ],
  794. bracketedIdentifier: [
  795. [/[^\]]+/, "identifier"],
  796. [/]]/, "identifier"],
  797. [/]/, { token: "identifier.quote", next: "@pop" }]
  798. ],
  799. quotedIdentifier: [
  800. [/[^"]+/, "identifier"],
  801. [/""/, "identifier"],
  802. [/"/, { token: "identifier.quote", next: "@pop" }]
  803. ],
  804. scopes: [
  805. [/BEGIN\s+(DISTRIBUTED\s+)?TRAN(SACTION)?\b/i, "keyword"],
  806. [/BEGIN\s+TRY\b/i, { token: "keyword.try" }],
  807. [/END\s+TRY\b/i, { token: "keyword.try" }],
  808. [/BEGIN\s+CATCH\b/i, { token: "keyword.catch" }],
  809. [/END\s+CATCH\b/i, { token: "keyword.catch" }],
  810. [/(BEGIN|CASE)\b/i, { token: "keyword.block" }],
  811. [/END\b/i, { token: "keyword.block" }],
  812. [/WHEN\b/i, { token: "keyword.choice" }],
  813. [/THEN\b/i, { token: "keyword.choice" }]
  814. ]
  815. }
  816. };
  817. export {
  818. conf,
  819. language
  820. };