You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.1 KiB
101 lines
3.1 KiB
/* |
|
Language: Oxygene |
|
Author: Carlo Kok <ck@remobjects.com> |
|
Description: Oxygene is built on the foundation of Object Pascal, revamped and extended to be a modern language for the twenty-first century. |
|
Website: https://www.elementscompiler.com/elements/default.aspx |
|
*/ |
|
|
|
function oxygene(hljs) { |
|
const OXYGENE_KEYWORDS = { |
|
$pattern: /\.?\w+/, |
|
keyword: |
|
'abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue ' + |
|
'create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false ' + |
|
'final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited ' + |
|
'inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of ' + |
|
'old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly ' + |
|
'record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple ' + |
|
'type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal ' + |
|
'register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained' |
|
}; |
|
const CURLY_COMMENT = hljs.COMMENT( |
|
/\{/, |
|
/\}/, |
|
{ |
|
relevance: 0 |
|
} |
|
); |
|
const PAREN_COMMENT = hljs.COMMENT( |
|
'\\(\\*', |
|
'\\*\\)', |
|
{ |
|
relevance: 10 |
|
} |
|
); |
|
const STRING = { |
|
className: 'string', |
|
begin: '\'', |
|
end: '\'', |
|
contains: [ |
|
{ |
|
begin: '\'\'' |
|
} |
|
] |
|
}; |
|
const CHAR_STRING = { |
|
className: 'string', |
|
begin: '(#\\d+)+' |
|
}; |
|
const FUNCTION = { |
|
className: 'function', |
|
beginKeywords: 'function constructor destructor procedure method', |
|
end: '[:;]', |
|
keywords: 'function constructor|10 destructor|10 procedure|10 method|10', |
|
contains: [ |
|
hljs.TITLE_MODE, |
|
{ |
|
className: 'params', |
|
begin: '\\(', |
|
end: '\\)', |
|
keywords: OXYGENE_KEYWORDS, |
|
contains: [ |
|
STRING, |
|
CHAR_STRING |
|
] |
|
}, |
|
CURLY_COMMENT, |
|
PAREN_COMMENT |
|
] |
|
}; |
|
return { |
|
name: 'Oxygene', |
|
case_insensitive: true, |
|
keywords: OXYGENE_KEYWORDS, |
|
illegal: '("|\\$[G-Zg-z]|\\/\\*|</|=>|->)', |
|
contains: [ |
|
CURLY_COMMENT, |
|
PAREN_COMMENT, |
|
hljs.C_LINE_COMMENT_MODE, |
|
STRING, |
|
CHAR_STRING, |
|
hljs.NUMBER_MODE, |
|
FUNCTION, |
|
{ |
|
className: 'class', |
|
begin: '=\\bclass\\b', |
|
end: 'end;', |
|
keywords: OXYGENE_KEYWORDS, |
|
contains: [ |
|
STRING, |
|
CHAR_STRING, |
|
CURLY_COMMENT, |
|
PAREN_COMMENT, |
|
hljs.C_LINE_COMMENT_MODE, |
|
FUNCTION |
|
] |
|
} |
|
] |
|
}; |
|
} |
|
|
|
module.exports = oxygene;
|
|
|