1<lexer>
 2  <config>
 3    <name>Brainfuck</name>
 4    <alias>brainfuck</alias>
 5    <alias>bf</alias>
 6    <filename>*.bf</filename>
 7    <filename>*.b</filename>
 8    <mime_type>application/x-brainfuck</mime_type>
 9  </config>
10  <rules>
11    <state name="common">
12      <rule pattern="[.,]+">
13        <token type="NameTag"/>
14      </rule>
15      <rule pattern="[+-]+">
16        <token type="NameBuiltin"/>
17      </rule>
18      <rule pattern="[<>]+">
19        <token type="NameVariable"/>
20      </rule>
21      <rule pattern="[^.,+\-<>\[\]]+">
22        <token type="Comment"/>
23      </rule>
24    </state>
25    <state name="root">
26      <rule pattern="\[">
27        <token type="Keyword"/>
28        <push state="loop"/>
29      </rule>
30      <rule pattern="\]">
31        <token type="Error"/>
32      </rule>
33      <rule>
34        <include state="common"/>
35      </rule>
36    </state>
37    <state name="loop">
38      <rule pattern="\[">
39        <token type="Keyword"/>
40        <push/>
41      </rule>
42      <rule pattern="\]">
43        <token type="Keyword"/>
44        <pop depth="1"/>
45      </rule>
46      <rule>
47        <include state="common"/>
48      </rule>
49    </state>
50  </rules>
51</lexer>