/* | |
Language: Brainfuck | |
Author: Evgeny Stepanischev <[email protected]> | |
Website: https://esolangs.org/wiki/Brainfuck | |
*/ | |
/** @type LanguageFn */ | |
function brainfuck(hljs) { | |
const LITERAL = { | |
className: 'literal', | |
begin: /[+-]+/, | |
relevance: 0 | |
}; | |
return { | |
name: 'Brainfuck', | |
aliases: [ 'bf' ], | |
contains: [ | |
hljs.COMMENT( | |
/[^\[\]\.,\+\-<> \r\n]/, | |
/[\[\]\.,\+\-<> \r\n]/, | |
{ | |
contains: [ | |
{ | |
match: /[ ]+[^\[\]\.,\+\-<> \r\n]/, | |
relevance: 0 | |
} | |
], | |
returnEnd: true, | |
relevance: 0 | |
} | |
), | |
{ | |
className: 'title', | |
begin: '[\\[\\]]', | |
relevance: 0 | |
}, | |
{ | |
className: 'string', | |
begin: '[\\.,]', | |
relevance: 0 | |
}, | |
{ | |
// this mode works as the only relevance counter | |
// it looks ahead to find the start of a run of literals | |
// so only the runs are counted as relevant | |
begin: /(?=\+\+|--)/, | |
contains: [ LITERAL ] | |
}, | |
LITERAL | |
] | |
}; | |
} | |
export { brainfuck as default }; | |