Skip to content

Commit 8d38e23

Browse files
committed
(chore) simplify brainfuck grammar
1 parent 4577894 commit 8d38e23

File tree

2 files changed

+25
-17
lines changed

2 files changed

+25
-17
lines changed

src/languages/brainfuck.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,23 @@ Website: https://esolangs.org/wiki/Brainfuck
88
export default function(hljs) {
99
const LITERAL = {
1010
className: 'literal',
11-
begin: /[+-]/,
11+
begin: /[+-]+/,
1212
relevance: 0
1313
};
1414
return {
1515
name: 'Brainfuck',
1616
aliases: ['bf'],
1717
contains: [
1818
hljs.COMMENT(
19-
'[^\\[\\]\\.,\\+\\-<> \r\n]',
20-
'[\\[\\]\\.,\\+\\-<> \r\n]',
19+
/[^\[\]\.,\+\-<> \r\n]/,
20+
/[\[\]\.,\+\-<> \r\n]/,
2121
{
22+
contains: [
23+
{
24+
match: /[ ]+[^\[\]\.,\+\-<> \r\n]/,
25+
relevance: 0
26+
}
27+
],
2228
returnEnd: true,
2329
relevance: 0
2430
}
@@ -35,8 +41,10 @@ export default function(hljs) {
3541
},
3642
{
3743
// this mode works as the only relevance counter
44+
// it looks ahead to find the start of a run of literals
45+
// so only the runs are counted as relevant
3846
begin: /(?=\+\+|--)/,
39-
contains: [LITERAL]
47+
contains: [ LITERAL ]
4048
},
4149
LITERAL
4250
]
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>
2-
<span class="hljs-title">[</span> <span class="hljs-comment">3*10</span> <span class="hljs-comment">and</span> <span class="hljs-comment">10*10</span>
3-
<span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&lt;&lt;
1+
<span class="hljs-literal">++++++++++</span>
2+
<span class="hljs-title">[</span> <span class="hljs-comment">3*10 and 10*10</span>
3+
<span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+++</span>&gt;<span class="hljs-literal">++++++++++</span>&lt;&lt;
44
<span class="hljs-title">]</span>&gt;&gt;
5-
<span class="hljs-title">[</span> <span class="hljs-comment">filling</span> <span class="hljs-comment">cells</span>
6-
<span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-title">[</span>&lt;<span class="hljs-comment">/</span><span class="hljs-title">]</span>&lt;<span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&lt;<span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&gt;&gt;
5+
<span class="hljs-title">[</span> <span class="hljs-comment">filling cells</span>
6+
<span class="hljs-literal">-</span>&gt;<span class="hljs-literal">++</span>&gt;&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">++</span>&gt;&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">++</span><span class="hljs-title">[</span>&lt;<span class="hljs-comment">/</span><span class="hljs-title">]</span>&lt;<span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&lt;<span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&gt;&gt;
77
<span class="hljs-title">]</span>&lt;
8-
<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&lt;&lt;
9-
<span class="hljs-title">[</span> <span class="hljs-comment">rough</span> <span class="hljs-comment">codes</span> <span class="hljs-comment">correction</span> <span class="hljs-comment">loop</span>
10-
<span class="hljs-literal">-</span>&gt;&gt;&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&lt;
8+
<span class="hljs-literal">+++++++++</span>&lt;&lt;
9+
<span class="hljs-title">[</span> <span class="hljs-comment">rough codes correction loop</span>
10+
<span class="hljs-literal">-</span>&gt;&gt;&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+++</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&lt;
1111
<span class="hljs-title">]</span>
12-
<span class="hljs-comment">more</span> <span class="hljs-comment">accurate</span> <span class="hljs-comment">сodes</span> <span class="hljs-comment">correction</span>
13-
&gt;&gt;&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;
14-
<span class="hljs-literal">-</span><span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;
15-
<span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>&gt;<span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-literal">-</span>&gt;<span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span>
16-
<span class="hljs-comment">rewind</span> <span class="hljs-comment">and</span> <span class="hljs-comment">output</span>
12+
<span class="hljs-comment">more accurate сodes correction</span>
13+
&gt;&gt;&gt;<span class="hljs-literal">++</span>&gt;
14+
<span class="hljs-literal">--</span>&gt;<span class="hljs-literal">+++++++</span>&gt;<span class="hljs-literal">------</span>&gt;<span class="hljs-literal">++++++</span>&gt;<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">+++++++++</span>&gt;<span class="hljs-literal">++++++++++</span>&gt;<span class="hljs-literal">++++++++</span>&gt;<span class="hljs-literal">---</span>&gt;<span class="hljs-literal">++++++++++</span>&gt;<span class="hljs-literal">------</span>&gt;<span class="hljs-literal">++++++</span>&gt;
15+
<span class="hljs-literal">++</span>&gt;<span class="hljs-literal">+++++++++++</span>&gt;<span class="hljs-literal">++++++++++++</span>&gt;<span class="hljs-literal">------</span>&gt;<span class="hljs-literal">+++</span>
16+
<span class="hljs-comment">rewind and output</span>
1717
<span class="hljs-title">[</span>&lt;<span class="hljs-title">]</span>&gt;<span class="hljs-title">[</span><span class="hljs-string">.</span>&gt;<span class="hljs-title">]</span>

0 commit comments

Comments
 (0)