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>