51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
module.exports = function(hljs) {
|
|
var STEP21_IDENT_RE = '[A-Z_][A-Z0-9_.]*';
|
|
var STEP21_CLOSE_RE = 'END-ISO-10303-21;';
|
|
var STEP21_KEYWORDS = {
|
|
literal: '',
|
|
built_in: '',
|
|
keyword:
|
|
'HEADER ENDSEC DATA'
|
|
};
|
|
var STEP21_START = {
|
|
className: 'preprocessor',
|
|
begin: 'ISO-10303-21;',
|
|
relevance: 10
|
|
};
|
|
var STEP21_CODE = [
|
|
hljs.C_LINE_COMMENT_MODE,
|
|
hljs.C_BLOCK_COMMENT_MODE,
|
|
hljs.COMMENT('/\\*\\*!', '\\*/'),
|
|
hljs.C_NUMBER_MODE,
|
|
hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null}),
|
|
hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null}),
|
|
{
|
|
className: 'string',
|
|
begin: "'", end: "'"
|
|
},
|
|
{
|
|
className: 'label',
|
|
variants: [
|
|
{
|
|
begin: '#', end: '\\d+',
|
|
illegal: '\\W'
|
|
}
|
|
]
|
|
}
|
|
];
|
|
|
|
return {
|
|
aliases: ['p21', 'step', 'stp'],
|
|
case_insensitive: true, // STEP 21 is case insensitive in theory, in practice all non-comments are capitalized.
|
|
lexemes: STEP21_IDENT_RE,
|
|
keywords: STEP21_KEYWORDS,
|
|
contains: [
|
|
{
|
|
className: 'preprocessor',
|
|
begin: STEP21_CLOSE_RE,
|
|
relevance: 10
|
|
},
|
|
STEP21_START
|
|
].concat(STEP21_CODE)
|
|
};
|
|
}; |