1
0

ceylon.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*
  2. Language: Ceylon
  3. Author: Lucas Werkmeister <[email protected]>
  4. */
  5. function(hljs) {
  6. // 2.3. Identifiers and keywords
  7. var KEYWORDS =
  8. 'assembly module package import alias class interface object given value ' +
  9. 'assign void function new of extends satisfies abstracts in out return ' +
  10. 'break continue throw assert dynamic if else switch case for while try ' +
  11. 'catch finally then let this outer super is exists nonempty';
  12. // 7.4.1 Declaration Modifiers
  13. var DECLARATION_MODIFIERS =
  14. 'shared abstract formal default actual variable late native deprecated' +
  15. 'final sealed annotation suppressWarnings small';
  16. // 7.4.2 Documentation
  17. var DOCUMENTATION =
  18. 'doc by license see throws tagged';
  19. var SUBST = {
  20. className: 'subst', excludeBegin: true, excludeEnd: true,
  21. begin: /``/, end: /``/,
  22. keywords: KEYWORDS,
  23. relevance: 10
  24. };
  25. var EXPRESSIONS = [
  26. {
  27. // verbatim string
  28. className: 'string',
  29. begin: '"""',
  30. end: '"""',
  31. relevance: 10
  32. },
  33. {
  34. // string literal or template
  35. className: 'string',
  36. begin: '"', end: '"',
  37. contains: [SUBST]
  38. },
  39. {
  40. // character literal
  41. className: 'string',
  42. begin: "'",
  43. end: "'"
  44. },
  45. {
  46. // numeric literal
  47. className: 'number',
  48. begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?',
  49. relevance: 0
  50. }
  51. ];
  52. SUBST.contains = EXPRESSIONS;
  53. return {
  54. keywords: {
  55. keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,
  56. meta: DOCUMENTATION
  57. },
  58. illegal: '\\$[^01]|#[^0-9a-fA-F]',
  59. contains: [
  60. hljs.C_LINE_COMMENT_MODE,
  61. hljs.COMMENT('/\\*', '\\*/', {contains: ['self']}),
  62. {
  63. // compiler annotation
  64. className: 'meta',
  65. begin: '@[a-z]\\w*(?:\\:\"[^\"]*\")?'
  66. }
  67. ].concat(EXPRESSIONS)
  68. };
  69. }