awk.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. Language: Awk
  3. Author: Matthew Daly <matthewbdaly@gmail.com>
  4. Website: https://www.gnu.org/software/gawk/manual/gawk.html
  5. Description: language definition for Awk scripts
  6. */
  7. /** @type LanguageFn */
  8. function awk(hljs) {
  9. const VARIABLE = {
  10. className: 'variable',
  11. variants: [
  12. { begin: /\$[\w\d#@][\w\d_]*/ },
  13. { begin: /\$\{(.*?)\}/ }
  14. ]
  15. };
  16. const KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';
  17. const STRING = {
  18. className: 'string',
  19. contains: [ hljs.BACKSLASH_ESCAPE ],
  20. variants: [
  21. {
  22. begin: /(u|b)?r?'''/,
  23. end: /'''/,
  24. relevance: 10
  25. },
  26. {
  27. begin: /(u|b)?r?"""/,
  28. end: /"""/,
  29. relevance: 10
  30. },
  31. {
  32. begin: /(u|r|ur)'/,
  33. end: /'/,
  34. relevance: 10
  35. },
  36. {
  37. begin: /(u|r|ur)"/,
  38. end: /"/,
  39. relevance: 10
  40. },
  41. {
  42. begin: /(b|br)'/,
  43. end: /'/
  44. },
  45. {
  46. begin: /(b|br)"/,
  47. end: /"/
  48. },
  49. hljs.APOS_STRING_MODE,
  50. hljs.QUOTE_STRING_MODE
  51. ]
  52. };
  53. return {
  54. name: 'Awk',
  55. keywords: { keyword: KEYWORDS },
  56. contains: [
  57. VARIABLE,
  58. STRING,
  59. hljs.REGEXP_MODE,
  60. hljs.HASH_COMMENT_MODE,
  61. hljs.NUMBER_MODE
  62. ]
  63. };
  64. }
  65. module.exports = awk;