flix.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. Language: Flix
  3. Category: functional
  4. Author: Magnus Madsen <mmadsen@uwaterloo.ca>
  5. Website: https://flix.dev/
  6. */
  7. function flix (hljs) {
  8. var CHAR = {
  9. className: 'string',
  10. begin: /'(.|\\[xXuU][a-zA-Z0-9]+)'/
  11. };
  12. var STRING = {
  13. className: 'string',
  14. variants: [
  15. {
  16. begin: '"', end: '"'
  17. }
  18. ]
  19. };
  20. var NAME = {
  21. className: 'title',
  22. begin: /[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/
  23. };
  24. var METHOD = {
  25. className: 'function',
  26. beginKeywords: 'def',
  27. end: /[:={\[(\n;]/,
  28. excludeEnd: true,
  29. contains: [NAME]
  30. };
  31. return {
  32. name: 'Flix',
  33. keywords: {
  34. literal: 'true false',
  35. keyword: 'case class def else enum if impl import in lat rel index let match namespace switch type yield with'
  36. },
  37. contains: [
  38. hljs.C_LINE_COMMENT_MODE,
  39. hljs.C_BLOCK_COMMENT_MODE,
  40. CHAR,
  41. STRING,
  42. METHOD,
  43. hljs.C_NUMBER_MODE
  44. ]
  45. };
  46. }
  47. module.exports = flix;