123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- Language: Brainfuck
- Author: Evgeny Stepanischev <imbolk@gmail.com>
- 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 };
|