numbat.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. hljs.registerLanguage('numbat', function(hljs) {
  2. return {
  3. name: 'Numbat',
  4. aliases: ['nbt'],
  5. case_insensitive: false,
  6. keywords: {
  7. keyword: 'per to let fn where dimension unit use struct long short both none if then else true false print assert assert_eq type',
  8. },
  9. contains: [
  10. hljs.HASH_COMMENT_MODE,
  11. hljs.BINARY_NUMBER_MODE,
  12. hljs.QUOTE_STRING_MODE,
  13. {
  14. className: 'number',
  15. begin: /\b0o[0-7]+\b/
  16. },
  17. {
  18. className: 'number',
  19. begin: '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b[0-9_]+(\\.[0-9_]*)?|\\.[0-9_]+)([eE][-+]?[0-9_]+)?|NaN|inf)'
  20. },
  21. {
  22. className: 'meta',
  23. begin: /@[a-z_]*/
  24. },
  25. {
  26. className: 'title',
  27. begin: /(?<=(\)\s*(->|[→➞])|[:=<\/\*×·])\s*)\b[A-Z][a-zA-Z0-9_]*\b/,
  28. },
  29. {
  30. className: 'operator',
  31. variants: [
  32. { begin: '\\+' },
  33. { begin: '-' },
  34. { begin: '\\*' },
  35. { begin: '/' },
  36. { begin: '\\^' },
  37. { begin: '÷' },
  38. { begin: '×' },
  39. { begin: '=' },
  40. { begin: '->' },
  41. { begin: '→' },
  42. { begin: '➞' }
  43. ]
  44. },
  45. ]
  46. };
  47. });