awk.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. var VARIABLE = {
  10. className: 'variable',
  11. variants: [
  12. {begin: /\$[\w\d#@][\w\d_]*/},
  13. {begin: /\$\{(.*?)}/}
  14. ]
  15. };
  16. var KEYWORDS = 'BEGIN END if else while do for in break continue delete next nextfile function func exit|10';
  17. var STRING = {
  18. className: 'string',
  19. contains: [hljs.BACKSLASH_ESCAPE],
  20. variants: [
  21. {
  22. begin: /(u|b)?r?'''/, end: /'''/,
  23. relevance: 10
  24. },
  25. {
  26. begin: /(u|b)?r?"""/, end: /"""/,
  27. relevance: 10
  28. },
  29. {
  30. begin: /(u|r|ur)'/, end: /'/,
  31. relevance: 10
  32. },
  33. {
  34. begin: /(u|r|ur)"/, end: /"/,
  35. relevance: 10
  36. },
  37. {
  38. begin: /(b|br)'/, end: /'/
  39. },
  40. {
  41. begin: /(b|br)"/, end: /"/
  42. },
  43. hljs.APOS_STRING_MODE,
  44. hljs.QUOTE_STRING_MODE
  45. ]
  46. };
  47. return {
  48. name: 'Awk',
  49. keywords: {
  50. keyword: KEYWORDS
  51. },
  52. contains: [
  53. VARIABLE,
  54. STRING,
  55. hljs.REGEXP_MODE,
  56. hljs.HASH_COMMENT_MODE,
  57. hljs.NUMBER_MODE
  58. ]
  59. }
  60. }
  61. module.exports = awk;