fsharp.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. Language: F#
  3. Author: Jonas Follesø <jonas@follesoe.no>
  4. Contributors: Troy Kershaw <hello@troykershaw.com>, Henrik Feldt <henrik@haf.se>
  5. Website: https://docs.microsoft.com/en-us/dotnet/fsharp/
  6. Category: functional
  7. */
  8. function fsharp(hljs) {
  9. var TYPEPARAM = {
  10. begin: '<', end: '>',
  11. contains: [
  12. hljs.inherit(hljs.TITLE_MODE, {begin: /'[a-zA-Z0-9_]+/})
  13. ]
  14. };
  15. return {
  16. name: 'F#',
  17. aliases: ['fs'],
  18. keywords:
  19. 'abstract and as assert base begin class default delegate do done ' +
  20. 'downcast downto elif else end exception extern false finally for ' +
  21. 'fun function global if in inherit inline interface internal lazy let ' +
  22. 'match member module mutable namespace new null of open or ' +
  23. 'override private public rec return sig static struct then to ' +
  24. 'true try type upcast use val void when while with yield',
  25. illegal: /\/\*/,
  26. contains: [
  27. {
  28. // monad builder keywords (matches before non-bang kws)
  29. className: 'keyword',
  30. begin: /\b(yield|return|let|do)!/
  31. },
  32. {
  33. className: 'string',
  34. begin: '@"', end: '"',
  35. contains: [{begin: '""'}]
  36. },
  37. {
  38. className: 'string',
  39. begin: '"""', end: '"""'
  40. },
  41. hljs.COMMENT('\\(\\*', '\\*\\)'),
  42. {
  43. className: 'class',
  44. beginKeywords: 'type', end: '\\(|=|$', excludeEnd: true,
  45. contains: [
  46. hljs.UNDERSCORE_TITLE_MODE,
  47. TYPEPARAM
  48. ]
  49. },
  50. {
  51. className: 'meta',
  52. begin: '\\[<', end: '>\\]',
  53. relevance: 10
  54. },
  55. {
  56. className: 'symbol',
  57. begin: '\\B(\'[A-Za-z])\\b',
  58. contains: [hljs.BACKSLASH_ESCAPE]
  59. },
  60. hljs.C_LINE_COMMENT_MODE,
  61. hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
  62. hljs.C_NUMBER_MODE
  63. ]
  64. };
  65. }
  66. module.exports = fsharp;