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