1<lexer>
2 <config>
3 <name>Nginx configuration file</name>
4 <alias>nginx</alias>
5 <filename>nginx.conf</filename>
6 <mime_type>text/x-nginx-conf</mime_type>
7 </config>
8 <rules>
9 <state name="root">
10 <rule pattern="(include)(\s+)([^\s;]+)">
11 <bygroups>
12 <token type="Keyword"/>
13 <token type="Text"/>
14 <token type="Name"/>
15 </bygroups>
16 </rule>
17 <rule pattern="[^\s;#]+">
18 <token type="Keyword"/>
19 <push state="stmt"/>
20 </rule>
21 <rule>
22 <include state="base"/>
23 </rule>
24 </state>
25 <state name="block">
26 <rule pattern="\}">
27 <token type="Punctuation"/>
28 <pop depth="2"/>
29 </rule>
30 <rule pattern="[^\s;#]+">
31 <token type="KeywordNamespace"/>
32 <push state="stmt"/>
33 </rule>
34 <rule>
35 <include state="base"/>
36 </rule>
37 </state>
38 <state name="stmt">
39 <rule pattern="\{">
40 <token type="Punctuation"/>
41 <push state="block"/>
42 </rule>
43 <rule pattern=";">
44 <token type="Punctuation"/>
45 <pop depth="1"/>
46 </rule>
47 <rule>
48 <include state="base"/>
49 </rule>
50 </state>
51 <state name="base">
52 <rule pattern="#.*\n">
53 <token type="CommentSingle"/>
54 </rule>
55 <rule pattern="on|off">
56 <token type="NameConstant"/>
57 </rule>
58 <rule pattern="\$[^\s;#()]+">
59 <token type="NameVariable"/>
60 </rule>
61 <rule pattern="(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b)">
62 <token type="Name"/>
63 </rule>
64 <rule pattern="([a-z0-9.-]+)(:)([0-9]+)">
65 <bygroups>
66 <token type="Name"/>
67 <token type="Punctuation"/>
68 <token type="LiteralNumberInteger"/>
69 </bygroups>
70 </rule>
71 <rule pattern="[a-z-]+/[a-z-+]+">
72 <token type="LiteralString"/>
73 </rule>
74 <rule pattern="[0-9]+[km]?\b">
75 <token type="LiteralNumberInteger"/>
76 </rule>
77 <rule pattern="(~)(\s*)([^\s{]+)">
78 <bygroups>
79 <token type="Punctuation"/>
80 <token type="Text"/>
81 <token type="LiteralStringRegex"/>
82 </bygroups>
83 </rule>
84 <rule pattern="[:=~]">
85 <token type="Punctuation"/>
86 </rule>
87 <rule pattern="[^\s;#{}$]+">
88 <token type="LiteralString"/>
89 </rule>
90 <rule pattern="/[^\s;#]*">
91 <token type="Name"/>
92 </rule>
93 <rule pattern="\s+">
94 <token type="Text"/>
95 </rule>
96 <rule pattern="[$;]">
97 <token type="Text"/>
98 </rule>
99 </state>
100 </rules>
101</lexer>