12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- Language: Ceylon
- Author: Lucas Werkmeister <mail@lucaswerkmeister.de>
- Website: https://ceylon-lang.org
- */
- /** @type LanguageFn */
- function ceylon(hljs) {
- // 2.3. Identifiers and keywords
- const KEYWORDS =
- 'assembly module package import alias class interface object given value ' +
- 'assign void function new of extends satisfies abstracts in out return ' +
- 'break continue throw assert dynamic if else switch case for while try ' +
- 'catch finally then let this outer super is exists nonempty';
- // 7.4.1 Declaration Modifiers
- const DECLARATION_MODIFIERS =
- 'shared abstract formal default actual variable late native deprecated ' +
- 'final sealed annotation suppressWarnings small';
- // 7.4.2 Documentation
- const DOCUMENTATION =
- 'doc by license see throws tagged';
- const SUBST = {
- className: 'subst',
- excludeBegin: true,
- excludeEnd: true,
- begin: /``/,
- end: /``/,
- keywords: KEYWORDS,
- relevance: 10
- };
- const EXPRESSIONS = [
- {
- // verbatim string
- className: 'string',
- begin: '"""',
- end: '"""',
- relevance: 10
- },
- {
- // string literal or template
- className: 'string',
- begin: '"',
- end: '"',
- contains: [SUBST]
- },
- {
- // character literal
- className: 'string',
- begin: "'",
- end: "'"
- },
- {
- // numeric literal
- className: 'number',
- begin: '#[0-9a-fA-F_]+|\\$[01_]+|[0-9_]+(?:\\.[0-9_](?:[eE][+-]?\\d+)?)?[kMGTPmunpf]?',
- relevance: 0
- }
- ];
- SUBST.contains = EXPRESSIONS;
- return {
- name: 'Ceylon',
- keywords: {
- keyword: KEYWORDS + ' ' + DECLARATION_MODIFIERS,
- meta: DOCUMENTATION
- },
- illegal: '\\$[^01]|#[^0-9a-fA-F]',
- contains: [
- hljs.C_LINE_COMMENT_MODE,
- hljs.COMMENT('/\\*', '\\*/', {
- contains: ['self']
- }),
- {
- // compiler annotation
- className: 'meta',
- begin: '@[a-z]\\w*(?::"[^"]*")?'
- }
- ].concat(EXPRESSIONS)
- };
- }
- module.exports = ceylon;
|