]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/brainfuck.js
Initial commit.
[flow-web.git] / static / highlight / languages / brainfuck.js
1 /*! `brainfuck` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Brainfuck
8 Author: Evgeny Stepanischev <imbolk@gmail.com>
9 Website: https://esolangs.org/wiki/Brainfuck
10 */
11
12 /** @type LanguageFn */
13 function brainfuck(hljs) {
14 const LITERAL = {
15 className: 'literal',
16 begin: /[+-]+/,
17 relevance: 0
18 };
19 return {
20 name: 'Brainfuck',
21 aliases: [ 'bf' ],
22 contains: [
23 hljs.COMMENT(
24 /[^\[\]\.,\+\-<> \r\n]/,
25 /[\[\]\.,\+\-<> \r\n]/,
26 {
27 contains: [
28 {
29 match: /[ ]+[^\[\]\.,\+\-<> \r\n]/,
30 relevance: 0
31 }
32 ],
33 returnEnd: true,
34 relevance: 0
35 }
36 ),
37 {
38 className: 'title',
39 begin: '[\\[\\]]',
40 relevance: 0
41 },
42 {
43 className: 'string',
44 begin: '[\\.,]',
45 relevance: 0
46 },
47 {
48 // this mode works as the only relevance counter
49 // it looks ahead to find the start of a run of literals
50 // so only the runs are counted as relevant
51 begin: /(?=\+\+|--)/,
52 contains: [ LITERAL ]
53 },
54 LITERAL
55 ]
56 };
57 }
58
59 return brainfuck;
60
61 })();
62
63 hljs.registerLanguage('brainfuck', hljsGrammar);
64 })();