1<lexer>
2 <config>
3 <name>Makefile</name>
4 <alias>make</alias>
5 <alias>makefile</alias>
6 <alias>mf</alias>
7 <alias>bsdmake</alias>
8 <filename>*.mak</filename>
9 <filename>*.mk</filename>
10 <filename>Makefile</filename>
11 <filename>makefile</filename>
12 <filename>Makefile.*</filename>
13 <filename>GNUmakefile</filename>
14 <filename>BSDmakefile</filename>
15 <filename>Justfile</filename>
16 <filename>justfile</filename>
17 <filename>.justfile</filename>
18 <mime_type>text/x-makefile</mime_type>
19 <ensure_nl>true</ensure_nl>
20 </config>
21 <rules>
22 <state name="root">
23 <rule pattern="^(?:[\t ]+.*\n|\n)+">
24 <using lexer="Bash"/>
25 </rule>
26 <rule pattern="\$[<@$+%?|*]">
27 <token type="Keyword"/>
28 </rule>
29 <rule pattern="\s+">
30 <token type="Text"/>
31 </rule>
32 <rule pattern="#.*?\n">
33 <token type="Comment"/>
34 </rule>
35 <rule pattern="(export)(\s+)(?=[\w${}\t -]+\n)">
36 <bygroups>
37 <token type="Keyword"/>
38 <token type="Text"/>
39 </bygroups>
40 <push state="export"/>
41 </rule>
42 <rule pattern="export\s+">
43 <token type="Keyword"/>
44 </rule>
45 <rule pattern="([\w${}().-]+)(\s*)([!?:+]?=)([ \t]*)((?:.*\\\n)+|.*\n)">
46 <bygroups>
47 <token type="NameVariable"/>
48 <token type="Text"/>
49 <token type="Operator"/>
50 <token type="Text"/>
51 <using lexer="Bash"/>
52 </bygroups>
53 </rule>
54 <rule pattern="(?s)"(\\\\|\\.|[^"\\])*"">
55 <token type="LiteralStringDouble"/>
56 </rule>
57 <rule pattern="(?s)'(\\\\|\\.|[^'\\])*'">
58 <token type="LiteralStringSingle"/>
59 </rule>
60 <rule pattern="([^\n:]+)(:+)([ \t]*)">
61 <bygroups>
62 <token type="NameFunction"/>
63 <token type="Operator"/>
64 <token type="Text"/>
65 </bygroups>
66 <push state="block-header"/>
67 </rule>
68 <rule pattern="\$\(">
69 <token type="Keyword"/>
70 <push state="expansion"/>
71 </rule>
72 </state>
73 <state name="expansion">
74 <rule pattern="[^$a-zA-Z_()]+">
75 <token type="Text"/>
76 </rule>
77 <rule pattern="[a-zA-Z_]+">
78 <token type="NameVariable"/>
79 </rule>
80 <rule pattern="\$">
81 <token type="Keyword"/>
82 </rule>
83 <rule pattern="\(">
84 <token type="Keyword"/>
85 <push/>
86 </rule>
87 <rule pattern="\)">
88 <token type="Keyword"/>
89 <pop depth="1"/>
90 </rule>
91 </state>
92 <state name="export">
93 <rule pattern="[\w${}-]+">
94 <token type="NameVariable"/>
95 </rule>
96 <rule pattern="\n">
97 <token type="Text"/>
98 <pop depth="1"/>
99 </rule>
100 <rule pattern="\s+">
101 <token type="Text"/>
102 </rule>
103 </state>
104 <state name="block-header">
105 <rule pattern="[,|]">
106 <token type="Punctuation"/>
107 </rule>
108 <rule pattern="#.*?\n">
109 <token type="Comment"/>
110 <pop depth="1"/>
111 </rule>
112 <rule pattern="\\\n">
113 <token type="Text"/>
114 </rule>
115 <rule pattern="\$\(">
116 <token type="Keyword"/>
117 <push state="expansion"/>
118 </rule>
119 <rule pattern="[a-zA-Z_]+">
120 <token type="Name"/>
121 </rule>
122 <rule pattern="\n">
123 <token type="Text"/>
124 <pop depth="1"/>
125 </rule>
126 <rule pattern=".">
127 <token type="Text"/>
128 </rule>
129 </state>
130 </rules>
131</lexer>