123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /*
- Language: Ceylon
- Author: Lucas Werkmeister <mail@lucaswerkmeister.de>
- Website: https://ceylon-lang.org
- Category: system
- */
- /** @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.concat(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)
- };
- }
- export { ceylon as default };
|