perl.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627
  1. "use strict";
  2. /*!-----------------------------------------------------------------------------
  3. * Copyright (c) Microsoft Corporation. All rights reserved.
  4. * Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
  5. * Released under the MIT license
  6. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  7. *-----------------------------------------------------------------------------*/
  8. define("vs/basic-languages/perl/perl", ["require"],(require)=>{
  9. var moduleExports = (() => {
  10. var __defProp = Object.defineProperty;
  11. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  12. var __getOwnPropNames = Object.getOwnPropertyNames;
  13. var __hasOwnProp = Object.prototype.hasOwnProperty;
  14. var __export = (target, all) => {
  15. for (var name in all)
  16. __defProp(target, name, { get: all[name], enumerable: true });
  17. };
  18. var __copyProps = (to, from, except, desc) => {
  19. if (from && typeof from === "object" || typeof from === "function") {
  20. for (let key of __getOwnPropNames(from))
  21. if (!__hasOwnProp.call(to, key) && key !== except)
  22. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  23. }
  24. return to;
  25. };
  26. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  27. // src/basic-languages/perl/perl.ts
  28. var perl_exports = {};
  29. __export(perl_exports, {
  30. conf: () => conf,
  31. language: () => language
  32. });
  33. var conf = {
  34. comments: {
  35. lineComment: "#"
  36. },
  37. brackets: [
  38. ["{", "}"],
  39. ["[", "]"],
  40. ["(", ")"]
  41. ],
  42. autoClosingPairs: [
  43. { open: "{", close: "}" },
  44. { open: "[", close: "]" },
  45. { open: "(", close: ")" },
  46. { open: '"', close: '"' },
  47. { open: "'", close: "'" },
  48. { open: "`", close: "`" }
  49. ],
  50. surroundingPairs: [
  51. { open: "{", close: "}" },
  52. { open: "[", close: "]" },
  53. { open: "(", close: ")" },
  54. { open: '"', close: '"' },
  55. { open: "'", close: "'" },
  56. { open: "`", close: "`" }
  57. ]
  58. };
  59. var language = {
  60. defaultToken: "",
  61. tokenPostfix: ".perl",
  62. brackets: [
  63. { token: "delimiter.bracket", open: "{", close: "}" },
  64. { token: "delimiter.parenthesis", open: "(", close: ")" },
  65. { token: "delimiter.square", open: "[", close: "]" }
  66. ],
  67. keywords: [
  68. "__DATA__",
  69. "else",
  70. "lock",
  71. "__END__",
  72. "elsif",
  73. "lt",
  74. "__FILE__",
  75. "eq",
  76. "__LINE__",
  77. "exp",
  78. "ne",
  79. "sub",
  80. "__PACKAGE__",
  81. "for",
  82. "no",
  83. "and",
  84. "foreach",
  85. "or",
  86. "unless",
  87. "cmp",
  88. "ge",
  89. "package",
  90. "until",
  91. "continue",
  92. "gt",
  93. "while",
  94. "CORE",
  95. "if",
  96. "xor",
  97. "do",
  98. "le",
  99. "__DIE__",
  100. "__WARN__"
  101. ],
  102. builtinFunctions: [
  103. "-A",
  104. "END",
  105. "length",
  106. "setpgrp",
  107. "-B",
  108. "endgrent",
  109. "link",
  110. "setpriority",
  111. "-b",
  112. "endhostent",
  113. "listen",
  114. "setprotoent",
  115. "-C",
  116. "endnetent",
  117. "local",
  118. "setpwent",
  119. "-c",
  120. "endprotoent",
  121. "localtime",
  122. "setservent",
  123. "-d",
  124. "endpwent",
  125. "log",
  126. "setsockopt",
  127. "-e",
  128. "endservent",
  129. "lstat",
  130. "shift",
  131. "-f",
  132. "eof",
  133. "map",
  134. "shmctl",
  135. "-g",
  136. "eval",
  137. "mkdir",
  138. "shmget",
  139. "-k",
  140. "exec",
  141. "msgctl",
  142. "shmread",
  143. "-l",
  144. "exists",
  145. "msgget",
  146. "shmwrite",
  147. "-M",
  148. "exit",
  149. "msgrcv",
  150. "shutdown",
  151. "-O",
  152. "fcntl",
  153. "msgsnd",
  154. "sin",
  155. "-o",
  156. "fileno",
  157. "my",
  158. "sleep",
  159. "-p",
  160. "flock",
  161. "next",
  162. "socket",
  163. "-r",
  164. "fork",
  165. "not",
  166. "socketpair",
  167. "-R",
  168. "format",
  169. "oct",
  170. "sort",
  171. "-S",
  172. "formline",
  173. "open",
  174. "splice",
  175. "-s",
  176. "getc",
  177. "opendir",
  178. "split",
  179. "-T",
  180. "getgrent",
  181. "ord",
  182. "sprintf",
  183. "-t",
  184. "getgrgid",
  185. "our",
  186. "sqrt",
  187. "-u",
  188. "getgrnam",
  189. "pack",
  190. "srand",
  191. "-w",
  192. "gethostbyaddr",
  193. "pipe",
  194. "stat",
  195. "-W",
  196. "gethostbyname",
  197. "pop",
  198. "state",
  199. "-X",
  200. "gethostent",
  201. "pos",
  202. "study",
  203. "-x",
  204. "getlogin",
  205. "print",
  206. "substr",
  207. "-z",
  208. "getnetbyaddr",
  209. "printf",
  210. "symlink",
  211. "abs",
  212. "getnetbyname",
  213. "prototype",
  214. "syscall",
  215. "accept",
  216. "getnetent",
  217. "push",
  218. "sysopen",
  219. "alarm",
  220. "getpeername",
  221. "quotemeta",
  222. "sysread",
  223. "atan2",
  224. "getpgrp",
  225. "rand",
  226. "sysseek",
  227. "AUTOLOAD",
  228. "getppid",
  229. "read",
  230. "system",
  231. "BEGIN",
  232. "getpriority",
  233. "readdir",
  234. "syswrite",
  235. "bind",
  236. "getprotobyname",
  237. "readline",
  238. "tell",
  239. "binmode",
  240. "getprotobynumber",
  241. "readlink",
  242. "telldir",
  243. "bless",
  244. "getprotoent",
  245. "readpipe",
  246. "tie",
  247. "break",
  248. "getpwent",
  249. "recv",
  250. "tied",
  251. "caller",
  252. "getpwnam",
  253. "redo",
  254. "time",
  255. "chdir",
  256. "getpwuid",
  257. "ref",
  258. "times",
  259. "CHECK",
  260. "getservbyname",
  261. "rename",
  262. "truncate",
  263. "chmod",
  264. "getservbyport",
  265. "require",
  266. "uc",
  267. "chomp",
  268. "getservent",
  269. "reset",
  270. "ucfirst",
  271. "chop",
  272. "getsockname",
  273. "return",
  274. "umask",
  275. "chown",
  276. "getsockopt",
  277. "reverse",
  278. "undef",
  279. "chr",
  280. "glob",
  281. "rewinddir",
  282. "UNITCHECK",
  283. "chroot",
  284. "gmtime",
  285. "rindex",
  286. "unlink",
  287. "close",
  288. "goto",
  289. "rmdir",
  290. "unpack",
  291. "closedir",
  292. "grep",
  293. "say",
  294. "unshift",
  295. "connect",
  296. "hex",
  297. "scalar",
  298. "untie",
  299. "cos",
  300. "index",
  301. "seek",
  302. "use",
  303. "crypt",
  304. "INIT",
  305. "seekdir",
  306. "utime",
  307. "dbmclose",
  308. "int",
  309. "select",
  310. "values",
  311. "dbmopen",
  312. "ioctl",
  313. "semctl",
  314. "vec",
  315. "defined",
  316. "join",
  317. "semget",
  318. "wait",
  319. "delete",
  320. "keys",
  321. "semop",
  322. "waitpid",
  323. "DESTROY",
  324. "kill",
  325. "send",
  326. "wantarray",
  327. "die",
  328. "last",
  329. "setgrent",
  330. "warn",
  331. "dump",
  332. "lc",
  333. "sethostent",
  334. "write",
  335. "each",
  336. "lcfirst",
  337. "setnetent"
  338. ],
  339. builtinFileHandlers: ["ARGV", "STDERR", "STDOUT", "ARGVOUT", "STDIN", "ENV"],
  340. builtinVariables: [
  341. "$!",
  342. "$^RE_TRIE_MAXBUF",
  343. "$LAST_REGEXP_CODE_RESULT",
  344. '$"',
  345. "$^S",
  346. "$LIST_SEPARATOR",
  347. "$#",
  348. "$^T",
  349. "$MATCH",
  350. "$$",
  351. "$^TAINT",
  352. "$MULTILINE_MATCHING",
  353. "$%",
  354. "$^UNICODE",
  355. "$NR",
  356. "$&",
  357. "$^UTF8LOCALE",
  358. "$OFMT",
  359. "$'",
  360. "$^V",
  361. "$OFS",
  362. "$(",
  363. "$^W",
  364. "$ORS",
  365. "$)",
  366. "$^WARNING_BITS",
  367. "$OS_ERROR",
  368. "$*",
  369. "$^WIDE_SYSTEM_CALLS",
  370. "$OSNAME",
  371. "$+",
  372. "$^X",
  373. "$OUTPUT_AUTO_FLUSH",
  374. "$,",
  375. "$_",
  376. "$OUTPUT_FIELD_SEPARATOR",
  377. "$-",
  378. "$`",
  379. "$OUTPUT_RECORD_SEPARATOR",
  380. "$.",
  381. "$a",
  382. "$PERL_VERSION",
  383. "$/",
  384. "$ACCUMULATOR",
  385. "$PERLDB",
  386. "$0",
  387. "$ARG",
  388. "$PID",
  389. "$:",
  390. "$ARGV",
  391. "$POSTMATCH",
  392. "$;",
  393. "$b",
  394. "$PREMATCH",
  395. "$<",
  396. "$BASETIME",
  397. "$PROCESS_ID",
  398. "$=",
  399. "$CHILD_ERROR",
  400. "$PROGRAM_NAME",
  401. "$>",
  402. "$COMPILING",
  403. "$REAL_GROUP_ID",
  404. "$?",
  405. "$DEBUGGING",
  406. "$REAL_USER_ID",
  407. "$@",
  408. "$EFFECTIVE_GROUP_ID",
  409. "$RS",
  410. "$[",
  411. "$EFFECTIVE_USER_ID",
  412. "$SUBSCRIPT_SEPARATOR",
  413. "$\\",
  414. "$EGID",
  415. "$SUBSEP",
  416. "$]",
  417. "$ERRNO",
  418. "$SYSTEM_FD_MAX",
  419. "$^",
  420. "$EUID",
  421. "$UID",
  422. "$^A",
  423. "$EVAL_ERROR",
  424. "$WARNING",
  425. "$^C",
  426. "$EXCEPTIONS_BEING_CAUGHT",
  427. "$|",
  428. "$^CHILD_ERROR_NATIVE",
  429. "$EXECUTABLE_NAME",
  430. "$~",
  431. "$^D",
  432. "$EXTENDED_OS_ERROR",
  433. "%!",
  434. "$^E",
  435. "$FORMAT_FORMFEED",
  436. "%^H",
  437. "$^ENCODING",
  438. "$FORMAT_LINE_BREAK_CHARACTERS",
  439. "%ENV",
  440. "$^F",
  441. "$FORMAT_LINES_LEFT",
  442. "%INC",
  443. "$^H",
  444. "$FORMAT_LINES_PER_PAGE",
  445. "%OVERLOAD",
  446. "$^I",
  447. "$FORMAT_NAME",
  448. "%SIG",
  449. "$^L",
  450. "$FORMAT_PAGE_NUMBER",
  451. "@+",
  452. "$^M",
  453. "$FORMAT_TOP_NAME",
  454. "@-",
  455. "$^N",
  456. "$GID",
  457. "@_",
  458. "$^O",
  459. "$INPLACE_EDIT",
  460. "@ARGV",
  461. "$^OPEN",
  462. "$INPUT_LINE_NUMBER",
  463. "@INC",
  464. "$^P",
  465. "$INPUT_RECORD_SEPARATOR",
  466. "@LAST_MATCH_START",
  467. "$^R",
  468. "$LAST_MATCH_END",
  469. "$^RE_DEBUG_FLAGS",
  470. "$LAST_PAREN_MATCH"
  471. ],
  472. symbols: /[:+\-\^*$&%@=<>!?|\/~\.]/,
  473. quoteLikeOps: ["qr", "m", "s", "q", "qq", "qx", "qw", "tr", "y"],
  474. escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,
  475. tokenizer: {
  476. root: [
  477. { include: "@whitespace" },
  478. [
  479. /[a-zA-Z\-_][\w\-_]*/,
  480. {
  481. cases: {
  482. "@keywords": "keyword",
  483. "@builtinFunctions": "type.identifier",
  484. "@builtinFileHandlers": "variable.predefined",
  485. "@quoteLikeOps": {
  486. token: "@rematch",
  487. next: "quotedConstructs"
  488. },
  489. "@default": ""
  490. }
  491. }
  492. ],
  493. [
  494. /[\$@%][*@#?\+\-\$!\w\\\^><~:;\.]+/,
  495. {
  496. cases: {
  497. "@builtinVariables": "variable.predefined",
  498. "@default": "variable"
  499. }
  500. }
  501. ],
  502. { include: "@strings" },
  503. { include: "@dblStrings" },
  504. { include: "@perldoc" },
  505. { include: "@heredoc" },
  506. [/[{}\[\]()]/, "@brackets"],
  507. [/[\/](?:(?:\[(?:\\]|[^\]])+\])|(?:\\\/|[^\]\/]))*[\/]\w*\s*(?=[).,;]|$)/, "regexp"],
  508. [/@symbols/, "operators"],
  509. { include: "@numbers" },
  510. [/[,;]/, "delimiter"]
  511. ],
  512. whitespace: [
  513. [/\s+/, "white"],
  514. [/(^#!.*$)/, "metatag"],
  515. [/(^#.*$)/, "comment"]
  516. ],
  517. numbers: [
  518. [/\d*\.\d+([eE][\-+]?\d+)?/, "number.float"],
  519. [/0[xX][0-9a-fA-F_]*[0-9a-fA-F]/, "number.hex"],
  520. [/\d+/, "number"]
  521. ],
  522. strings: [[/'/, "string", "@stringBody"]],
  523. stringBody: [
  524. [/'/, "string", "@popall"],
  525. [/\\'/, "string.escape"],
  526. [/./, "string"]
  527. ],
  528. dblStrings: [[/"/, "string", "@dblStringBody"]],
  529. dblStringBody: [
  530. [/"/, "string", "@popall"],
  531. [/@escapes/, "string.escape"],
  532. [/\\./, "string.escape.invalid"],
  533. { include: "@variables" },
  534. [/./, "string"]
  535. ],
  536. quotedConstructs: [
  537. [/(q|qw|tr|y)\s*\(/, { token: "string.delim", switchTo: "@qstring.(.)" }],
  538. [/(q|qw|tr|y)\s*\[/, { token: "string.delim", switchTo: "@qstring.[.]" }],
  539. [/(q|qw|tr|y)\s*\{/, { token: "string.delim", switchTo: "@qstring.{.}" }],
  540. [/(q|qw|tr|y)\s*</, { token: "string.delim", switchTo: "@qstring.<.>" }],
  541. [/(q|qw|tr|y)#/, { token: "string.delim", switchTo: "@qstring.#.#" }],
  542. [/(q|qw|tr|y)\s*([^A-Za-z0-9#\s])/, { token: "string.delim", switchTo: "@qstring.$2.$2" }],
  543. [/(q|qw|tr|y)\s+(\w)/, { token: "string.delim", switchTo: "@qstring.$2.$2" }],
  544. [/(qr|m|s)\s*\(/, { token: "regexp.delim", switchTo: "@qregexp.(.)" }],
  545. [/(qr|m|s)\s*\[/, { token: "regexp.delim", switchTo: "@qregexp.[.]" }],
  546. [/(qr|m|s)\s*\{/, { token: "regexp.delim", switchTo: "@qregexp.{.}" }],
  547. [/(qr|m|s)\s*</, { token: "regexp.delim", switchTo: "@qregexp.<.>" }],
  548. [/(qr|m|s)#/, { token: "regexp.delim", switchTo: "@qregexp.#.#" }],
  549. [/(qr|m|s)\s*([^A-Za-z0-9_#\s])/, { token: "regexp.delim", switchTo: "@qregexp.$2.$2" }],
  550. [/(qr|m|s)\s+(\w)/, { token: "regexp.delim", switchTo: "@qregexp.$2.$2" }],
  551. [/(qq|qx)\s*\(/, { token: "string.delim", switchTo: "@qqstring.(.)" }],
  552. [/(qq|qx)\s*\[/, { token: "string.delim", switchTo: "@qqstring.[.]" }],
  553. [/(qq|qx)\s*\{/, { token: "string.delim", switchTo: "@qqstring.{.}" }],
  554. [/(qq|qx)\s*</, { token: "string.delim", switchTo: "@qqstring.<.>" }],
  555. [/(qq|qx)#/, { token: "string.delim", switchTo: "@qqstring.#.#" }],
  556. [/(qq|qx)\s*([^A-Za-z0-9#\s])/, { token: "string.delim", switchTo: "@qqstring.$2.$2" }],
  557. [/(qq|qx)\s+(\w)/, { token: "string.delim", switchTo: "@qqstring.$2.$2" }]
  558. ],
  559. qstring: [
  560. [/\\./, "string.escape"],
  561. [
  562. /./,
  563. {
  564. cases: {
  565. "$#==$S3": { token: "string.delim", next: "@pop" },
  566. "$#==$S2": { token: "string.delim", next: "@push" },
  567. "@default": "string"
  568. }
  569. }
  570. ]
  571. ],
  572. qregexp: [
  573. { include: "@variables" },
  574. [/\\./, "regexp.escape"],
  575. [
  576. /./,
  577. {
  578. cases: {
  579. "$#==$S3": {
  580. token: "regexp.delim",
  581. next: "@regexpModifiers"
  582. },
  583. "$#==$S2": { token: "regexp.delim", next: "@push" },
  584. "@default": "regexp"
  585. }
  586. }
  587. ]
  588. ],
  589. regexpModifiers: [[/[msixpodualngcer]+/, { token: "regexp.modifier", next: "@popall" }]],
  590. qqstring: [{ include: "@variables" }, { include: "@qstring" }],
  591. heredoc: [
  592. [/<<\s*['"`]?([\w\-]+)['"`]?/, { token: "string.heredoc.delimiter", next: "@heredocBody.$1" }]
  593. ],
  594. heredocBody: [
  595. [
  596. /^([\w\-]+)$/,
  597. {
  598. cases: {
  599. "$1==$S2": [
  600. {
  601. token: "string.heredoc.delimiter",
  602. next: "@popall"
  603. }
  604. ],
  605. "@default": "string.heredoc"
  606. }
  607. }
  608. ],
  609. [/./, "string.heredoc"]
  610. ],
  611. perldoc: [[/^=\w/, "comment.doc", "@perldocBody"]],
  612. perldocBody: [
  613. [/^=cut\b/, "type.identifier", "@popall"],
  614. [/./, "comment.doc"]
  615. ],
  616. variables: [
  617. [/\$\w+/, "variable"],
  618. [/@\w+/, "variable"],
  619. [/%\w+/, "variable"]
  620. ]
  621. }
  622. };
  623. return __toCommonJS(perl_exports);
  624. })();
  625. return moduleExports;
  626. });