1<lexer>
 2  <config>
 3    <name>Docker</name>
 4    <alias>docker</alias>
 5    <alias>dockerfile</alias>
 6    <alias>containerfile</alias>
 7    <filename>Dockerfile</filename>
 8    <filename>Dockerfile.*</filename>
 9    <filename>*.Dockerfile</filename>
10    <filename>*.docker</filename>
11    <filename>Containerfile</filename>
12    <filename>Containerfile.*</filename>
13    <filename>*.Containerfile</filename>
14    <mime_type>text/x-dockerfile-config</mime_type>
15    <case_insensitive>true</case_insensitive>
16  </config>
17  <rules>
18    <state name="root">
19      <rule pattern="#.*">
20        <token type="Comment" />
21      </rule>
22      <rule pattern="(ONBUILD)((?:\s*\\?\s*))">
23        <bygroups>
24          <token type="Keyword" />
25          <using lexer="Bash" />
26        </bygroups>
27      </rule>
28      <rule pattern="(HEALTHCHECK)((?:(?:\s*\\?\s*)--\w+=\w+(?:\s*\\?\s*))*)">
29        <bygroups>
30          <token type="Keyword" />
31          <using lexer="Bash" />
32        </bygroups>
33      </rule>
34      <rule pattern="(VOLUME|ENTRYPOINT|CMD|SHELL)((?:\s*\\?\s*))(\[.*?\])">
35        <bygroups>
36          <token type="Keyword" />
37          <using lexer="Bash" />
38          <using lexer="JSON" />
39        </bygroups>
40      </rule>
41      <rule pattern="(LABEL|ENV|ARG)((?:(?:\s*\\?\s*)\w+=\w+(?:\s*\\?\s*))*)">
42        <bygroups>
43          <token type="Keyword" />
44          <using lexer="Bash" />
45        </bygroups>
46      </rule>
47      <rule
48        pattern="((?:FROM|MAINTAINER|EXPOSE|WORKDIR|USER|STOPSIGNAL)|VOLUME)\b(\s)([\S]*)\b(?:(\s)(AS)\b(\s)([\S]*))?\b"
49      >
50        <bygroups>
51          <token type="Keyword" />
52          <token type="TextWhitespace" />
53          <token type="LiteralString" />
54          <token type="TextWhitespace" />
55          <token type="Keyword" />
56          <token type="TextWhitespace" />
57          <token type="LiteralString" />
58        </bygroups>
59      </rule>
60      <rule pattern="((?:RUN|CMD|ENTRYPOINT|ENV|ARG|LABEL|ADD|COPY))">
61        <token type="Keyword" />
62      </rule>
63      <rule pattern="(.*\\\n)*.+">
64        <using lexer="Bash" />
65      </rule>
66    </state>
67  </rules>
68</lexer>